Переглянути джерело

improved delete firewall rule #39

Roberto Berto 5 роки тому
батько
коміт
f0a8c1b982

+ 2 - 2
vycenter/firewall/templates/firewall/show.html

@@ -14,13 +14,13 @@
 
 {% if firewall.rule %}
     <table border="1" width="100%">
-    <tr><th>rule #</th><th>description</th><th>protocol</th><th>destination port</th><th>source port</th><th>action</th></tr>
+    <tr><th>rule #</th><th>description</th><th>protocol</th><th>destination port</th><th>source port</th><th>firewall action</th></tr>
 
     {% for key, value in firewall.items %}
         
         {% for ifkey, ifvalue in value.items %}
             <tr>
-            <td><a href="{% url 'firewall:editrule' firewall_name ifkey %}">{{ ifkey }}</a></td>
+            <td><a href="{% url 'firewall:editrule' firewall_name ifkey %}">{{ ifkey }}</a> <a href="{% url 'firewall:firewall-removerule' firewall_name ifkey %}">remove rule</a></td>
             <td>{{ ifvalue.description }}</td>
             <td>{{ ifvalue.protocol }}</td>
             <td>{{ ifvalue.destination.port }}</td>

+ 1 - 1
vycenter/firewall/urls.py

@@ -13,7 +13,7 @@ urlpatterns = [
     path('firewall-remove/<str:firewall_name>', views.firewall_remove, name='firewall-remove'),
     path('addrule/<str:firewall_name>', views.addrule, name='addrule'),
     path('editrule/<str:firewall_name>/<str:firewall_rulenumber>', views.editrule, name='editrule'),
-    
+    path('firewall-removerule/<str:firewall_name>/<str:firewall_rulenumber>', views.firewall_removerule, name='firewall-removerule'),    
 
 ]
 

+ 18 - 0
vycenter/firewall/views.py

@@ -129,6 +129,24 @@ def addrule(request, firewall_name):
 
 
 
+
+def firewall_removerule(request, firewall_name, firewall_rulenumber):
+    all_instances = vyos.instance_getall()
+    hostname_default = vyos.get_hostname_prefered(request)
+
+    firewall = vyos.get_firewall(hostname_default, firewall_name)
+    firewall_rule = vyos.get_firewall_rule(hostname_default, firewall_name, firewall_rulenumber)
+
+    if firewall_rule and firewall:
+        vyos.delete_route_rule(hostname_default, firewall_name, firewall_rulenumber)
+
+    return redirect('firewall:show', firewall_name)
+
+
+
+
+
+
 def editrule(request, firewall_name, firewall_rulenumber):
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()

+ 7 - 0
vycenter/vyos.py

@@ -209,6 +209,13 @@ def delete_route_static(hostname, subnet, nexthop):
     result1 = api_set(hostname, cmd)
     return result1  
 
+def delete_route_rule(hostname, firewall_name, rule_name):
+    cmd = {"op": "delete", "path": ["firewall", "name", firewall_name, "rule", rule_name]}
+
+    result1 = api_set(hostname, cmd)
+    return result1  
+
+
 def delete_firewall(hostname, name):
     cmd = {"op": "delete", "path": ["firewall","name", name]}