diff options
Diffstat (limited to 'plugins/SecureIM/crypt_lists.cpp')
-rw-r--r-- | plugins/SecureIM/crypt_lists.cpp | 327 |
1 files changed, 0 insertions, 327 deletions
diff --git a/plugins/SecureIM/crypt_lists.cpp b/plugins/SecureIM/crypt_lists.cpp deleted file mode 100644 index 7b68fbd250..0000000000 --- a/plugins/SecureIM/crypt_lists.cpp +++ /dev/null @@ -1,327 +0,0 @@ -#include "commonheaders.h"
-
-pSupPro proto=NULL;
-pUinKey clist=NULL;
-int proto_cnt = 0;
-int clist_cnt = 0;
-int clist_inc = 100;
-
-
-void loadSupportedProtocols() {
- int numberOfProtocols;
- PROTOCOLDESCRIPTOR **protos;
- LPSTR szNames = myDBGetString(0,szModuleName,"protos");
- if ( szNames && strchr(szNames,':') == NULL ) {
- LPSTR tmp = (LPSTR) mir_alloc(2048); int j=0;
- for(int i=0; szNames[i]; i++) {
- if ( szNames[i] == ';' ) {
- memcpy((PVOID)(tmp+j),(PVOID)":1:0:0",6); j+=6;
- }
- tmp[j++] = szNames[i];
- }
- tmp[j] = '\0';
- SAFE_FREE(szNames); szNames = tmp;
- DBWriteContactSettingString(0,szModuleName,"protos",szNames);
- }
-
- CallService(MS_PROTO_ENUMPROTOCOLS, (WPARAM)&numberOfProtocols, (LPARAM)&protos);
-
- for (int i=0;i<numberOfProtocols;i++) {
-// if (protos[i]->type == PROTOTYPE_PROTOCOL && protos[i]->szName && (CallProtoService(protos[i]->szName,PS_GETCAPS,PFLAGNUM_2,0)||strcmp(protos[i]->szName,"MetaContacts")==0)) {
- if (protos[i]->type == PROTOTYPE_PROTOCOL && protos[i]->szName && CallProtoService(protos[i]->szName,PS_GETCAPS,PFLAGNUM_2,0)) {
- int j = proto_cnt; proto_cnt++;
- proto = (pSupPro) mir_realloc(proto,sizeof(SupPro)*proto_cnt);
- memset(&proto[j],0,sizeof(SupPro));
- proto[j].name = mir_strdup(protos[i]->szName);
- if ( szNames ) {
- if ( proto[j].name ) {
- char tmp[128]; strcpy(tmp,proto[j].name); strcat(tmp,":");
- LPSTR szName = strstr(szNames,tmp);
- if ( szName ) {
- szName = strchr(szName,':');
- if ( szName ) {
- proto[j].inspecting = (*++szName == '1');
- szName = strchr(szName,':');
- if ( szName ) {
- proto[j].split_on = atoi(++szName); proto[j].tsplit_on = proto[j].split_on;
- szName = strchr(szName,':');
- if ( szName ) {
- proto[j].split_off = atoi(++szName); proto[j].tsplit_off = proto[j].split_off;
- }
- }
- }
- }
- }
- }
- else {
- proto[j].inspecting = true;
- }
- }
- }
- SAFE_FREE(szNames);
-}
-
-
-void freeSupportedProtocols() {
- for (int j=0;j<proto_cnt;j++) {
- mir_free(proto[j].name);
- }
- SAFE_FREE(proto);
- proto_cnt = 0;
-}
-
-
-pSupPro getSupPro(HANDLE hContact) {
- int j;
- for(j=0;j<proto_cnt && !CallService(MS_PROTO_ISPROTOONCONTACT, (WPARAM)hContact, (LPARAM)proto[j].name);j++);
- if(j==proto_cnt) return NULL;
- return &proto[j];
-}
-
-
-void MoveToFirstInFilterList(HANDLE hContact) {
- int i;
- char str[10];
- DBVARIANT dbv;
-
- for(i=0;;i++) {
- mir_itoa(i,str,10);
- if ( DBGetContactSettingString(hContact,"_Filter",str,&dbv)) break;
- if ( !strcmp(szModuleName,dbv.pszVal)) { // нашли мой модуль
- if ( i==0 ) return;
- DBGetContactSettingString(hContact,"_Filter","0",&dbv);
- DBWriteContactSettingString(hContact,"_Filter","0",szModuleName);
- DBWriteContactSettingString(hContact,"_Filter",str,dbv.pszVal);
- mir_free(dbv.pszVal);
- return;
- }
- mir_free(dbv.pszVal);
- }
-}
-
-
-void MoveToLastInFilterList(HANDLE hContact) {
- int i,j;
- char str[10];
- char end[10];
- DBVARIANT dbv;
-
- for(i=0;;i++) {
- mir_itoa(i,str,10);
- if ( DBGetContactSettingString(hContact,"_Filter",str,&dbv)) break;
- if ( !strcmp(szModuleName,dbv.pszVal)) { // нашли мой модуль
- j=i;
- }
- mir_free(dbv.pszVal);
- }
- i--;
- if ( j==i ) return;
- mir_itoa(i,end,10);
- mir_itoa(j,str,10);
- DBGetContactSettingString(hContact,"_Filter",end,&dbv);
- DBWriteContactSettingString(hContact,"_Filter",str,dbv.pszVal);
- DBWriteContactSettingString(hContact,"_Filter",end,szModuleName);
- mir_free(dbv.pszVal);
- return;
-}
-
-
-// add contact in the list of secureIM users
-pUinKey addContact(HANDLE hContact) {
- int j;
- if (hContact) {
-// LPSTR szProto = (LPSTR) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0);
- pSupPro proto = getSupPro(hContact);
- if ( proto ) {
- if ( !CallService(MS_PROTO_ISPROTOONCONTACT, (WPARAM)hContact, (LPARAM)szModuleName))
- CallService(MS_PROTO_ADDTOCONTACT, (WPARAM)hContact, (LPARAM)szModuleName);
- MoveToLastInFilterList(hContact);
- for(j=0;j<clist_cnt;j++) {
- if ( !clist[j].hContact ) break;
- }
- if(j==clist_cnt) {
- clist_cnt+=clist_inc;
- clist = (pUinKey) mir_realloc(clist,sizeof(UinKey)*clist_cnt);
- memset(&clist[j],0,sizeof(UinKey)*clist_inc);
- }
- else
- memset(&clist[j],0,sizeof(UinKey));
- clist[j].header = HEADER;
- clist[j].footer = FOOTER;
- clist[j].hContact = hContact;
- clist[j].proto = proto;
- clist[j].mode = DBGetContactSettingByte(hContact, szModuleName, "mode", 99);
- if ( clist[j].mode == 99 ) {
- if ( isContactPGP(hContact)) clist[j].mode = MODE_PGP;
- else
- if ( isContactGPG(hContact)) clist[j].mode = MODE_GPG;
- else
- clist[j].mode = MODE_RSAAES;
- DBWriteContactSettingByte(hContact, szModuleName, "mode", clist[j].mode);
- }
- clist[j].status = DBGetContactSettingByte(hContact, szModuleName, "StatusID", STATUS_ENABLED);
- clist[j].gpgMode = DBGetContactSettingByte(hContact, szModuleName, "gpgANSI", 0);
- return &clist[j];
- }
- }
- return NULL;
-}
-
-
-// delete contact from the list of secureIM users
-void delContact(HANDLE hContact) {
- if (hContact) {
- int j;
- for(j=0;j<clist_cnt;j++) {
- if(clist[j].hContact == hContact) {
- cpp_delete_context(clist[j].cntx); clist[j].cntx = 0;
- clist[j].hContact = 0;
- SAFE_FREE(clist[j].tmp);
- SAFE_FREE(clist[j].msgSplitted);
- clist[j].header = clist[j].footer = EMPTYH;
- return;
- }
- }
- }
-}
-
-
-// load contactlist in the list of secureIM users
-void loadContactList() {
-
- freeContactList();
- loadSupportedProtocols();
-
- HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0);
- while (hContact) {
- addContact(hContact);
- hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0);
- }
-}
-
-
-// free list of secureIM users
-void freeContactList() {
-
- for(int j=0;j<clist_cnt;j++) {
- cpp_delete_context(clist[j].cntx);
- SAFE_FREE(clist[j].tmp);
- SAFE_FREE(clist[j].msgSplitted);
- }
- SAFE_FREE(clist);
- clist_cnt = 0;
-
- freeSupportedProtocols();
-}
-
-
-// find user in the list of secureIM users and add him, if unknow
-pUinKey getUinKey(HANDLE hContact) {
- int j;
- for(j=0;j<clist_cnt && clist[j].hContact!=hContact;j++);
- if (j==clist_cnt) return addContact(hContact);
- return &clist[j];
-}
-
-
-pUinKey getUinCtx(HANDLE cntx) {
- int j;
- for(j=0;j<clist_cnt && clist[j].cntx!=cntx;j++);
- if (j==clist_cnt) return NULL;
- return &clist[j];
-}
-
-
-// add message to user queue for send later
-void addMsg2Queue(pUinKey ptr,WPARAM wParam,LPSTR szMsg) {
-
-#if defined(_DEBUG) || defined(NETLIB_LOG)
- Sent_NetLog("addMsg2Queue: msg: -----\n%s\n-----\n",szMsg);
-#endif
- pWM ptrMessage;
-
- EnterCriticalSection(&localQueueMutex);
-
- if(ptr->msgQueue==NULL){
- // create new
- ptr->msgQueue = (pWM) mir_alloc(sizeof(struct waitingMessage));
- ptrMessage = ptr->msgQueue;
- }
- else {
- // add to list
- ptrMessage = ptr->msgQueue;
- while (ptrMessage->nextMessage) {
- ptrMessage = ptrMessage->nextMessage;
- }
- ptrMessage->nextMessage = (pWM) mir_alloc(sizeof(struct waitingMessage));
- ptrMessage = ptrMessage->nextMessage;
- }
-
- ptrMessage->wParam = wParam;
- ptrMessage->nextMessage = NULL;
-
- if(wParam & PREF_UNICODE) {
- int slen = (int)strlen(szMsg)+1;
- int wlen = (int)wcslen((wchar_t *)(szMsg+slen))+1;
- ptrMessage->Message = (LPSTR) mir_alloc(slen+wlen*sizeof(WCHAR));
- memcpy(ptrMessage->Message,szMsg,slen+wlen*sizeof(WCHAR));
- }
- else{
- ptrMessage->Message = mir_strdup(szMsg);
- }
-
- LeaveCriticalSection(&localQueueMutex);
-}
-
-
-void getContactNameA(HANDLE hContact, LPSTR szName) {
- strcpy(szName,(LPCSTR)CallService(MS_CLIST_GETCONTACTDISPLAYNAME,(WPARAM)hContact,0));
-}
-
-
-void getContactName(HANDLE hContact, LPSTR szName) {
- if ( bCoreUnicode ) wcscpy((LPWSTR)szName,(LPWSTR)CallService(MS_CLIST_GETCONTACTDISPLAYNAME,(WPARAM)hContact,GSMDF_UNICODE));
- else getContactNameA(hContact, szName);
-}
-
-
-void getContactUinA(HANDLE hContact, LPSTR szUIN) {
-
- *szUIN = 0;
-
- pSupPro ptr = getSupPro(hContact);
- if (!ptr) return;
-
- DBVARIANT dbv_uniqueid;
- LPSTR uID = (LPSTR) CallProtoService(ptr->name, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0);
- if ( uID==(LPSTR)CALLSERVICE_NOTFOUND ) uID = 0; // Billy_Bons
- if ( uID && DBGetContactSetting(hContact, ptr->name, uID, &dbv_uniqueid)==0 ) {
- if (dbv_uniqueid.type == DBVT_WORD)
- sprintf(szUIN, "%u [%s]", dbv_uniqueid.wVal, ptr->name);
- else
- if (dbv_uniqueid.type == DBVT_DWORD)
- sprintf(szUIN, "%u [%s]", (UINT)dbv_uniqueid.dVal, ptr->name);
- else
- if (dbv_uniqueid.type == DBVT_BLOB)
- sprintf(szUIN, "%s [%s]", dbv_uniqueid.pbVal, ptr->name);
- else
- sprintf(szUIN, "%s [%s]", dbv_uniqueid.pszVal, ptr->name);
- }
- else {
- strcpy(szUIN, "=== unknown ===");
- }
- DBFreeVariant(&dbv_uniqueid);
-}
-
-
-void getContactUin(HANDLE hContact, LPSTR szUIN) {
- getContactUinA(hContact, szUIN);
- if ( bCoreUnicode && *szUIN ) {
- LPWSTR tmp = mir_a2u(szUIN);
- wcscpy((LPWSTR)szUIN, tmp);
- mir_free(tmp);
- }
-}
-
-
-// EOF
|