diff options
author | James Booth <boothj5@gmail.com> | 2014-01-13 20:38:19 +0000 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2014-01-13 20:38:19 +0000 |
commit | ecf323de317ffb541e03eab445e611058d4e67e9 (patch) | |
tree | a2e96c49004b983d321ad242daae8f5277934477 /src/server_events.c | |
parent | 60820007ee6b5a1bc634904d35f9f10292a04195 (diff) | |
download | profani-tty-ecf323de317ffb541e03eab445e611058d4e67e9.tar.gz |
Implemented chat logging options for OTR messages
on - Log OTR messages as plaintext off - Do not log OTR messages redact - Log, but replace the text with '[redacted]' Defaults to redact
Diffstat (limited to 'src/server_events.c')
-rw-r--r-- | src/server_events.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/server_events.c b/src/server_events.c index 792415be..57e04318 100644 --- a/src/server_events.c +++ b/src/server_events.c @@ -176,9 +176,12 @@ void handle_incoming_message(char *from, char *message, gboolean priv) { #ifdef HAVE_LIBOTR + gboolean was_decrypted = FALSE; char *newmessage; if (!priv) { - newmessage = otr_decrypt_message(from, message); + newmessage = otr_decrypt_message(from, message, &was_decrypted); + + // internal OTR message if (newmessage == NULL) { return; } @@ -193,7 +196,13 @@ handle_incoming_message(char *from, char *message, gboolean priv) Jid *from_jid = jid_create(from); const char *jid = jabber_get_fulljid(); Jid *jidp = jid_create(jid); - chat_log_chat(jidp->barejid, from_jid->barejid, newmessage, PROF_IN_LOG, NULL); + + if (!was_decrypted || (strcmp(prefs_get_string(PREF_OTR_LOG), "on") == 0)) { + chat_log_chat(jidp->barejid, from_jid->barejid, newmessage, PROF_IN_LOG, NULL); + } else if (strcmp(prefs_get_string(PREF_OTR_LOG), "redact") == 0) { + chat_log_chat(jidp->barejid, from_jid->barejid, "[redacted]", PROF_IN_LOG, NULL); + } + jid_destroy(jidp); jid_destroy(from_jid); } |