From 7d62c8e04ea0cf72da40bdf35f5b31d33e70554e Mon Sep 17 00:00:00 2001
From: David Schmitz <schmitz@lrz.de>
Date: Thu, 2 Nov 2023 12:13:40 +0000
Subject: [PATCH] fix/reenable_expireset_via_restapi: reenable possibility to
 set expire date when creating a rule via REST API; if unset pseudo-infinity
 (+100 years) will still be used as a default

---
 flowspec/viewsets.py | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/flowspec/viewsets.py b/flowspec/viewsets.py
index 870e4e75..d20032a7 100644
--- a/flowspec/viewsets.py
+++ b/flowspec/viewsets.py
@@ -98,15 +98,20 @@ class RouteViewSet(viewsets.ModelViewSet):
                     obj = super(RouteViewSet, self).create(request)
                     requested_status = request.data.get("status", "INACTIVE")
                     logger.debug("RouteViewSet::create(): requested_status="+str(requested_status))
-                    logger.info("RouteViewSet::create(): obj.type="+str(type(obj)))
-                    logger.info("RouteViewSet::create(): obj="+str(obj))
-                    logger.info("RouteViewSet::create(): obj.dir="+str(dir(obj)))
-                    logger.info("RouteViewSet::create(): obj.items="+str(obj.items))
+                    #logger.info("RouteViewSet::create(): obj.type="+str(type(obj)))
+                    #logger.info("RouteViewSet::create(): obj="+str(obj))
+                    #logger.info("RouteViewSet::create(): obj.dir="+str(dir(obj)))
+                    #logger.info("RouteViewSet::create(): obj.items="+str(obj.items))
                     logger.info("RouteViewSet::create(): obj.data="+str(obj.data))
-                    logger.info("RouteViewSet::create(): obj.data.id="+str(obj.data["id"]))
+                    #logger.info("RouteViewSet::create(): obj.data.id="+str(obj.data["id"]))
                     route = get_object_or_404(self.get_queryset(), pk=obj.data["id"])
                     route.response = "N/A"
-                    route.set_no_expire() # REST API created routes should have no expiration date
+
+                    #logger.info("RouteViewSet::create(): obj.data="+str(obj.data))
+                    #logger.info("RouteViewSet::create(): route.expires="+str(route.expires))
+                    if (not ('expires' in obj.data)) or obj.data['expires']=='':
+                      route.set_no_expire() # REST API created routes without expires value should have no expiration date by default
+                    obj.data['expires'] = route.expires
 
                     net_route_source=ip_network(route.source, strict=False)
                     net_route_destination=ip_network(route.destination, strict=False)
-- 
GitLab