about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorMichael Vetter <jubalh@iodoru.org>2021-07-01 21:10:21 +0200
committerGitHub <noreply@github.com>2021-07-01 21:10:21 +0200
commit516fd7d90965e46a3f5fee20b97e3f243d14a339 (patch)
treeab87024c729578950f319cb11643891988296956
parent3a9cffe01380254f292559255e03e7d5ff71dc9a (diff)
parente4a62f39584eb022f9a26620a061553e03c41af5 (diff)
downloadprofani-tty-516fd7d90965e46a3f5fee20b97e3f243d14a339.tar.gz
Merge pull request #1572 from profanity-im/fix/spamreporting
Fix spamreporting
-rw-r--r--src/command/cmd_funcs.c35
-rw-r--r--src/xmpp/blocking.c1
-rw-r--r--src/xmpp/stanza.h1
3 files changed, 25 insertions, 12 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c
index dc9b1fb0..e8b80534 100644
--- a/src/command/cmd_funcs.c
+++ b/src/command/cmd_funcs.c
@@ -3017,17 +3017,14 @@ cmd_blocked(ProfWin* window, const char* const command, gchar** args)
     if (g_strcmp0(args[0], "add") == 0) {
         char* jid = args[1];
 
-        // /blocked add jid or /blocked add (in window)
-        if (g_strv_length(args) < 3) {
-            if (jid == NULL && (window->type == WIN_CHAT)) {
-                ProfChatWin* chatwin = (ProfChatWin*)window;
-                jid = chatwin->barejid;
-            }
+        if (jid == NULL && (window->type == WIN_CHAT)) {
+            ProfChatWin* chatwin = (ProfChatWin*)window;
+            jid = chatwin->barejid;
+        }
 
-            if (jid == NULL) {
-                cons_bad_cmd_usage(command);
-                return TRUE;
-            }
+        if (jid == NULL) {
+            cons_bad_cmd_usage(command);
+            return TRUE;
         }
 
         gboolean res = blocked_add(jid, br, NULL);
@@ -3053,6 +3050,20 @@ cmd_blocked(ProfWin* window, const char* const command, gchar** args)
     }
 
     if (strncmp(args[0], "report-", 7) == 0) {
+        char *jid;
+        char *msg = NULL;
+        guint argn = g_strv_length(args);
+
+        if (argn >= 2) {
+            jid = args[1];
+        } else {
+            cons_bad_cmd_usage(command);
+        }
+
+        if (argn >= 3) {
+            msg = args[2];
+        }
+
         if (args[1] && g_strcmp0(args[0], "report-abuse") == 0) {
             br = BLOCKED_REPORT_ABUSE;
         } else if (args[1] && g_strcmp0(args[0], "report-spam") == 0) {
@@ -3067,11 +3078,11 @@ cmd_blocked(ProfWin* window, const char* const command, gchar** args)
             return TRUE;
         }
 
-        // args[3] is an optional message
-        gboolean res = blocked_add(args[1], br, args[3]);
+        gboolean res = blocked_add(jid, br, msg);
         if (!res) {
             cons_show("User %s already blocked.", args[1]);
         }
+        return TRUE;
     }
 
     GList* blocked = blocked_list();
diff --git a/src/xmpp/blocking.c b/src/xmpp/blocking.c
index b16f95cb..7c55b1bf 100644
--- a/src/xmpp/blocking.c
+++ b/src/xmpp/blocking.c
@@ -132,6 +132,7 @@ blocked_add(char* jid, blocked_report reportkind, const char* const message)
     if (reportkind != BLOCKED_NO_REPORT) {
         xmpp_stanza_t* report = xmpp_stanza_new(ctx);
         xmpp_stanza_set_name(report, STANZA_NAME_REPORT);
+        xmpp_stanza_set_ns(report, STANZA_NS_REPORTING);
         if (reportkind == BLOCKED_REPORT_ABUSE) {
             xmpp_stanza_set_attribute(report, STANZA_ATTR_REASON, STANZA_REPORTING_ABUSE);
         } else {
diff --git a/src/xmpp/stanza.h b/src/xmpp/stanza.h
index 47560ce0..52008b1c 100644
--- a/src/xmpp/stanza.h
+++ b/src/xmpp/stanza.h
@@ -243,6 +243,7 @@
 #define STANZA_NS_VOICEREQUEST            "http://jabber.org/protocol/muc#request"
 #define STANZA_NS_JINGLE_MESSAGE          "urn:xmpp:jingle-message:0"
 #define STANZA_NS_JINGLE_RTP              "urn:xmpp:jingle:apps:rtp:1"
+#define STANZA_NS_REPORTING               "urn:xmpp:reporting:1"
 
 #define STANZA_DATAFORM_SOFTWARE "urn:xmpp:dataforms:softwareinfo"