浏览代码

set firewall group network-group #45

Roberto Berto 5 年之前
父节点
当前提交
c342bf392b

+ 9 - 3
vycontrol/firewall/templates/firewall/addressgroup-add.html

@@ -13,7 +13,7 @@
     <a href="{% url 'firewall:firewall-list' %}">Firewall List</a> | 
     <a href="{% url 'firewall:firewall-create' %}">Create new firewall</a> | 
     <a href="{% url 'firewall:firewall-addressgroup-list' %}">Address Group</a> |
-    <a href="{% url 'firewall:firewall-networkbook' %}">Network Book</a>
+    <a href="{% url 'firewall:firewall-networkgroup-list' %}">Network Group</a>
 </p>
 <p class="submenu2"></p>
 
@@ -23,8 +23,14 @@
 
 
     <p>
-    <label for="name">group name:</label><br>
-    <input type="input" name="name" id="name" value="" size="30" />
+        <label for="name">group name:</label><br>
+        <input type="input" name="name" id="name" value="" size="30" />
+    </p>
+
+
+    <p>
+        <label for="name">description:</label><br>
+        <input type="input" name="description" id="description" value="" size="100" />
     </p>
 
     <p>

+ 3 - 2
vycontrol/firewall/templates/firewall/addressgroup-list.html

@@ -12,7 +12,7 @@
 <p class="submenu1">
     <a href="{% url 'firewall:firewall-list' %}">Firewall List</a> | 
     <a href="{% url 'firewall:firewall-create' %}">Create new firewall</a> | 
-    <a href="{% url 'firewall:firewall-networkbook' %}">Network Book</a>
+    <a href="{% url 'firewall:firewall-networkgroup-list' %}">Network Group</a>
 </p>
 <p class="submenu2">
     <a href="{% url 'firewall:firewall-addressgroup-add' %}">Add Address Group</a>
@@ -21,13 +21,14 @@
 
 {% if firewall_addressgroup %}
     <table border="1" width="100%">
-    <tr><th>name</th><th>addresss</th></tr>
+        <tr><th width="25%">name</th><th width="25%">address</th><th width="50%">description</th></tr>
 
     {% for key, value in firewall_addressgroup.items %}       
         {% for ifkey, ifvalue in value.items %}
             <tr>
                 <td>{{ ifkey }}</a></td>
                 <td>{{ ifvalue.address }}</td>
+                <td>{{ ifvalue.description }}</td>
             </tr>
         {% endfor %}
         

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

@@ -14,7 +14,7 @@
 <p class="submenu1">
     <a href="{% url 'firewall:firewall-create' %}">Create new firewall</a> | 
     <a href="{% url 'firewall:firewall-addressgroup-list' %}">Address Group</a> | 
-    <a href="{% url 'firewall:firewall-networkbook' %}">Network Book</a>
+    <a href="{% url 'firewall:firewall-networkgroup-list' %}">Network Group</a>
 </p>
 <p class="submenu2">
     

+ 1 - 1
vycontrol/firewall/templates/firewall/create.html

@@ -12,7 +12,7 @@
 <p class="submenu1">
     <a href="{% url 'firewall:firewall-list' %}">Firewall List</a> | 
     <a href="{% url 'firewall:firewall-addressgroup-add' %}">Address Group</a> | 
-    <a href="{% url 'firewall:firewall-networkbook' %}">Network Book</a>
+    <a href="{% url 'firewall:firewall-networkgroup-list' %}">Network Group</a>
 </p>
 <p class="submenu2"></p>
 

+ 1 - 1
vycontrol/firewall/templates/firewall/list.html

@@ -13,7 +13,7 @@
 <p class="submenu1">
     <a href="{% url 'firewall:firewall-create' %}">Create new firewall</a> | 
     <a href="{% url 'firewall:firewall-addressgroup-list' %}">Address Group</a> | 
-    <a href="{% url 'firewall:firewall-networkbook' %}">Network Book</a>
+    <a href="{% url 'firewall:firewall-networkgroup-list' %}">Network Group</a>
 </p>
 <p class="submenu2"></p>
 

+ 52 - 0
vycontrol/firewall/templates/firewall/networkgroup-add.html

