Beispiel #1
0
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),
    )