فهرست منبع

added decorators instead of login code

Roberto Berto 5 سال پیش
والد
کامیت
990d01b679

+ 16 - 37
vycontrol/config/views.py

@@ -17,6 +17,7 @@ from django.contrib.auth.models import Group
 from django.template.defaultfilters import register
 from django.template.defaultfilters import register
 
 
 
 
+from perms import is_authenticated
 
 
 
 
 @register.filter
 @register.filter
@@ -24,11 +25,9 @@ def get_item(dictionary, key):
     return dictionary.get(key)
     return dictionary.get(key)
 
 
 
 
-
+@is_authenticated
 def index(request):
 def index(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
-        
+       
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     for instance in all_instances:
     for instance in all_instances:
@@ -47,10 +46,9 @@ def index(request):
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
 
 
+@is_authenticated
 def users_list(request):
 def users_list(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
-        
+       
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)
@@ -128,12 +126,8 @@ def users_list(request):
     }   
     }   
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
-
+@is_authenticated
 def groups_list(request):
 def groups_list(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
-
-
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)
@@ -150,11 +144,8 @@ def groups_list(request):
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
 
 
-
-
+@is_authenticated
 def instances(request):
 def instances(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)
@@ -181,9 +172,8 @@ def instances(request):
     }   
     }   
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
+@is_authenticated
 def instance_add(request):
 def instance_add(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
@@ -213,10 +203,8 @@ def instance_add(request):
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
 
 
-
+@is_authenticated
 def group_add(request):
 def group_add(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
@@ -244,10 +232,8 @@ def group_add(request):
     }   
     }   
     return HttpResponse(template.render(context, request)) 
     return HttpResponse(template.render(context, request)) 
 
 
-    
+@is_authenticated    
 def user_add(request):
 def user_add(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
@@ -305,11 +291,9 @@ def user_add(request):
     return HttpResponse(template.render(context, request))    
     return HttpResponse(template.render(context, request))    
 
 
 
 
-
+@is_authenticated
 def instance_conntry(request, hostname):
 def instance_conntry(request, hostname):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
-        
+       
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)
 
 
@@ -330,9 +314,8 @@ def instance_conntry(request, hostname):
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
 # get default instance or set default instance 
 # get default instance or set default instance 
+@is_authenticated
 def instance_change(request, hostname = False):
 def instance_change(request, hostname = False):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
 
 
@@ -363,10 +346,8 @@ def instance_change(request, hostname = False):
     return redirect('config:instances')    
     return redirect('config:instances')    
 
 
 
 
-
+@is_authenticated
 def instance_remove(request, hostname):
 def instance_remove(request, hostname):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
 
 
@@ -380,11 +361,9 @@ def instance_remove(request, hostname):
 
 
     return redirect('config:instances')
     return redirect('config:instances')
 
 
-
+@is_authenticated
 def instance_changegroup(request, hostname):
 def instance_changegroup(request, hostname):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
-        
+       
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
 
 
     group_name = request.POST.get('group')
     group_name = request.POST.get('group')

+ 2 - 0
vycontrol/firewall/templates/firewall/list.html

@@ -26,12 +26,14 @@
     {% for key, value in firewall_all.items %}
     {% for key, value in firewall_all.items %}
         
         
         {% for ifkey, ifvalue in value.items %}
         {% for ifkey, ifvalue in value.items %}
+            {% if ifkey != "address-group" and ifkey != "network-group" %}
             <tr>
             <tr>
                 <td><a href="{% url 'firewall:show' ifkey %}">{{ ifkey }}</a></td>
                 <td><a href="{% url 'firewall:show' ifkey %}">{{ ifkey }}</a></td>
                 <td>{{ ifvalue.description }}</td>
                 <td>{{ ifvalue.description }}</td>
                 <td>{{ ifvalue.default_action }}</td>
                 <td>{{ ifvalue.default_action }}</td>
                 <td><a href="{% url 'firewall:firewall-remove' ifkey %}">remove</a> | <a href="{% url 'firewall:firewall-edit' ifkey %}">edit</a></td>
                 <td><a href="{% url 'firewall:firewall-remove' ifkey %}">remove</a> | <a href="{% url 'firewall:firewall-edit' ifkey %}">edit</a></td>
             </tr>
             </tr>
