summaryrefslogtreecommitdiff
path: root/plugins/MirOTR
diff options
context:
space:
mode:
authorRené Schümann <white06tiger@gmail.com>2015-03-26 20:39:52 +0000
committerRené Schümann <white06tiger@gmail.com>2015-03-26 20:39:52 +0000
commit33343901dabdc08991f0378781eccf53d0d7fac1 (patch)
tree6aab35b6ed11ba0d2b905f72942f67b16838133c /plugins/MirOTR
parent958b2c8f49e4b05dd047e016def67690e31e09ca (diff)
MirOTR: fixed ICQ problem as it's dropping all messages with "otr.cypherpunks.ca" in it and thus every manually started session (which then never starts)
This change actually improves the invite message as HTML is gone and the message is send in up to two languages (English + user) git-svn-id: http://svn.miranda-ng.org/main/trunk@12506 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/MirOTR')
-rw-r--r--plugins/MirOTR/src/otr.h3
-rw-r--r--plugins/MirOTR/src/svcs_menu.cpp27
2 files changed, 30 insertions, 0 deletions
diff --git a/plugins/MirOTR/src/otr.h b/plugins/MirOTR/src/otr.h
index 9691cbbfc7..c91c173784 100644
--- a/plugins/MirOTR/src/otr.h
+++ b/plugins/MirOTR/src/otr.h
@@ -5,6 +5,9 @@ extern OtrlMessageAppOps ops;
/// @todo : add OTR version 3 instance tag choice (currently we use the most secure/active one)
#define MIROTR_PROTO_HELLO "?OTRv23?"
+/* OTR link normally is https://otr.cypherpunks.ca/ but it's blocked by ICQ as of March 2015 (even something like "ot-r.cyp her_ pun ks. ca")
+ It might be a good idea to use http://wikipedia.org/wiki/Off-the-Record_Messaging instead as it's not yet blocked by ICQ but might still help users to find a client/plugin */
+#define MIROTR_PROTO_HELLO_MSG _T(" has requested an Off-the-Record private conversation. However, you do not have a plugin to support that.\nSee http://wikipedia.org/wiki/Off-the-Record_Messaging for more information.")
extern "C" {
diff --git a/plugins/MirOTR/src/svcs_menu.cpp b/plugins/MirOTR/src/svcs_menu.cpp
index 4ed3f7a0d9..5467416408 100644
--- a/plugins/MirOTR/src/svcs_menu.cpp
+++ b/plugins/MirOTR/src/svcs_menu.cpp
@@ -14,9 +14,36 @@ int StartOTR(MCONTACT hContact) {
if(pol == CONTACT_DEFAULT_POLICY) pol = options.default_policy;
lib_cs_lock();
+ #ifndef MIROTR_PROTO_HELLO_MSG
char *msg = otrl_proto_default_query_msg(MODULENAME, pol);
otr_gui_inject_message((void*)hContact, proto, proto, uname, msg ? msg : MIROTR_PROTO_HELLO);
free(msg);
+ #else
+ TCHAR* nick=ProtoGetNickname(proto);
+ if(nick){
+ TCHAR msg[1024];
+ TCHAR* msgend = msg+SIZEOF(msg)-1;
+ TCHAR* msgoff = msg;
+ for(const char* c=MIROTR_PROTO_HELLO; *c; *msgoff++=*c++);
+ *msgoff++ = '\n';
+ for(const TCHAR* c=nick; *c && msgoff<msgend; *msgoff++=*c++);
+ for(const TCHAR* c=MIROTR_PROTO_HELLO_MSG; *c && msgoff<msgend; *msgoff++=*c++);
+ LCID langid = Langpack_GetDefaultLocale();
+ if(langid != 0x0409/*US*/ && langid != 0x1009/*CA*/ && langid != 0x0809/*GB*/){ // non english
+ const TCHAR* translated=TranslateTS(MIROTR_PROTO_HELLO_MSG);
+ if(_tcscmp(MIROTR_PROTO_HELLO_MSG,translated)){
+ *msgoff++ = '\n';
+ for(const TCHAR* c=nick; *c && msgoff<msgend; *msgoff++=*c++);
+ for(const TCHAR* c=translated; *c && msgoff<msgend; *msgoff++=*c++);
+ }
+ }
+ *msgoff='\0';
+ mir_free(nick);
+ char* msg_utf8 = mir_utf8encodeT(msg);
+ otr_gui_inject_message((void*)hContact, proto, proto, uname, msg_utf8 ? msg_utf8 : MIROTR_PROTO_HELLO);
+ mir_free(msg_utf8);
+ }
+ #endif
lib_cs_unlock();
mir_free(uname);
return 0;