Pārlūkot izejas kodu

done set firewall name <name> rule <1-9999> state [established | invalid | new | related] #58

Roberto Berto 5 gadi atpakaļ
vecāks
revīzija
dee971f211

+ 4 - 4
vycontrol/firewall/templates/firewall/addrule.html

@@ -427,10 +427,10 @@
         <div class="row">
             <div class="col">
                 <p>
-                    <input type="checkbox" name="state" id="state_established" value="established"> established
-                    <input type="checkbox" name="state" id="state_invalid" value="invalid"> invalid
-                    <input type="checkbox" name="state" id="state_new" value="new"> new
-                    <input type="checkbox" name="state" id="state_releated" value="releated"> releated        
+                    <input type="checkbox" name="packetstate_established" id="state_established" value="1"> established
+                    <input type="checkbox" name="packetstate_invalid" id="state_invalid" value="1"> invalid
+                    <input type="checkbox" name="packetstate_new" id="state_new" value="1"> new
+                    <input type="checkbox" name="packetstate_related" id="state_related" value="1"> releated        
                 </p>
             </div>
 

+ 35 - 3
vycontrol/firewall/views.py

@@ -4,6 +4,8 @@ from django.template import loader
 from django.shortcuts import redirect
 from django.conf import settings
 from django.urls import reverse
+from django.http import QueryDict
+
 
 import vyos, vyos2
 from performance import timer
@@ -98,7 +100,7 @@ def create(request):
 
 @is_authenticated
 def addrule(request, firewall_name):
-        
+
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
@@ -341,7 +343,7 @@ def addrule(request, firewall_name):
                     if v.success:
                         changed = True                  
 
-            # if criteria_networkgroup set, save it
+            # if criteria_sourcemac set, save it
             if request.POST.get('criteria_sourcemac', None) == "1":
                 # negate sdaddress_source
                 if request.POST.get('smac_source_negate', None) == "1":
@@ -366,6 +368,37 @@ def addrule(request, firewall_name):
                     if v.success:
                         changed = True 
 
+            # if criteria_packetstate set, save it
+            if request.POST.get('criteria_packetstate', None) == "1":
+                packetstates = []
+                if request.POST.get('packetstate_established', None) == "1":
+                    packetstates.append('established')
+                if request.POST.get('packetstate_invalid', None) == "1":
+                    packetstates.append('invalid')
+                if request.POST.get('packetstate_new', None) == "1":
+                    packetstates.append('new')
+                if request.POST.get('packetstate_related', None) == "1":
+                    packetstates.append('related')
+
+                if len(packetstates) > 0:
+                    for packetstate in packetstates:
+                        v = vyos2.api (
+                            hostname=   hostname_default,
+                            api =       "post",
+                            op =        "set",
+                            cmd =       ["firewall", "name", firewall_name, "rule", request.POST.get('rulenumber'), "state", packetstate, "enable"],
+                            description = "set criteria_packetstate",
+                        )
+                        if v.success:
+                            changed = True
+                     
+                # if criteria_portgroup set, save it
+                if request.POST.get('criteria_portgroup', None) == "1":
+                    pass
+
+                # if criteria_tcpflags set, save it
+                if request.POST.get('criteria_tcpflags', None) == "1":
+                    pass
 
     if changed == True:
         return redirect('firewall:show', firewall_name)
@@ -858,7 +891,6 @@ def firewall_addressgroup_desc(request, groupname):
     else:
         return redirect('firewall:firewall-addressgroup-list')    
 
-
 @is_authenticated
 def firewall_networkgroup_desc(request, groupname):
     hostname_default = vyos.get_hostname_prefered(request)