+            {% endif %}
         {% endfor %}
         {% endfor %}
         
         
     {% endfor %}
     {% endfor %}

+ 25 - 72
vycontrol/firewall/views.py

@@ -6,15 +6,16 @@ from django.conf import settings
 from django.urls import reverse
 from django.urls import reverse
 
 
 
 
-
 import vyos
 import vyos
+from performance import timer
+from perms import is_authenticated
 
 
 
 
 
 
+@timer
+@is_authenticated
 def index(request):
 def index(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
-        
+       
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)
@@ -39,10 +40,8 @@ def index(request):
     }   
     }   
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
-
+@is_authenticated
 def create(request):
 def create(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
@@ -75,10 +74,8 @@ def create(request):
 
 
 
 
 
 
-
+@is_authenticated
 def addrule(request, firewall_name):
 def addrule(request, firewall_name):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
@@ -126,12 +123,7 @@ def addrule(request, firewall_name):
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
 
 
-
-
-
-
-
-
+@is_authenticated
 def firewall_removerule(request, firewall_name, firewall_rulenumber):
 def firewall_removerule(request, firewall_name, firewall_rulenumber):
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)
@@ -144,11 +136,7 @@ def firewall_removerule(request, firewall_name, firewall_rulenumber):
 
 
     return redirect('firewall:show', firewall_name)
     return redirect('firewall:show', firewall_name)
 
 
-
-
-
-
-
+@is_authenticated
 def editrule(request, firewall_name, firewall_rulenumber):
 def editrule(request, firewall_name, firewall_rulenumber):
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
@@ -200,13 +188,8 @@ def editrule(request, firewall_name, firewall_rulenumber):
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
 
 
-
-
-
-
+@is_authenticated
 def show(request, firewall_name):
 def show(request, firewall_name):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
@@ -225,10 +208,8 @@ def show(request, firewall_name):
     }   
     }   
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
-
+@is_authenticated
 def firewall_networkgroup_list(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)
     hostname_default = vyos.get_hostname_prefered(request)
     firewall_networkgroup = vyos.get_firewall_networkgroup(hostname_default)
     firewall_networkgroup = vyos.get_firewall_networkgroup(hostname_default)
@@ -241,16 +222,10 @@ def firewall_networkgroup_list(request):
 
 
 
 
 
 
-
-
+@is_authenticated
 def firewall_networkgroup_add(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)
     hostname_default = vyos.get_hostname_prefered(request)
 
 
-
-
     if request.POST.get('name', None) != None and request.POST.get('network', None) != None:
     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'))
         vyos.set_firewall_networkgroup_add(hostname_default, request.POST.get('name'), request.POST.get('network'))
 
 
@@ -267,11 +242,8 @@ def firewall_networkgroup_add(request):
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
 
 
-
-
+@is_authenticated
 def firewall_addressgroup_list(request):
 def firewall_addressgroup_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)
     hostname_default = vyos.get_hostname_prefered(request)
     firewall_addressgroup = vyos.get_firewall_addressgroup(hostname_default)
     firewall_addressgroup = vyos.get_firewall_addressgroup(hostname_default)
@@ -283,10 +255,8 @@ def firewall_addressgroup_list(request):
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
 
 
-
+@is_authenticated
 def firewall_addressgroup_add(request):
 def firewall_addressgroup_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)
     hostname_default = vyos.get_hostname_prefered(request)
 
 
@@ -312,25 +282,13 @@ def firewall_addressgroup_add(request):
     }   
     }   
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
+#@is_authenticated
+#def firewall_networkbook(request):
+#    return redirect('firewall:firewall-list')
 
 
 
 
-
-def firewall_networkbook(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
-        
-    return redirect('firewall:firewall-list')
-
-
-
-
-
-
-
-def firewall_config(request, firewall_name):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
-        
+@is_authenticated
+def firewall_config(request, firewall_name):  
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)
@@ -349,11 +307,9 @@ def firewall_config(request, firewall_name):
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
 
 
-
+@is_authenticated
 def firewall_global(request):
 def firewall_global(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
-        
+   
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)
@@ -372,11 +328,9 @@ def firewall_global(request):
     return redirect('firewall:firewall-list')
     return redirect('firewall:firewall-list')
 
 
 
 
