def firewall(request, action): if request.user.is_anonymous() or not request.user.is_staff: return redirect("/") log.info("detected anon-user in adminpanel. Thrown out...") result = "" rules_form = FirewallRule() f = Firewall() log.debug("inside manager.views.firewall()") if action == "add" and request.method == "POST": log.debug("-- DETECTED ADD-RULE") form = FirewallRule(request.POST) rule = Rule() if form.is_valid(): log.debug("-- -- form is valid") rule.src = form.cleaned_data.get("src_ip") rule.src += "/" + str(form.cleaned_data.get("src_subnet")) rule.spt = form.cleaned_data.get("src_port") rule.dst = form.cleaned_data.get("dst_ip") if rule.dst: rule.dst += "/" + str(form.cleaned_data.get("dst_subnet")) rule.dpt = form.cleaned_data.get("dst_port") rule.action = form.cleaned_data.get("action") rule.chain = form.cleaned_data.get("chain") rule.prot = form.cleaned_data.get("protocol") rule.save() log.debug("-- -- rule saved to db, sending rule to firewall.add_custom_rule") result = f.add_custom_rule(rule.chain, rule.src, rule.spt, rule.dst, rule.dpt, rule.action, rule.prot) rules_form = form elif action == "delete" and request.method == "POST": log.debug("-- DETECTED DELETE-RULE") rule = str(request.POST.get("ruleid")) chain = str(request.POST.get("chain")) f.del_custom_rule(chain, rule) elif action == "flush" and request.method == "POST": log.debug("-- DETECTED FLUSH") chain = request.POST.get("chain") f.flush_custom_rules(chain) return render_to_response( "firewall.html", {"result": result, "forward": f.get_custom_forward(), "input": f.get_custom_input(), "form": rules_form}, context_instance=RequestContext(request), )