@@ -0,0 +1,52 @@
+{% extends "base.html" %}
+
+{% block header_title %}Firewall Add New Address Group{% endblock %}
+{% block section_title %}Firewall Add New Address Group{% endblock %}
+
+{% block debug %}
+{% endblock %}
+
+{% block content %}
+
+
+<p class="submenu1">
+    <a href="{% url 'firewall:firewall-list' %}">Firewall List</a> | 
+    <a href="{% url 'firewall:firewall-create' %}">Create new firewall</a> | 
+    <a href="{% url 'firewall:firewall-addressgroup-list' %}">Address Group</a> |
+    <a href="{% url 'firewall:firewall-networkgroup-list' %}">Network Group</a>
+</p>
+<p class="submenu2"></p>
+
+
+<form action="{% url 'firewall:firewall-networkgroup-add' %}" method="post">
+    {% csrf_token %}
+
+
+    <p>
+    <label for="name">group name:</label><br>
+    <input type="input" name="name" id="name" value="" size="30" />
+    </p>
+
+    <p>
+        <label for="name">description:</label><br>
+        <input type="input" name="description" id="description" value="" size="100" />
+    </p>
+    
+    <p>
+        <label for="network">network (CIDR notation):</label><br>
+        <input type="input" name="network" value=""/> (eg 10.10.10.0/24)
+    </p>
+
+    <input type="submit" value="Add Group">
+</form>
+
+
+
+
+
+
+
+{% endblock %}
+
+
+

+ 47 - 0
vycontrol/firewall/templates/firewall/networkgroup-list.html

@@ -0,0 +1,47 @@
+{% extends "base.html" %}
+
+{% block header_title %}Firewall Group List{% endblock %}
+{% block section_title %}Firewall Group List{% endblock %}
+
+{% block debug %}
+{{ firewall_networkgroup }}
+{% endblock %}
+
+{% block content %}
+
+<p class="submenu1">
+    <a href="{% url 'firewall:firewall-list' %}">Firewall List</a> | 
+    <a href="{% url 'firewall:firewall-create' %}">Create new firewall</a> | 
+    <a href="{% url 'firewall:firewall-addressgroup-list' %}">Address Group</a>   
+</p>
+<p class="submenu2">
+    <a href="{% url 'firewall:firewall-networkgroup-add' %}">Add network Group</a>
+</p>
+
+
+{% if firewall_networkgroup %}
+    <table border="1" width="100%">
+        <tr><th width="25%">name</th><th width="25%">network</th><th width="50%">description</th></tr>
+
+    {% for key, value in firewall_networkgroup.items %}       
+        {% for ifkey, ifvalue in value.items %}
+            <tr>
+                <td>{{ ifkey }}</a></td>
+                <td>{{ ifvalue.network }}</td>
+                <td>{{ ifvalue.description }}</td>
+            </tr>
+        {% endfor %}
+        
+    {% endfor %}
+
+    </table>
+{% else %}
+    <p>No firewalls.</p>
+{% endif %}
+
+
+
+{% endblock %}
+
+
+

+ 1 - 1
vycontrol/firewall/templates/firewall/show.html

@@ -13,7 +13,7 @@
 <p class="submenu1">
     <a href="{% url 'firewall:firewall-create' %}">Create new firewall</a> | 
     <a href="{% url 'firewall:firewall-addressgroup-list' %}">Address Group</a> | 
-    <a href="{% url 'firewall:firewall-networkbook' %}">Network Book</a>
+    <a href="{% url 'firewall:firewall-networkgroup-list' %}">Network Group</a>
 </p>
 <p class="submenu2">
     <a href="{% url 'firewall:addrule' firewall_name %}">Add new rule</a>

+ 5 - 1
vycontrol/firewall/urls.py

