diff --git a/app/urls.py b/app/urls.py index 1745178..c45c264 100644 --- a/app/urls.py +++ b/app/urls.py @@ -257,11 +257,6 @@ urlpatterns = [ ThresholdIRCSendMessage.as_view(), name="threshold_irc_msg", ), - path( - "manage/threshold/irc/msg////", - ThresholdIRCSendMessage.as_view(), - name="threshold_irc_msg", - ), ## path("api/chans/", ThresholdChans.as_view(), name="chans"), path("api/users/", ThresholdUsers.as_view(), name="users"), diff --git a/core/lib/context.py b/core/lib/context.py index 57a1287..d9578ce 100644 --- a/core/lib/context.py +++ b/core/lib/context.py @@ -30,7 +30,25 @@ def construct_query(index, net, channel, src, num, size, type=None, nicks=None): if {"match": {"channel": channel}} in extra_must: extra_must.remove({"match": {"channel": channel}}) extra_should2 = [] - extra_must.append({"match": {"type": "znc"}}) + # Type is one of msg or notice + #extra_should.append({"match": {"mtype": "msg"}}) + #extra_should.append({"match": {"mtype": "notice"}}) + extra_should.append({"match": {"type": "znc"}}) + extra_should.append({"match": {"type": "self"}}) + + extra_should2.append({"match": {"type": "znc"}}) + #extra_should2.append({"match": {"channel": channel}}) + elif type == "auth": + if {"match": {"channel": channel}} in extra_must: + extra_must.remove({"match": {"channel": channel}}) + extra_should2 = [] + extra_should2.append({"match": {"nick": channel}}) + #extra_should2.append({"match": {"mtype": "msg"}}) + #extra_should2.append({"match": {"mtype": "notice"}}) + + extra_should.append({"match": {"type": "query"}}) + extra_should2.append({"match": {"type": "self"}}) + extra_should.append({"match": {"nick": channel}}) else: for ctype in types: extra_should.append({"match": {"mtype": ctype}}) diff --git a/core/lib/manage/threshold.py b/core/lib/manage/threshold.py index 0d47b50..37c243d 100644 --- a/core/lib/manage/threshold.py +++ b/core/lib/manage/threshold.py @@ -196,6 +196,7 @@ def send_irc_message(net, num, channel, msg, nick=None): payload = {"msg": msg, "channel": channel} if nick: payload["nick"] = nick + print("SEND", payload) messaged = threshold_request(url, payload, method="PUT") return messaged @@ -250,3 +251,10 @@ def irc_check_auth(data): payload = data updated = threshold_request(url, payload, method="POST") return updated + + +def get_irc_sinst(net): + url = f"irc/sinst/{net}" + payload = {} + authentity = threshold_request(url, payload, method="GET") + return authentity diff --git a/core/templates/manage/threshold/irc/network/relays.html b/core/templates/manage/threshold/irc/network/relays.html index 06f0097..595bccd 100644 --- a/core/templates/manage/threshold/irc/network/relays.html +++ b/core/templates/manage/threshold/irc/network/relays.html @@ -191,11 +191,21 @@ - + diff --git a/core/views/manage/threshold/irc.py b/core/views/manage/threshold/irc.py index e33edb6..2101c69 100644 --- a/core/views/manage/threshold/irc.py +++ b/core/views/manage/threshold/irc.py @@ -104,7 +104,11 @@ class ThresholdIRCNetworkRelays(SuperUserRequiredMixin, View): def get(self, request, net): relays = threshold.get_irc_relays(net) + sinst = threshold.get_irc_sinst(net) context = {"net": net, "relays": relays["relays"]} + if sinst: + if sinst["success"]: + context["sinst"] = sinst["sinst"] return render(request, self.template_name, context) @@ -693,7 +697,7 @@ class ThresholdIRCSendMessage(SuperUserRequiredMixin, APIView): parser_classes = [FormParser] template_name = "partials/context-input.html" - def put(self, request, net, num, nick=None): + def put(self, request, net, num): """ Send a message """ @@ -713,6 +717,9 @@ class ThresholdIRCSendMessage(SuperUserRequiredMixin, APIView): self.template_name, {"message": message, "class": message_class}, ) + nick = None + if "nick" in request.data: + nick = request.data["nick"] if nick: messaged = threshold.send_irc_message( net, num, request.data["channel"], request.data["msg"], nick=nick diff --git a/core/views/ui/drilldown.py b/core/views/ui/drilldown.py index adcc5c9..d55f314 100644 --- a/core/views/ui/drilldown.py +++ b/core/views/ui/drilldown.py @@ -255,26 +255,18 @@ class DrilldownContextModal(APIView): # Create the query params from the POST arguments mandatory = ["net", "channel", "num", "src", "index", "nick", "type"] invalid = [None, False, "—", "None"] + query_params = {k: v for k, v in request.data.items() if v} + + if query_params["index"] == "int": + mandatory.append("mtype") + for key in query_params: if query_params[key] in invalid: query_params[key] = None for key in mandatory: if key not in query_params: query_params[key] = None - if query_params["index"] == "int": - if "mtype" not in query_params: - query_params["mtype"] = None - if request.user.is_superuser: - if query_params["type"] in ["query", "notice"]: - nicks = [query_params["channel"], query_params["nick"]] - query_params["sorting"] = "desc" - if ( - query_params["index"] == "int" - and query_params["mtype"] == "msg" - and not query_params["type"] == "query" - ): - query_params["index"] = "main" type = None if "type" in query_params: @@ -282,6 +274,17 @@ class DrilldownContextModal(APIView): if type == "znc": query_params["channel"] = "*status" + if request.user.is_superuser: + if type in ["query", "notice"]: + nicks = [query_params["channel"], query_params["nick"]] + query_params["sorting"] = "desc" + if ( + query_params["index"] == "int" + and query_params["mtype"] == "msg" + and not type == "query" + ): + query_params["index"] = "main" + # Create the query with the context helper search_query = construct_query( query_params["index"],