示例#1
0
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))
示例#2
0
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))