def list_active(request, action=None): if request.user.is_anonymous() or not request.user.is_staff: return redirect("/") f = Firewall() error = False user = None try: if action and action == "limit" and request.POST: user = LoggedInUser.objects.get(last_seen_ip=request.POST.get("victim")) limit = request.POST.get("setlimit") if user: if limit == "TX": f.limit_tx(user.last_seen_ip) elif limit == "RX": f.limit_rx(user.last_seen_ip) elif limit == "C": f.limit_connections(user.last_seen_ip) # user.is_active = False else: error = True else: error = True elif action and action == "kick" and request.POST: user = LoggedInUser.objects.get(last_seen_ip=request.POST.get("victim")) if user: Drop().ip4(user.last_seen_ip) [s.delete() for s in Session.objects.all() if s.get_decoded().get("_auth_user_id") == user.id] else: error = True elif action and action == "free" and request.POST: user = LoggedInUser.objects.get(last_seen_ip=request.POST.get("victim")) if user: user.is_active = True f.rm_limit(user.last_seen_ip) else: error = True allowed = [ LoggedInUser.objects.filter(last_seen_ip=user[-1]).order_by("-last_login")[0] for user in f.get_allowed() if user[-1] != "0.0.0.0/0" ] limited = [ LoggedInUser.objects.filter(last_seen_ip=user[-1]).order_by("-last_login")[0] for user in f.get_limited() if user[-1] != "0.0.0.0/0" ] limited += [ LoggedInUser.objects.filter(last_seen_ip=user[-2]).order_by("-last_login")[0] for user in f.get_limited() if user[-2] != "0.0.0.0/0" and user[2] != "CONNLIMIT" ] except LoggedInUser.DoesNotExist: return render_to_response( "active_users.html", {"limited": None, "active": None, "user": None, "error": True, "action": None}, context_instance=RequestContext(request), ) return render_to_response( "active_users.html", {"limited": limited, "active": allowed, "user": user, "error": error, "action": action}, context_instance=RequestContext(request), )