diff options
author | Michael Vetter <jubalh@iodoru.org> | 2019-10-18 10:40:24 +0200 |
---|---|---|
committer | Michael Vetter <jubalh@iodoru.org> | 2019-10-18 10:40:24 +0200 |
commit | 430b2eaa0d3f8638f3442b3dca26d6bf4a4891cb (patch) | |
tree | 058d9d4e1f7dd84e53d96d7367396ab65868522b /src/event/server_events.c | |
parent | 53640f6e970d9387f3da110b69cdff81b1eace88 (diff) | |
download | profani-tty-430b2eaa0d3f8638f3442b3dca26d6bf4a4891cb.tar.gz |
Log incoming MUC messages if origin-id sais they dont come from us
Regards https://github.com/profanity-im/profanity/issues/1201
Diffstat (limited to 'src/event/server_events.c')
-rw-r--r-- | src/event/server_events.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/event/server_events.c b/src/event/server_events.c index 0417f35d..b875c22e 100644 --- a/src/event/server_events.c +++ b/src/event/server_events.c @@ -49,6 +49,7 @@ #include "event/common.h" #include "plugins/plugins.h" #include "ui/window_list.h" +#include "xmpp/connection.h" #include "xmpp/muc.h" #include "xmpp/chat_session.h" #include "xmpp/roster_list.h" @@ -294,8 +295,25 @@ sv_ev_room_message(ProfMessage *message) char *mynick = muc_nick(mucwin->roomjid); - // only log messages from others. we log our own via mucwin_outgoing_msg() - if (g_strcmp0(mynick, message->jid->resourcepart) != 0) { + // messages from ourselves + if (g_strcmp0(mynick, message->jid->resourcepart) == 0) { + // test if message was sent from this client + // we check the </origin-id> for this we calculate a hash into it so we can detect + // whether this client sent it. See connection_create_stanza_id() + gsize tmp_len; + char *tmp = (char*)g_base64_decode(message->id, &tmp_len); + if (tmp_len > 10) { + // log if not from this client + if (g_strcmp0(&tmp[10], connection_get_profanity_identifier()) != 0) { + if (message->enc == PROF_MSG_ENC_OMEMO) { + groupchat_log_omemo_msg_in(message->jid->barejid, message->jid->resourcepart, (char*)tmp); + } else { + groupchat_log_msg_in(message->jid->barejid, message->jid->resourcepart, message->plain); + } + } + } + // messages from others + } else { if (message->enc == PROF_MSG_ENC_OMEMO) { groupchat_log_omemo_msg_in(message->jid->barejid, message->jid->resourcepart, message->plain); } else { |