diff options
Diffstat (limited to 'plugins/MirOTR')
-rw-r--r-- | plugins/MirOTR/src/otr.h | 3 | ||||
-rw-r--r-- | plugins/MirOTR/src/svcs_menu.cpp | 27 |
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; |