-
+@is_authenticated
 def firewall_remove(request, firewall_name):
 def firewall_remove(request, firewall_name):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
-        
+       
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)
@@ -385,10 +339,9 @@ def firewall_remove(request, firewall_name):
     
     
     return redirect('firewall:firewall-list')
     return redirect('firewall:firewall-list')
 
 
+@is_authenticated
 def firewall_edit(request, firewall_name):
 def firewall_edit(request, firewall_name):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
-        
+   
     #interfaces = vyos.get_interfaces()
     #interfaces = vyos.get_interfaces()
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)

+ 6 - 8
vycontrol/interface/views.py

@@ -8,6 +8,8 @@ from django.template.defaultfilters import register
 
 
 
 
 import vyos
 import vyos
+from perms import is_authenticated
+
 
 
 from config.models import Instance
 from config.models import Instance
 
 
@@ -18,11 +20,9 @@ import pprint
 def get_item(dictionary, key):
 def get_item(dictionary, key):
     return dictionary.get(key)
     return dictionary.get(key)
 
 
-    
+@is_authenticated    
 def index(request):
 def index(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
-        
+       
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     firewall_all = vyos.get_firewall_all(hostname_default)
     firewall_all = vyos.get_firewall_all(hostname_default)
@@ -107,9 +107,8 @@ def index(request):
     }
     }
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
+@is_authenticated    
 def interfaceshow(request, interface_type, interface_name):
 def interfaceshow(request, interface_type, interface_name):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)
@@ -129,9 +128,8 @@ def interfaceshow(request, interface_type, interface_name):
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
 
 
+@is_authenticated    
 def interfacefirewall(request, interface_type, interface_name):
 def interfacefirewall(request, interface_type, interface_name):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
 
 

+ 16 - 0
vycontrol/performance.py

@@ -0,0 +1,16 @@
+import functools
+import time
+
+
+
+def timer(func):
+    """Print the runtime of the decorated function"""
+    @functools.wraps(func)
+    def wrapper_timer(*args, **kwargs):
+        start_time = time.perf_counter()    # 1
+        value = func(*args, **kwargs)
+        end_time = time.perf_counter()      # 2
+        run_time = end_time - start_time    # 3
+        print(f"Finished {func.__name__!r} in {run_time:.4f} secs")
+        return value
+    return wrapper_timer

+ 16 - 0
vycontrol/perms.py

@@ -0,0 +1,16 @@
+import functools
+
+from django.shortcuts import redirect
+from django.urls import reverse
+
+
+def is_authenticated(func):
+    @functools.wraps(func)
+    def wrapper_perm(*args, **kwargs):
+        request = args[0]
+        if not request.user.is_authenticated:
+           return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
+
+        value = func(*args, **kwargs)
+        return value
+    return wrapper_perm

+ 4 - 10
vycontrol/static/views.py

@@ -6,14 +6,12 @@ from django.conf import settings
 from django.urls import reverse
 from django.urls import reverse
 
 
 import vyos
 import vyos
+from perms import is_authenticated
 from filters.vycontrol_filters import routeunpack
 from filters.vycontrol_filters import routeunpack
 
 
 
 
-
+@is_authenticated    
 def static_list(request):
 def static_list(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
-        
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)
     static_dict = vyos.get_route_static(hostname_default)
     static_dict = vyos.get_route_static(hostname_default)
@@ -33,10 +31,8 @@ def static_list(request):
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
 
 
-
+@is_authenticated    
 def static_add(request):
 def static_add(request):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)
@@ -64,10 +60,8 @@ def static_add(request):
     }   
     }   
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
-
+@is_authenticated    
 def static_remove(request, route, nexthop):
 def static_remove(request, route, nexthop):
-    if not request.user.is_authenticated:
-        return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
     hostname_default = vyos.get_hostname_prefered(request)
     hostname_default = vyos.get_hostname_prefered(request)

+ 0 - 1
vycontrol/vyos.py

@@ -5,7 +5,6 @@ import sys
 
 
 from config.models import Instance
 from config.models import Instance
 
 
-
 def repvar(s):
 def repvar(s):
     return s.replace("-", "_")
     return s.replace("-", "_")