@@ -17,7 +17,11 @@ urlpatterns = [
     path('firewall-addressgroup-list', views.firewall_addressgroup_list, name='firewall-addressgroup-list'),
     path('firewall-addressgroup-add', views.firewall_addressgroup_add, name='firewall-addressgroup-add'),
 
-    path('firewall-networkbook', views.firewall_networkbook, name='firewall-networkbook'),
+    path('firewall-networkgroup-list', views.firewall_networkgroup_list, name='firewall-networkgroup-list'),
+    path('firewall-networkgroup-add', views.firewall_networkgroup_add, name='firewall-networkgroup-add'),
+
+
+
 
     path('addrule/<str:firewall_name>', views.addrule, name='addrule'),
     path('editrule/<str:firewall_name>/<str:firewall_rulenumber>', views.editrule, name='editrule'),

+ 49 - 0
vycontrol/firewall/views.py

@@ -226,6 +226,47 @@ def show(request, firewall_name):
     return HttpResponse(template.render(context, request))
 
 
+def firewall_networkgroup_list(request):
+    if not request.user.is_authenticated:
+        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
+        
+    hostname_default = vyos.get_hostname_prefered(request)
+    firewall_networkgroup = vyos.get_firewall_networkgroup(hostname_default)
+
+    template = loader.get_template('firewall/networkgroup-list.html')
+    context = { 
+        'firewall_networkgroup': firewall_networkgroup,
+    }   
+    return HttpResponse(template.render(context, request))
+
+
+
+
+
+def firewall_networkgroup_add(request):
+    if not request.user.is_authenticated:
+        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
+        
+    hostname_default = vyos.get_hostname_prefered(request)
+
+
+
+    if request.POST.get('name', None) != None and request.POST.get('network', None) != None:
+        vyos.set_firewall_networkgroup_add(hostname_default, request.POST.get('name'), request.POST.get('network'))
+
+        if request.POST.get('description', None) != None:
+            vyos.set_firewall_networkgroup_description(hostname_default, request.POST.get('name'), request.POST.get('description'))
+
+        return redirect('firewall:firewall-networkgroup-list')
+
+
+
+    template = loader.get_template('firewall/networkgroup-add.html')
+    context = { 
+    }   
+    return HttpResponse(template.render(context, request))
+
+
 
 
 def firewall_addressgroup_list(request):
@@ -251,9 +292,17 @@ def firewall_addressgroup_add(request):
 
     if request.POST.get('addresstype', None) == "single" and request.POST.get('name', None) != None and request.POST.get('address', None) != None:
         vyos.set_firewall_addressgroup_add(hostname_default, request.POST.get('name'), request.POST.get('address'))
+
+        if request.POST.get('description', None) != None:
+            vyos.set_firewall_addressgroup_description(hostname_default, request.POST.get('name'), request.POST.get('description'))
+
         return redirect('firewall:firewall-addressgroup-list')
     elif request.POST.get('addresstype', None) == "range" and request.POST.get('name', None) != None and request.POST.get('address-start', None) != None and request.POST.get('address-end', None) != None:
         vyos.set_firewall_addressgroup_rangeadd(hostname_default, request.POST.get('name'), request.POST.get('address-start'), request.POST.get('address-end'))
+
+        if request.POST.get('description', None) != None:
+            vyos.set_firewall_addressgroup_description(hostname_default, request.POST.get('name'), request.POST.get('description'))
+
         return redirect('firewall:firewall-addressgroup-list')
 
 

+ 26 - 0
vycontrol/vyos.py

@@ -249,6 +249,12 @@ def get_firewall_addressgroup(hostname):
     result1 = api_get(hostname, cmd)
     return result1
 
+def get_firewall_networkgroup(hostname):
+    cmd = {"op": "showConfig", "path": ["firewall","group","network-group"]}
+
+    result1 = api_get(hostname, cmd)
+    return result1
+
 
 def set_firewall_addressgroup_add(hostname, group_name, address):
     cmd = {"op": "set", "path": ["firewall","group",'address-group', group_name, "address", address]}
@@ -263,6 +269,26 @@ def set_firewall_addressgroup_rangeadd(hostname, group_name, address_start, addr
     result1 = api_set(hostname, cmd)
     return result1     
 
+def set_firewall_addressgroup_description(hostname, group_name, description):
+    cmd = {"op": "set", "path": ["firewall","group",'address-group', group_name, "description", description]}
+
+    result1 = api_set(hostname, cmd)
+    return result1 
+
+def set_firewall_networkgroup_add(hostname, group_name, network):
+    cmd = {"op": "set", "path": ["firewall","group",'network-group', group_name, "network", network]}
+
+    result1 = api_set(hostname, cmd)
+    return result1 
+
+def set_firewall_networkgroup_description(hostname, group_name, description):
+    cmd = {"op": "set", "path": ["firewall","group",'network-group', group_name, "description", description]}
+
+    result1 = api_set(hostname, cmd)
+    return result1 
+
+
+
 
 def delete_route_static(hostname, subnet, nexthop):
     #cmd = {"op": "delete", "path": ["protocols","static","route", subnet, "next-hop", nexthop]}