mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-25 14:06:21 +00:00
Merge pull request #1569 from profanity-im/feature/1434-spam-reporting
Add XEP-0377: Spam Reporting
This commit is contained in:
@@ -109,7 +109,7 @@ blocked_ac_reset(void)
|
||||
}
|
||||
|
||||
gboolean
|
||||
blocked_add(char* jid)
|
||||
blocked_add(char* jid, blocked_report reportkind, const char* const message)
|
||||
{
|
||||
GList* found = g_list_find_custom(blocked, jid, (GCompareFunc)g_strcmp0);
|
||||
if (found) {
|
||||
@@ -129,6 +129,31 @@ blocked_add(char* jid)
|
||||
xmpp_stanza_set_name(item, STANZA_NAME_ITEM);
|
||||
xmpp_stanza_set_attribute(item, STANZA_ATTR_JID, jid);
|
||||
|
||||
if (reportkind != BLOCKED_NO_REPORT) {
|
||||
xmpp_stanza_t* report = xmpp_stanza_new(ctx);
|
||||
xmpp_stanza_set_name(report, STANZA_NAME_REPORT);
|
||||
if (reportkind == BLOCKED_REPORT_ABUSE) {
|
||||
xmpp_stanza_set_attribute(report, STANZA_ATTR_REASON, STANZA_REPORTING_ABUSE);
|
||||
} else {
|
||||
xmpp_stanza_set_attribute(report, STANZA_ATTR_REASON, STANZA_REPORTING_SPAM);
|
||||
}
|
||||
|
||||
if (message) {
|
||||
xmpp_stanza_t* text = xmpp_stanza_new(ctx);
|
||||
xmpp_stanza_set_name(text, STANZA_NAME_TEXT);
|
||||
|
||||
xmpp_stanza_t* txt = xmpp_stanza_new(ctx);
|
||||
xmpp_stanza_set_text(txt, message);
|
||||
|
||||
xmpp_stanza_add_child(text, txt);
|
||||
xmpp_stanza_add_child(report, text);
|
||||
xmpp_stanza_release(txt);
|
||||
}
|
||||
|
||||
xmpp_stanza_add_child(item, report);
|
||||
xmpp_stanza_release(report);
|
||||
}
|
||||
|
||||
xmpp_stanza_add_child(block, item);
|
||||
xmpp_stanza_release(item);
|
||||
|
||||
|
||||
@@ -1385,7 +1385,7 @@ _autoping_timed_send(xmpp_conn_t* const conn, void* const userdata)
|
||||
if (connection_supports(XMPP_FEATURE_PING) == FALSE) {
|
||||
log_warning("Server doesn't advertise %s feature, disabling autoping.", XMPP_FEATURE_PING);
|
||||
prefs_set_autoping(0);
|
||||
cons_show_error("Server ping not supported, autoping disabled.");
|
||||
cons_show_error("Server ping not supported (%s), autoping disabled.", XMPP_FEATURE_PING);
|
||||
xmpp_conn_t* conn = connection_get_conn();
|
||||
xmpp_timed_handler_delete(conn, _autoping_timed_send);
|
||||
return 1;
|
||||
@@ -2586,7 +2586,7 @@ iq_mam_request(ProfChatWin* win)
|
||||
{
|
||||
if (connection_supports(XMPP_FEATURE_MAM2) == FALSE) {
|
||||
log_warning("Server doesn't advertise %s feature.", XMPP_FEATURE_MAM2);
|
||||
cons_show_error("Server doesn't support MAM.");
|
||||
cons_show_error("Server doesn't support MAM (%s).", XMPP_FEATURE_MAM2);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -122,6 +122,7 @@
|
||||
#define STANZA_NAME_AFTER "after"
|
||||
#define STANZA_NAME_USERNAME "username"
|
||||
#define STANZA_NAME_PROPOSE "propose"
|
||||
#define STANZA_NAME_REPORT "report"
|
||||
|
||||
// error conditions
|
||||
#define STANZA_NAME_BAD_REQUEST "bad-request"
|
||||
@@ -245,6 +246,9 @@
|
||||
|
||||
#define STANZA_DATAFORM_SOFTWARE "urn:xmpp:dataforms:softwareinfo"
|
||||
|
||||
#define STANZA_REPORTING_ABUSE "urn:xmpp:reporting:abuse"
|
||||
#define STANZA_REPORTING_SPAM "urn:xmpp:reporting:spam"
|
||||
|
||||
typedef struct caps_stanza_t
|
||||
{
|
||||
char* hash;
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
#define XMPP_FEATURE_USER_AVATAR_METADATA_NOTIFY "urn:xmpp:avatar:metadata+notify"
|
||||
#define XMPP_FEATURE_LAST_MESSAGE_CORRECTION "urn:xmpp:message-correct:0"
|
||||
#define XMPP_FEATURE_MAM2 "urn:xmpp:mam:2"
|
||||
#define XMPP_FEATURE_SPAM_REPORTING "urn:xmpp:reporting:1"
|
||||
|
||||
typedef enum {
|
||||
JABBER_CONNECTING,
|
||||
@@ -89,6 +90,12 @@ typedef enum {
|
||||
INVITE_MEDIATED
|
||||
} jabber_invite_t;
|
||||
|
||||
typedef enum {
|
||||
BLOCKED_NO_REPORT,
|
||||
BLOCKED_REPORT_ABUSE,
|
||||
BLOCKED_REPORT_SPAM
|
||||
} blocked_report;
|
||||
|
||||
typedef struct bookmark_t
|
||||
{
|
||||
char* barejid;
|
||||
@@ -286,7 +293,7 @@ void roster_send_add_new(const char* const barejid, const char* const name);
|
||||
void roster_send_remove(const char* const barejid);
|
||||
|
||||
GList* blocked_list(void);
|
||||
gboolean blocked_add(char* jid);
|
||||
gboolean blocked_add(char* jid, blocked_report reportkind, const char* const message);
|
||||
gboolean blocked_remove(char* jid);
|
||||
char* blocked_ac_find(const char* const search_str, gboolean previous, void* context);
|
||||
void blocked_ac_reset(void);
|
||||
|
||||
Reference in New Issue
Block a user