about summary refs log tree commit diff stats
path: root/src/server_events.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-01-13 20:38:19 +0000
committerJames Booth <boothj5@gmail.com>2014-01-13 20:38:19 +0000
commitecf323de317ffb541e03eab445e611058d4e67e9 (patch)
treea2e96c49004b983d321ad242daae8f5277934477 /src/server_events.c
parent60820007ee6b5a1bc634904d35f9f10292a04195 (diff)
downloadprofani-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.c13
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);
     }