def add_list_network_device(request,classroom_id,list_id): response = HttpResponse() url_list = UrlList.objects.get(id=list_id) url_list_items = url_list.url_list_items.all() classroom_=Classroom.objects.get(id=classroom_id) network_type=classroom_.network_device.network_type firewall_rule=classroom_.firewall_rule if network_type=="Mikrotik": try: mk =MikrotikRouter() mk.set_networkdevice(classroom_.network_device) mk.add_firewall_list(url_list_items,url_list.name) ''' Add drop firewall rule''' mk.delete_firewall_rule("POST-LLISTA-"+classroom_id) #If we don't have other choice and we use the less preferable way to block a classroom. Blocking using every single MAC #from the PCs of the Classroom if classroom_.mac_filter: mk.block_classroom_by_mac(classroom_,"POST-LLISTA-"+classroom_id) else: mk.add_firewall_rule("POST-LLISTA-"+classroom_id,str(firewall_rule.src_address),str(firewall_rule.src_netmask)) ''' Add accept firewall rule to destination list''' mk.delete_firewall_rule("LLISTA-"+classroom_id) mk.add_firewall_rule("LLISTA-"+classroom_id,"","",url_list.name,"accept") except Exception, e: response.write("ERROR: "+str(e))
def draw_classroom(request,classroom_id,internet_id): response = HttpResponse() if not request.user.is_authenticated(): return HttpResponseRedirect('/login/') now = datetime.datetime.now() classroom_=Classroom.objects.get(id=classroom_id) #admin=classroom_.network_device.admin #password=classroom_.network_device.password #ip=classroom_.network_device.ip network_type=classroom_.network_device.network_type mac_filter=classroom_.mac_filter firewall_rule=classroom_.firewall_rule #network_device_by_classroom= ApiNetworkDevice.objects.filter(id=classroom_net_device) if network_type=="Mikrotik": try: mk =MikrotikRouter() mk.set_networkdevice(classroom_.network_device) mk.delete_classroom_firewall_rules(classroom_) if internet_id == "OFF": #mk.delete_firewall_rule("POST-LLISTA-"+classroom_id) #mk.delete_firewall_rule("LLISTA-"+classroom_id) #If we filter classroom by mac because doesn't follow any IP range knowed if mac_filter: mk.block_classroom_by_mac(classroom_) else: mk.add_firewall_rule(firewall_rule.comment,str(firewall_rule.src_address),str(firewall_rule.src_netmask)) else: #mk.delete_firewall_rule(firewall_rule) if mac_filter: mk.delete_classroom_firewall_rules(classroom_) else: mk.delete_firewall_rule(firewall_rule.comment) # Esborrem residus de regles parcials quan internet On or OFF mk.delete_firewall_rule("POST-LLISTA-"+classroom_id) mk.delete_firewall_rule("LLISTA-"+classroom_id) except Exception, e: response.write("ERROR: "+str(e))