Bläddra i källkod

basic firewall create

Roberto Berto 5 år sedan
förälder
incheckning
2e1cb07b3d
3 ändrade filer med 65 tillägg och 6 borttagningar
  1. 1 0
      README.md
  2. 40 6
      vycenter/firewall/templates/firewall/list.html
  3. 24 0
      vycenter/firewall/views.py

+ 1 - 0
README.md

@@ -17,6 +17,7 @@ in alpha stage we're going to provide just essential device config, interfaces a
 * basic list firewall rules - done
 * basic add firewall rules - done
 * basic edit firewall rules - done
+* basic firewall create - done
 * change firewall rules order - todo
 * delete firewall rules - todo
 

+ 40 - 6
vycenter/firewall/templates/firewall/list.html

@@ -13,16 +13,19 @@
 
 {% if firewall_all %}
     <table border="1" width="100%">
-    <tr><th>name</th><th>description</th><th>action</th></tr>
+    <tr><th>name</th><th>description</th><th>default-action</th></th><th>actions</th></tr>
 
     {% for key, value in firewall_all.items %}
-        <tr>
+        
         {% for ifkey, ifvalue in value.items %}
-            <td><a href="{% url 'firewall:show' ifkey %}">{{ ifkey }}</a></td>
-            <td>{{ ifvalue.description }}</td>
-            <td>delete</td>
+            <tr>
+                <td><a href="{% url 'firewall:show' ifkey %}">{{ ifkey }}</a></td>
+                <td>{{ ifvalue.description }}</td>
+                <td>{{ ifvalue.default_action }}</td>
+                <td>delete</td>
+            </tr>
         {% endfor %}
-        </tr>
+        
     {% endfor %}
 
     </table>
@@ -30,6 +33,37 @@
     <p>No firewalls.</p>
 {% endif %}
 
+
+<h2>Create new rule</h2>
+
+<form action="{% url 'firewall:firewall-list' %}" method="post">
+    {% csrf_token %}
+    
+    <p>
+        <label for="alias">name</label><br>
+        <input type="text" name="name" id="name" value="{{ name }}" size="30">
+    </p>
+
+    <p>
+        <label for="alias">description</label><br>
+        <input type="text" name="description" id="description" value="{{ description }}" size="60">
+    </p>    
+    
+    <p>
+        <label for="hostname">default action</label><br>
+        <input type="radio" name="action" id="action" value="accept"> accept
+        <input type="radio" name="action" id="action" value="drop"> drop
+        <input type="radio" name="action" id="action" value="reject"> reject        
+    </p>
+
+    
+    
+    <input type="submit" value="Add Firewall">
+    </form>
+
+    
+
+
 {% endblock %}
 
 

+ 24 - 0
vycenter/firewall/views.py

@@ -14,6 +14,30 @@ def index(request):
     hostname_default = vyos.get_hostname_prefered(request)
 
     firewall_all = vyos.get_firewall_all(hostname_default)
+    for xitem in firewall_all['name']:
+        if 'default-action' in firewall_all['name'][xitem]:
+            firewall_all['name'][xitem]['default_action'] = firewall_all['name'][xitem]['default-action']
+            del firewall_all['name'][xitem]['default-action']
+
+
+
+    if 'name' in request.POST:
+        cmd = {"op": "set", "path": ["firewall", "name", request.POST['name']]}
+        result1 = vyos.set_config(hostname_default, cmd)
+        print(result1)
+
+        if 'description' in request.POST:
+            cmd = {"op": "set", "path": ["firewall", "name", request.POST['name'], "description", request.POST['description']]}
+            result2 = vyos.set_config(hostname_default, cmd)
+            print(result2)
+
+        if 'action' in request.POST:
+            cmd = {"op": "set", "path": ["firewall", "name", request.POST['name'], "default-action", request.POST['action']]}
+            result3 = vyos.set_config(hostname_default, cmd)
+            print(result3)
+
+        return redirect('firewall:firewall-list')
+        
 
     template = loader.get_template('firewall/list.html')
     context = {