def static_add(request): all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) static_list = vyos.get_route_static(hostname_default) is_superuser = perms.get_is_superuser(request.user) error_message = None if 'subnet' in request.POST and 'nexthop' in request.POST: return1 = vyos.set_route_static(hostname_default, request.POST['subnet'], request.POST['nexthop']) if return1 == False: error_message = 'Cannot add static route.' else: return redirect('static:static-list') ippath = vyos.ip_route(hostname_default) template = loader.get_template('static/add.html') context = { 'instances': all_instances, 'hostname_default': hostname_default, 'static_list' : static_list, 'error_message' : error_message, 'username': request.user, 'is_superuser' : is_superuser, } return HttpResponse(template.render(context, request))
def firewall_portgroup_add(request): hostname_default = vyos.get_hostname_prefered(request) all_instances = vyos.instance_getall_by_group(request) is_superuser = perms.get_is_superuser(request.user) netservices = network.get_services() if request.POST.get('name', None) != None and request.POST.get('portgroup_ports_hidden', None) != None and request.POST.get('portgroup_ports_hidden') != '': try: ports = json.loads(request.POST.get('portgroup_ports_hidden')) except ValueError: return redirect('firewall:firewall-portgroup-list') for port in ports: vyos.set_firewall_portgroup_add(hostname_default, request.POST.get('name'), port) if request.POST.get('description', None) != None: vyos.set_firewall_portgroup_description(hostname_default, request.POST.get('name'), request.POST.get('description')) return redirect('firewall:firewall-portgroup-list') template = loader.get_template('firewall/portgroup-add.html') context = { 'hostname_default': hostname_default, 'username': request.user, 'instances': all_instances, 'is_superuser' : is_superuser, 'services_common' : netservices['common'], 'services' : netservices['services'], } return HttpResponse(template.render(context, request))
def xeditrule(request, firewall_name, rulenumber): #interfaces = vyos.get_interfaces() all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) is_superuser = perms.get_is_superuser(request.user) firewall = vyos.get_firewall(hostname_default, firewall_name) # remove firewall_networkgroup = vyos.get_firewall_networkgroup(hostname_default) firewall_addressgroup = vyos.get_firewall_addressgroup(hostname_default) firewall_networkgroup_js = json.dumps(firewall_networkgroup['network-group']) firewall_addressgroup_js = json.dumps(firewall_addressgroup['address-group']) netservices = network.get_services() netservices_js = json.dumps(netservices) portgroups = vyos.get_firewall_portgroup(hostname_default) template = loader.get_template('firewall/editrule.html') context = { #'interfaces': interfaces, 'instances': all_instances, 'hostname_default': hostname_default, 'firewall_name': firewall_name, 'firewall_name': firewall_name, 'username': request.user, 'is_superuser' : is_superuser, 'services' : netservices['services'], 'services_common' : netservices['common'], 'firewall_networkgroup': firewall_networkgroup['network-group'], 'firewall_addressgroup': firewall_addressgroup['address-group'], 'firewall_networkgroup_js': firewall_networkgroup_js, 'firewall_addressgroup_js': firewall_addressgroup_js, 'netservices_js' : netservices_js, }
def create(request): #interfaces = vyos.get_interfaces() all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) is_superuser = perms.get_is_superuser(request.user) 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/create.html') context = { #'interfaces': interfaces, 'instances': all_instances, 'hostname_default': hostname_default, 'username': request.user, 'is_superuser' : is_superuser, } return HttpResponse(template.render(context, request))
def static_add(request): msg = vmsg.msg() all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) static_list = vyos.get_route_static(hostname_default) is_superuser = perms.get_is_superuser(request.user) if 'subnet' in request.POST and 'nexthop' in request.POST: v = vapi.set_route_static(hostname_default, request.POST['subnet'], request.POST['nexthop']) if v.success == False: msg.add_error("Static route add fail - " + v.reason) else: msg.add_success("Static route added") ippath = vyos.ip_route(hostname_default) template = loader.get_template('static/add.html') context = { 'instances': all_instances, 'hostname_default': hostname_default, 'static_list': static_list, 'username': request.user, 'is_superuser': is_superuser, 'msg': msg.get_all(), } return HttpResponse(template.render(context, request))
def instance_conntry(request, hostname): is_superuser = perms.get_is_superuser(request.user) all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) if perms.user_has_hostname_access(request.user, hostname) == False: return redirect('config:instances') # permcheck instance = Instance.objects.get(hostname=hostname) connected = vyos.conntry(hostname) if connected == True: request.session['hostname'] = hostname template = loader.get_template('config/instance_conntry.html') context = { 'instance': instance, "connected": connected, 'instances': all_instances, 'hostname_default': hostname_default, 'username': request.user, 'is_superuser': is_superuser, } return HttpResponse(template.render(context, request))
def group_add(request): is_superuser = perms.get_is_superuser(request.user) #interfaces = vyos.get_interfaces() all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) error_message = None if len(request.POST) > 0 and 'name' in request.POST: try: group_get = Group.objects.get(name=request.POST['name']) error_message = 'Group already exists' except Group.DoesNotExist: group_create = Group(name=request.POST['name']) group_create.save() return redirect('config:groups-list') else: instance_id = 0 template = loader.get_template('config/group_add.html') context = { 'hostname_default': hostname_default, 'instance_id': instance_id, 'instances': all_instances, 'error_message': error_message, 'username': request.user, 'is_superuser': is_superuser, } return HttpResponse(template.render(context, request))
def instance_add(request): is_superuser = perms.get_is_superuser(request.user) #interfaces = vyos.get_interfaces() all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) if len(request.POST) > 0: instance = Instance() instance.alias = request.POST['alias'] instance.hostname = request.POST['hostname'] instance.port = request.POST['port'] instance.key = request.POST['key'] if 'https' in request.POST: instance.https = request.POST['https'] else: instance.https = False instance_id = instance.save() return redirect('config:instances') else: instance_id = 0 template = loader.get_template('config/instance_add.html') context = { 'hostname_default': hostname_default, 'instance_id': instance_id, 'instances': all_instances, 'username': request.user, 'is_superuser': is_superuser, } return HttpResponse(template.render(context, request))
def instances(request): is_superuser = perms.get_is_superuser(request.user) all_instances = perms.instance_getall_by_group(request) hostname_default = vyos.get_hostname_prefered(request) is_superuser = perms.get_is_superuser(request.user) print(all_instances) if hostname_default == None: if all_instances.count() > 0: for i in all_instances: pprint.pprint(i.hostname) instance_default(request, i.hostname) else: return redirect('config:instance-add') groups = Group.objects.all() template = loader.get_template('config/instances.html') context = { 'instances': all_instances, 'hostname_default': hostname_default, 'groups': groups, 'username': request.user, 'is_superuser': is_superuser, } return HttpResponse(template.render(context, request))
def firewall_remove(request, firewall_name): #interfaces = vyos.get_interfaces() all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) firewall = vyos.delete_firewall(hostname_default, firewall_name) return redirect('firewall:firewall-list')
def index(request): all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) template = loader.get_template('wanlb/list.html') context = { 'instances': all_instances, 'hostname_default': hostname_default, } return HttpResponse(template.render(context, request))
def user_add(request): is_superuser = perms.get_is_superuser(request.user) #interfaces = vyos.get_interfaces() all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) error_message = None count = 0 name = '' if 'name' in request.POST: name = request.POST['name'] count += 1 username = '' if 'username' in request.POST: username = request.POST['username'] count += 1 password = '' if 'password' in request.POST: password = request.POST['password'] count += 1 email = '' if 'email' in request.POST: email = request.POST['email'] count += 1 if count >= 4: try: user = User.objects.get(username=username) error_message = 'Username already exists' except User.DoesNotExist: user_create = User(username=username, email=email, password=password, last_name=name) user_create.save() return redirect('config:users-list') template = loader.get_template('config/user_add.html') context = { 'hostname_default': hostname_default, 'instances': all_instances, 'error_message': error_message, 'name': name, 'username': username, 'password': password, 'email': email, 'username': request.user, 'is_superuser': is_superuser, } return HttpResponse(template.render(context, request))
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 wrapper_perm(*args, **kwargs): request = args[0] if not request.user.is_authenticated: return redirect('%s?next=%s' % (reverse('registration-login'), request.path)) #return redirect('registration-login') hostname_default = vyos.get_hostname_prefered(request) value = func(*args, **kwargs) return value
def firewall_addressgroup_add(request): hostname_default = vyos.get_hostname_prefered(request) all_instances = vyos.instance_getall_by_group(request) is_superuser = perms.get_is_superuser(request.user) if ( request.POST.get('name', None) != None and request.POST.get('addressgroup_json', None) != None): group = request.POST.get('name', None) description = request.POST.get('description', None) try: networks = json.loads(request.POST.get('addressgroup_json')) except ValueError: networks = {} changed = False vyos2.log('networks', networks) for network in networks: v = vyos2.api ( hostname = hostname_default, api = "post", op = "set", cmd = ["firewall", "group", "address-group", group, "address", network], description = "add address-group network", ) if v.success and changed == False: changed = True # set network description if it was created if changed == True: if description != None: v = vyos2.api ( hostname= hostname_default, api = "post", op = "set", cmd = ["firewall", "group", "address-group", group, "description", description], description = "set address-group description", ) return redirect('firewall:firewall-addressgroup-list') template = loader.get_template('firewall/addressgroup-add.html') context = { 'hostname_default': hostname_default, 'username': request.user, 'instances': all_instances, 'is_superuser' : is_superuser, } return HttpResponse(template.render(context, request))
def index(request): if not request.user.is_authenticated: return redirect('%s?next=%s' % (reverse('registration-login'), request.path)) all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) template = loader.get_template('ipsec/list.html') context = { 'instances': all_instances, 'hostname_default': hostname_default, } return HttpResponse(template.render(context, request))
def instance_remove(request, hostname): all_instances = vyos.instance_getall() # permcheck instance = Instance.objects.get(hostname=hostname) hostname_default = vyos.get_hostname_prefered(request) #if hostname_default != hostname: instance.delete() return redirect('config:instances')
def static_remove(request, route, nexthop): all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) static_list = vyos.get_route_static(hostname_default) print(route) print(routeunpack(route)) if route and nexthop: return1 = vyos.delete_route_static(hostname_default, routeunpack(route), nexthop) return redirect('static:static-list')
def firewall_addressgroup_list(request): hostname_default = vyos.get_hostname_prefered(request) firewall_addressgroup = vyos.get_firewall_addressgroup(hostname_default) all_instances = vyos.instance_getall_by_group(request) is_superuser = perms.get_is_superuser(request.user) template = loader.get_template('firewall/addressgroup-list.html') context = { 'firewall_addressgroup': firewall_addressgroup, 'hostname_default': hostname_default, 'username': request.user, 'instances': all_instances, 'is_superuser' : is_superuser, } return HttpResponse(template.render(context, request))
def groups_list(request): is_superuser = perms.get_is_superuser(request.user) #interfaces = vyos.get_interfaces() all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) groups = Group.objects.all() template = loader.get_template('config/groups_list.html') context = { #'interfaces': interfaces, 'instances': all_instances, 'hostname_default': hostname_default, 'groups': groups, 'username': request.user, 'is_superuser': is_superuser, } return HttpResponse(template.render(context, request))
def firewall_global(request): #interfaces = vyos.get_interfaces() all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) if int(request.POST.get('allping', 0)) == 1: vyos.set_firewall_allping_enable(hostname_default) else: vyos.set_firewall_allping_disable(hostname_default) if int(request.POST.get('syncookies', 0)) == 1: vyos.set_firewall_syncookies_enable(hostname_default) else: vyos.set_firewall_syncookies_disable(hostname_default) return redirect('firewall:firewall-list')
def index(request): all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) is_superuser = perms.get_is_superuser(request.user) ntp_srv = vapi.get_ntp(hostname_default) ntp_servers = {} if ntp_srv.success: if ntp_srv.data['server'] != None: ntp_servers = ntp_srv.data['server'] context = { 'instances': all_instances, 'hostname_default': hostname_default, 'ntp_servers': ntp_servers, 'is_superuser': is_superuser, } return render(request, 'ntp/list.html', context)
def firewall_config(request, firewall_name): #interfaces = vyos.get_interfaces() all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) is_superuser = perms.get_is_superuser(request.user) firewall = vyos.get_firewall(hostname_default, firewall_name) template = loader.get_template('firewall/show.html') context = { #'interfaces': interfaces, 'instances': all_instances, 'hostname_default': hostname_default, 'firewall': firewall, 'firewall_name': firewall_name, 'username': request.user, 'is_superuser' : is_superuser, } return HttpResponse(template.render(context, request))
def index(request): is_superuser = perms.get_is_superuser(request.user) #interfaces = vyos.get_interfaces() all_instances = vyos.instance_getall() for instance in all_instances: if group == None: all_instance[instance]['group'] = "admin" hostname_default = vyos.get_hostname_prefered(request) template = loader.get_template('config/instance.html') context = { #'interfaces': interfaces, 'instances': all_instances, 'hostname_default': hostname_default, 'username': request.user, 'is_superuser': is_superuser, } return HttpResponse(template.render(context, request))
def interfacefirewall(request, interface_type, interface_name): all_instances = vyos.instance_getall() is_superuser = perms.get_is_superuser(request.user) hostname_default = vyos.get_hostname_prefered(request) interface = vyos.get_interface(interface_type, interface_name, hostname=hostname_default) template = loader.get_template('interface/show.html') context = { 'interface': interface, 'instances': all_instances, 'hostname_default': hostname_default, 'interface_type': interface_type, 'interface_name': interface_name, 'username': request.user, 'is_superuser': is_superuser, } return HttpResponse(template.render(context, request))
def static_list(request): all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) static_dict = vyos.get_route_static(hostname_default) is_superuser = perms.get_is_superuser(request.user) static_list = [] for s in static_dict['route']: static_list.append({ 'route': s, 'nexthop': static_dict['route'][s]['next-hop'], }) template = loader.get_template('static/list.html') context = { 'instances': all_instances, 'hostname_default': hostname_default, 'static_list' : static_list, 'username': request.user, 'is_superuser' : is_superuser, } return HttpResponse(template.render(context, request))
def index(request): #interfaces = vyos.get_interfaces() all_instances = vyos.instance_getall_by_group(request) hostname_default = vyos.get_hostname_prefered(request) firewall2 = vyos2.api( hostname = hostname_default, api = 'get', op = 'showConfig', cmd = {"op": "showConfig", "path": ["firewall"]}, description = "get all firewall", ) is_superuser = perms.get_is_superuser(request.user) firewall_all = vyos.get_firewall_all(hostname_default) if firewall_all == False: return redirect('firewall:firewall-create') 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'] template = loader.get_template('firewall/list.html') context = { #'interfaces': interfaces, 'instances': all_instances, 'hostname_default': hostname_default, 'firewall_all': firewall_all, 'username': request.user, 'is_superuser' : is_superuser, } return HttpResponse(template.render(context, request))
def firewall_edit(request, firewall_name): #interfaces = vyos.get_interfaces() all_instances = vyos.instance_getall() hostname_default = vyos.get_hostname_prefered(request) firewall = vyos.get_firewall(hostname_default, firewall_name) firewall['defaultaction'] = firewall['default-action'] is_superuser = perms.get_is_superuser(request.user) changed = False if 'description' in request.POST: cmd = {"op": "set", "path": ["firewall", "name", firewall_name, "description", request.POST['description']]} result2 = vyos.set_config(hostname_default, cmd) print(result2) changed = True if 'action' in request.POST: cmd = {"op": "set", "path": ["firewall", "name", firewall_name, "default-action", request.POST['action']]} result3 = vyos.set_config(hostname_default, cmd) print(result3) changed = True if changed == True: return redirect('firewall:firewall-list') template = loader.get_template('firewall/edit.html') context = { #'interfaces': interfaces, 'instances': all_instances, 'hostname_default': hostname_default, 'firewall_name': firewall_name, 'firewall': firewall, 'username': request.user, 'is_superuser' : is_superuser, } return HttpResponse(template.render(context, request))
def index(request): hostname_default = vyos.get_hostname_prefered(request) all_instances = vyos.instance_getall() firewall_all = vyos.get_firewall_all(hostname_default) interfaces = vyos.get_interfaces(hostname_default) is_superuser = perms.get_is_superuser(request.user) interfaces_all_names = vyos.get_interfaces_all_names(hostname_default) interface_firewall_in = {} interface_firewall_out = {} interface_address = {} firewall_names = [] # set interface_alias in format eth0 if has not vif and eth0.vlan if has vlan for iname in interfaces_all_names: if 'vif' in iname: iname['interface_alias'] = "{interface_name}.{vif}".format( interface_name=iname['interface_name'], vif=iname['vif']) else: iname['interface_alias'] = iname['interface_name'] # create firewall_in and firewall_out vars for interface_type in interfaces: for interface_name in interfaces[interface_type]: try: interface_firewall_in[interface_name] = interfaces[ interface_type][interface_name]['firewall']['in']['name'] except: pass try: interface_firewall_out[interface_name] = interfaces[ interface_type][interface_name]['firewall']['out']['name'] except: pass if interface_name not in interface_address: interface_address[interface_name] = [] try: interface_address[interface_name].append( interfaces[interface_type][interface_name]['address']) except: pass if 'vif' in interfaces[interface_type][interface_name]: for vif in interfaces[interface_type][interface_name]['vif']: interface_name_full = "{interface_name}.{vif}".format( interface_name=interface_name, vif=vif) try: interface_firewall_in[ interface_name_full] = interfaces[interface_type][ interface_name]['vif'][vif]['firewall']['in'][ 'name'] except: pass try: interface_firewall_out[ interface_name_full] = interfaces[interface_type][ interface_name]['vif'][vif]['firewall']['out'][ 'name'] except: pass if interface_name_full not in interface_address: interface_address[interface_name_full] = [] try: interface_address[interface_name_full].append( interfaces[interface_type][interface_name]['vif'] [vif]['address']) except: pass # put all information in a single var: interface_all_names for iname in interfaces_all_names: if 'vif' in iname: ialias = "{interface_name}.{vif}".format( interface_name=iname['interface_name'], vif=iname['vif']) else: ialias = iname['interface_name'] if ialias in interface_firewall_out: iname['firewall_out'] = interface_firewall_out[ialias] if ialias in interface_firewall_in: iname['firewall_in'] = interface_firewall_in[ialias] if ialias in interface_address: iname['address'] = interface_address[ialias] if 'name' in firewall_all: for fname in firewall_all['name']: firewall_names.append(fname) # create a dict interfaces_all_names_dict = {} for iname in interfaces_all_names: if 'vif' in iname: ialias = "{interface_name}.{vif}".format( interface_name=iname['interface_name'], vif=iname['vif']) else: ialias = iname['interface_name'] interfaces_all_names_dict[ialias] = iname fw_changed = False for el in request.POST: interface_vif = None if el.startswith('firewall-ipv4-in'): pos = el.split(".") interface_type = pos[1] interface_name = pos[2] if len(pos) >= 4: interface_vif = pos[3] ialias = "{interface_name}.{vif}".format( interface_name=interface_name, vif=interface_vif) else: ialias = interface_name firewall_name = request.POST[el] if firewall_name == "--remove--": if 'firewall_in' in interfaces_all_names_dict[ialias]: v = vapi.delete_interface_firewall_ipv4( hostname_default, interface_type, interface_name, "in", interface_vif) #print("@@@@@@@@@@@@@@@@@ in delete", hostname_default, interface_type, interface_name, "in", firewall_name, interface_vif) else: pass #print("@@@@@ not 1", interfaces_all_names_dict[ialias], firewall_name) else: if 'firewall_in' not in interfaces_all_names_dict[ ialias] or interfaces_all_names_dict[ialias][ 'firewall_in'] != firewall_name: v = vapi.set_interface_firewall_ipv4( hostname_default, interface_type, interface_name, "in", firewall_name, interface_vif) #print("@@@@@@@@@@@@@@@@@ in add", hostname_default, interface_type, interface_name, "in", firewall_name, interface_vif) else: pass #print("@@@@@ not 2", interfaces_all_names_dict[ialias], firewall_name ) fw_changed = True elif el.startswith('firewall-ipv4-out'): pos = el.split(".") interface_type = pos[1] interface_name = pos[2] if len(pos) >= 4: interface_vif = pos[3] ialias = "{interface_name}.{vif}".format( interface_name=interface_name, vif=interface_vif) else: ialias = interface_name firewall_name = request.POST[el] if firewall_name == "--remove--": if 'firewall_out' in interfaces_all_names_dict[ialias]: v = vapi.delete_interface_firewall_ipv4( hostname_default, interface_type, interface_name, "out", interface_vif) #print("@@@@@@@@@@@@@@@@@ out delete", hostname_default, interface_type, interface_name, "out", firewall_name, interface_vif) else: #print("@@@@@ not 3", interfaces_all_names_dict[ialias], firewall_name) pass else: if 'firewall_out' not in interfaces_all_names_dict[ ialias] or interfaces_all_names_dict[ialias][ 'firewall_out'] != firewall_name: v = vapi.set_interface_firewall_ipv4( hostname_default, interface_type, interface_name, "out", firewall_name, interface_vif) #print("@@@@@@@@@@@@@@@@@ out add", hostname_default, interface_type, interface_name, "out", firewall_name, interface_vif) else: #print("@@@@@ not 4", interfaces_all_names_dict[ialias], firewall_name) pass fw_changed = True if fw_changed == True: return redirect('interface:interface-list') template = loader.get_template('interface/index.html') context = { 'interfaces': interfaces, 'interfaces_pretty': pprint.pformat(interfaces, indent=4, width=120), 'interfaces_all_names': interfaces_all_names, 'interfaces_all_names_pretty': pprint.pformat(interfaces_all_names, indent=4, width=120), 'instances': all_instances, 'hostname_default': hostname_default, 'firewall_all': firewall_all, 'firewall_names': firewall_names, 'interface_firewall_in': interface_firewall_in, 'interface_firewall_out': interface_firewall_out, 'interface_firewall_in_pretty': pprint.pformat(interface_firewall_in, indent=4, width=120), 'interface_firewall_out_pretty': pprint.pformat(interface_firewall_out, indent=4, width=120), 'username': request.user, 'is_superuser': is_superuser, } return HttpResponse(template.render(context, request))
def firewall_addressgroup_desc(request, groupname): hostname_default = vyos.get_hostname_prefered(request) all_instances = vyos.instance_getall_by_group(request) is_superuser = perms.get_is_superuser(request.user) v = vyos2.api ( hostname= hostname_default, api = "get", op = "showConfig", cmd = ["firewall", "group", "address-group", groupname], description = "show address-group config", ) groupinfo = v.data if 'address' not in groupinfo: networks_original = [] else: networks_original = groupinfo['address'] if type(networks_original) is str: vyos2.log("tipo", type(networks_original)) networks_original = [groupinfo['address']] else: networks_original = groupinfo['address'] vyos2.log("networks_original", networks_original) networks_json = json.dumps(networks_original) changed = False if v.success: if request.POST.get('description', None) != None: v = vyos2.api ( hostname= hostname_default, api = "post", op = "set", cmd = ["firewall", "group", "address-group", groupname, "description", request.POST.get('description')], description = "set network-group description", ) changed = True if request.POST.get('networkgroup_json', None) != None: try: networks_new = json.loads(request.POST.get('networkgroup_json')) except ValueError: networks_new = {} vyos2.log('networks new', networks_new) for network in networks_new: v = vyos2.api ( hostname= hostname_default, api = "post", op = "set", cmd = ["firewall", "group", "address-group", groupname, "address", network], description = "edit address-group network", ) if v.success and changed == False: changed = True vyos2.log('networks original', networks_original) for network in networks_original: if network not in networks_new: v = vyos2.api ( hostname= hostname_default, api = "post", op = "delete", cmd = ["firewall", "group", "address-group", groupname, "address", network], description = "delete address-group network", ) if v.success and changed == False: changed = True if changed == True: return redirect('firewall:firewall-addressgroup-list') template = loader.get_template('firewall/addressgroup-desc.html') context = { 'groupinfo': groupinfo, 'hostname_default': hostname_default, 'username': request.user, 'instances': all_instances, 'is_superuser' : is_superuser, 'groupname': groupname, 'networks_json' : networks_json, } return HttpResponse(template.render(context, request)) else: return redirect('firewall:firewall-addressgroup-list')