void import_ping_address(int index, PINGADDRESS &pa) { DBVARIANT dbv; char buf[256]; mir_snprintf(buf, 256, "Address%d", index); if(!DBGetContactSetting(0, "PingPlug", buf, &dbv)) { strncpy(pa.pszName, dbv.pszVal, MAX_PINGADDRESS_STRING_LENGTH); DBFreeVariant(&dbv); } else strcpy(pa.pszName, Translate("Unknown Address")); mir_snprintf(buf, 256, "Label%d", index); if(!DBGetContactSetting(0, "PingPlug", buf, &dbv)) { strncpy(pa.pszLabel, dbv.pszVal, MAX_PINGADDRESS_STRING_LENGTH); DBFreeVariant(&dbv); } else strcpy(pa.pszLabel, Translate("Unknown")); mir_snprintf(buf, 256, "Port%d", index); pa.port = (int)DBGetContactSettingDword(0, "PingPlug", buf, -1); mir_snprintf(buf, 256, "Proto%d", index); if(!DBGetContactSetting(0, "PingPlug", buf, &dbv)) { strncpy(pa.pszProto, dbv.pszVal, MAX_PINGADDRESS_STRING_LENGTH); DBFreeVariant(&dbv); mir_snprintf(buf, 256, "Status%d", index); pa.set_status = DBGetContactSettingWord(0, "PingPlug", buf, ID_STATUS_ONLINE); mir_snprintf(buf, 256, "Status2%d", index); pa.get_status = DBGetContactSettingWord(0, "PingPlug", buf, ID_STATUS_OFFLINE); } else pa.pszProto[0] = '\0'; pa.responding = false; pa.round_trip_time = 0; pa.miss_count = 0; pa.index = index; pa.pszCommand[0] = '\0'; pa.pszParams[0] = '\0'; pa.item_id = 0; mir_snprintf(buf, 256, "Enabled%d", index); if(DBGetContactSettingByte(0, "PingPlug", buf, 1) == 1) pa.status = PS_NOTRESPONDING; else pa.status = PS_DISABLED; }
int TlenMenuHandleInbox(WPARAM wParam, LPARAM lParam) { DBVARIANT dbv; char *login = NULL, *password = NULL; char szFileName[ MAX_PATH ]; if (DBGetContactSettingByte(NULL, jabberProtoName, "SavePassword", TRUE) == TRUE) { int tPathLen; CallService( MS_DB_GETPROFILEPATH, MAX_PATH, (LPARAM) szFileName ); tPathLen = strlen( szFileName ); tPathLen += mir_snprintf( szFileName + tPathLen, MAX_PATH - tPathLen, "\\%s\\", jabberModuleName); CreateDirectoryA( szFileName, NULL ); mir_snprintf( szFileName + tPathLen, MAX_PATH - tPathLen, "openinbox.html" ); if (!DBGetContactSetting(NULL, jabberProtoName, "LoginName", &dbv)) { login = mir_strdup(dbv.pszVal); DBFreeVariant(&dbv); } if (!DBGetContactSetting(NULL, jabberProtoName, "Password", &dbv)) { CallService(MS_DB_CRYPT_DECODESTRING, strlen(dbv.pszVal)+1, (LPARAM) dbv.pszVal); password = mir_strdup(dbv.pszVal); DBFreeVariant(&dbv); } } if (login != NULL && password != NULL) { FILE *out; out = fopen( szFileName, "wt" ); if ( out != NULL ) { fprintf(out, "<html><head></head><body OnLoad=\"document.forms[0].submit();\">" "<form action=\"http://poczta.o2.pl/index.php\" method=\"post\" name=\"login_form\">" "<input type=\"hidden\" name=\"username\" value=\"%s\">" "<input type=\"hidden\" name=\"password\" value=\"%s\">" "</form></body></html>", login, password); fclose( out ); } else { strcat(szFileName, "http://poczta.o2.pl/"); } } else { strcat(szFileName, "http://poczta.o2.pl/"); } mir_free(login); mir_free(password); CallService(MS_UTILS_OPENURL, (WPARAM) 1, (LPARAM) szFileName); return 0; }
LPSTR myDBGetString(HANDLE hContact,const char *szModule,const char *szSetting) { char *val=NULL; DBVARIANT dbv; dbv.type = DBVT_ASCIIZ; DBGetContactSetting(hContact,szModule,szSetting,&dbv); if( dbv.pszVal && (dbv.type==DBVT_ASCIIZ || dbv.type==DBVT_UTF8 || dbv.type==DBVT_WCHAR) ) val = mir_strdup(dbv.pszVal); DBFreeVariant(&dbv); return val; }
char *JabberJIDFromHContact(TlenProtocol *proto, HANDLE hContact) { char *p = NULL; DBVARIANT dbv; if (!DBGetContactSetting(hContact, proto->iface.m_szModuleName, "jid", &dbv)) { p = mir_strdup(dbv.pszVal); DBFreeVariant(&dbv); } return p; }
int __cdecl rsa_check_pub(HANDLE context, PBYTE pub, int pubLen, PBYTE sig, int sigLen) { int v=0, k=0; pUinKey ptr = getUinCtx(context); if(!ptr) return 0; LPSTR cnm = (LPSTR) mir_alloc(NAMSIZE); getContactNameA(ptr->hContact,cnm); LPSTR uin = (LPSTR) mir_alloc(KEYSIZE); getContactUinA(ptr->hContact,uin); LPSTR msg = (LPSTR) mir_alloc(MSGSIZE); LPSTR sha = mir_strdup(to_hex(sig,sigLen)); LPSTR sha_old = NULL; #if defined(_DEBUG) || defined(NETLIB_LOG) Sent_NetLog("rsa_check_pub: %s %s %s", cnm, uin, sha); #endif DBVARIANT dbv; dbv.type = DBVT_BLOB; if( DBGetContactSetting(ptr->hContact,szModuleName,"rsa_pub",&dbv) == 0 ) { k = 1; PBYTE buf = (PBYTE) alloca(sigLen); int len; exp->rsa_get_hash((PBYTE)dbv.pbVal,dbv.cpbVal,(PBYTE)buf,&len); sha_old = mir_strdup(to_hex(buf,len)); DBFreeVariant(&dbv); } if( bAAK ) { if( k ) mir_snprintf(msg,MSGSIZE,Translate(sim523),cnm,uin,sha,sha_old); else mir_snprintf(msg,MSGSIZE,Translate(sim521),cnm,uin,sha); showPopUpKRmsg(ptr->hContact,msg); HistoryLog(ptr->hContact,msg); v = 1; #if defined(_DEBUG) || defined(NETLIB_LOG) Sent_NetLog("rsa_check_pub: auto accepted"); #endif } else { if( k ) mir_snprintf(msg,MSGSIZE,Translate(sim522),cnm,sha,sha_old); else mir_snprintf(msg,MSGSIZE,Translate(sim520),cnm,sha); v = (msgbox(0,msg,szModuleName,MB_YESNO|MB_ICONQUESTION)==IDYES); #if defined(_DEBUG) || defined(NETLIB_LOG) Sent_NetLog("rsa_check_pub: manual accepted %d",v); #endif } if(v) { DBCONTACTWRITESETTING cws; cws.szModule = szModuleName; cws.szSetting = "rsa_pub"; cws.value.type = DBVT_BLOB; cws.value.pbVal = pub; cws.value.cpbVal = pubLen; CallService(MS_DB_CONTACT_WRITESETTING, (WPARAM)ptr->hContact, (LPARAM)&cws); ptr->keyLoaded = true; } mir_free(cnm); mir_free(uin); mir_free(msg); mir_free(sha); SAFE_FREE(sha_old); return v; }
void FinalCommandSetup(void) { DBVARIANT dbv; if(!DBGetContactSetting(0, "db3x", "ExitCommand", &dbv) && dbv.type == DBVT_ASCIIZ) { strncpy(exit_command, dbv.pszVal, MAX_PATH); command_valid = TRUE; DBFreeVariant(&dbv); if(!DBGetContactSetting(0, "db3x", "ExitCommandParams", &dbv) && dbv.type == DBVT_ASCIIZ) { strncpy(exit_command_params, dbv.pszVal, MAX_PATH); command_params_valid = TRUE; DBFreeVariant(&dbv); } if(!DBGetContactSetting(0, "db3x", "ExitCommandDir", &dbv) && dbv.type == DBVT_ASCIIZ) { strncpy(exit_command_dir, dbv.pszVal, MAX_PATH); command_dir_valid = TRUE; DBFreeVariant(&dbv); } } }
static int TlenPrebuildContactMenu(void *ptr, WPARAM wParam, LPARAM lParam) { HANDLE hContact; DBVARIANT dbv; CLISTMENUITEM clmi = {0}; JABBER_LIST_ITEM *item; TlenProtocol *proto = (TlenProtocol *)ptr; clmi.cbSize = sizeof(CLISTMENUITEM); if ((hContact=(HANDLE) wParam)!=NULL && proto->isOnline) { if (!DBGetContactSetting(hContact, proto->iface.m_szModuleName, "jid", &dbv)) { if ((item=JabberListGetItemPtr(proto, LIST_ROSTER, dbv.pszVal)) != NULL) { if (item->subscription==SUB_NONE || item->subscription==SUB_FROM) clmi.flags = CMIM_FLAGS; else clmi.flags = CMIM_FLAGS|CMIF_HIDDEN; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactRequestAuth, (LPARAM) &clmi); if (item->subscription==SUB_NONE || item->subscription==SUB_TO) clmi.flags = CMIM_FLAGS; else clmi.flags = CMIM_FLAGS|CMIF_HIDDEN; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactGrantAuth, (LPARAM) &clmi); if (item->status!=ID_STATUS_OFFLINE) clmi.flags = CMIM_FLAGS; else clmi.flags = CMIM_FLAGS|CMIF_HIDDEN; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactMUC, (LPARAM) &clmi); if (item->status!=ID_STATUS_OFFLINE && !TlenVoiceIsInUse(proto)) clmi.flags = CMIM_FLAGS; else clmi.flags = CMIM_FLAGS|CMIF_HIDDEN; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactVoice, (LPARAM) &clmi); if (item->status!=ID_STATUS_OFFLINE) clmi.flags = CMIM_FLAGS; else clmi.flags = CMIM_FLAGS|CMIF_HIDDEN; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuPicture, (LPARAM) &clmi); DBFreeVariant(&dbv); return 0; } DBFreeVariant(&dbv); } } clmi.flags = CMIM_FLAGS|CMIF_HIDDEN; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactMUC, (LPARAM) &clmi); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactVoice, (LPARAM) &clmi); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactRequestAuth, (LPARAM) &clmi); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactGrantAuth, (LPARAM) &clmi); return 0; }
void CIcqProto::setStatusMsgVar(HANDLE hContact, char* szStatusMsg, bool isAnsi) { if (szStatusMsg && szStatusMsg[0]) { if (isAnsi) { char* szStatusNote = getSettingStringUtf(hContact, DBSETTING_STATUS_NOTE, ""); wchar_t* szStatusNoteW = make_unicode_string(szStatusNote); int len = (int)wcslen(szStatusNoteW) * 3 + 1; char* szStatusNoteAnsi = (char*)alloca(len); WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, szStatusNoteW, -1, szStatusNoteAnsi, len, NULL, NULL); bool notmatch = false; for (int i=0; ;++i) { if (szStatusNoteAnsi[i] != szStatusMsg[i] && szStatusNoteAnsi[i] != '?' && szStatusMsg[i] != '?') { notmatch = true; break; } if (!szStatusNoteAnsi[i] || !szStatusMsg[i]) break; } szStatusMsg = notmatch ? ansi_to_utf8(szStatusMsg) : szStatusNote; SAFE_FREE(&szStatusNoteW); if (notmatch) SAFE_FREE(&szStatusNote); } char* oldStatusMsg = NULL; DBVARIANT dbv; if (!DBGetContactSetting(hContact, "CList", "StatusMsg", &dbv)) { switch (dbv.type) { case DBVT_UTF8: oldStatusMsg = null_strdup(dbv.pszVal); break; case DBVT_WCHAR: oldStatusMsg = make_utf8_string(dbv.pwszVal); break; } ICQFreeVariant(&dbv); } if (!oldStatusMsg || strcmp(oldStatusMsg, szStatusMsg)) setSettingStringUtf(hContact, "CList", "StatusMsg", szStatusMsg); SAFE_FREE(&oldStatusMsg); if (isAnsi) SAFE_FREE(&szStatusMsg); } else DBDeleteContactSetting(hContact, "CList", "StatusMsg"); }
BYTE isContactSecured(HANDLE hContact) { // нужна проверка на Offline и в этом случае другие статусы if (!clist_cnt) return 0; BYTE r=0; if( isProtoMetaContacts(hContact) ) hContact = getMostOnline(hContact); // возьмем тот, через который пойдет сообщение for(int j=0;j<clist_cnt;j++) { if( clist[j].hContact == hContact ) { if( !clist[j].proto->inspecting ) break; DBVARIANT dbv; r=clist[j].mode; switch(r) { case MODE_NATIVE: if(cpp_keyx(clist[j].cntx)!=0) r|=SECURED; break; case MODE_PGP: DBGetContactSetting(hContact,szModuleName,"pgp",&dbv); if( dbv.type!=0 ) r|=SECURED; DBFreeVariant(&dbv); break; case MODE_GPG: DBGetContactSetting(hContact,szModuleName,"gpg",&dbv); if( dbv.type!=0 ) r|=SECURED; DBFreeVariant(&dbv); break; case MODE_RSAAES: if(exp->rsa_get_state(clist[j].cntx)==7) r|=SECURED; break; case MODE_RSA: if(clist[j].cntx) r|=SECURED; break; } break; } } return r; // (mode&SECURED) - проверка на EST/DIS }
INT_PTR TlenContactMenuHandleGrantAuth(void *ptr, WPARAM wParam, LPARAM lParam) { HANDLE hContact; DBVARIANT dbv; TlenProtocol *proto = (TlenProtocol *)ptr; if ((hContact=(HANDLE) wParam)!=NULL && proto->isOnline) { if (!DBGetContactSetting(hContact, proto->iface.m_szModuleName, "jid", &dbv)) { JabberSend(proto, "<presence to='%s' type='subscribed'/>", dbv.pszVal); DBFreeVariant(&dbv); } } return 0; }
int TlenContactMenuHandleGrantAuth(WPARAM wParam, LPARAM lParam) { HANDLE hContact; DBVARIANT dbv; if ((hContact=(HANDLE) wParam)!=NULL && jabberOnline) { if (!DBGetContactSetting(hContact, jabberProtoName, "jid", &dbv)) { JabberSend(jabberThreadInfo->s, "<presence to='%s' type='subscribed'/>", dbv.pszVal); DBFreeVariant(&dbv); } } return 0; }
char *DBGetStringA(HANDLE hContact,const char *szModule,const char *szSetting) { char *str=NULL; DBVARIANT dbv={0}; DBGetContactSetting(hContact,szModule,szSetting,&dbv); if(dbv.type==DBVT_ASCIIZ) { str=mir_strdup(dbv.pszVal); mir_free(dbv.pszVal); } DBFreeVariant(&dbv); return str; }
static char *getDisplayName(const char *id) { char jid[256]; HANDLE hContact; DBVARIANT dbv; if (!DBGetContactSetting(NULL, jabberProtoName, "LoginServer", &dbv)) { _snprintf(jid, sizeof(jid), "%s@%s", id, dbv.pszVal); DBFreeVariant(&dbv); if ((hContact=JabberHContactFromJID(jid)) != NULL) { return _strdup((char *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM) hContact, 0)); } } return _strdup(id); }
// загружает паблик-ключ в RSA контекст BYTE loadRSAkey(pUinKey ptr) { if( !ptr->keyLoaded ) { DBVARIANT dbv; dbv.type = DBVT_BLOB; if( DBGetContactSetting(ptr->hContact,szModuleName,"rsa_pub",&dbv) == 0 ) { ptr->keyLoaded = exp->rsa_set_pubkey(ptr->cntx,dbv.pbVal,dbv.cpbVal); #if defined(_DEBUG) || defined(NETLIB_LOG) Sent_NetLog("loadRSAkey %d", ptr->keyLoaded); #endif DBFreeVariant(&dbv); } } return ptr->keyLoaded; }
int TlenContactMenuHandleSendPicture(WPARAM wParam, LPARAM lParam) { HANDLE hContact; DBVARIANT dbv; if ((hContact=(HANDLE) wParam)!=NULL && jabberOnline) { if (!DBGetContactSetting(hContact, jabberProtoName, "jid", &dbv)) { JabberSend(jabberThreadInfo->s, "<message type='pic' to='*****@*****.**' crc='da4fe23' idt='2174' size='21161'/>"); // JabberSend(jabberThreadInfo->s, "<message type='pic' to='%s' crc='b4f7bdd' idt='6195' size='5583'/>", dbv.pszVal); DBFreeVariant(&dbv); } } return 0; }
void import_ping_address(int index, PINGADDRESS &pa) { std::ostringstream os1, os2, os3, os4, os5, os6, os7; os1 << "Address" << index; os2 << "Label" << index; os3 << "Enabled" << index; os4 << "Port" << index; os5 << "Proto" << index; os6 << "Status" << index; os7 << "Status2" << index; DBVARIANT dbv; DBGetContactSetting(0, "PingPlug", os1.str().c_str(), &dbv); strncpy(pa.pszName, dbv.pszVal, MAX_PINGADDRESS_STRING_LENGTH); DBFreeVariant(&dbv); DBGetContactSetting(0, "PingPlug", os2.str().c_str(), &dbv); strncpy(pa.pszLabel, dbv.pszVal, MAX_PINGADDRESS_STRING_LENGTH); DBFreeVariant(&dbv); pa.port = (int)DBGetContactSettingDword(0, "PingPlug", os4.str().c_str(), (DWORD)-1); DBGetContactSetting(0, "PingPlug", os5.str().c_str(), &dbv); strncpy(pa.pszProto, dbv.pszVal, MAX_PINGADDRESS_STRING_LENGTH); DBFreeVariant(&dbv); pa.set_status = DBGetContactSettingWord(0, "PingPlug", os6.str().c_str(), ID_STATUS_ONLINE); pa.get_status = DBGetContactSettingWord(0, "PingPlug", os7.str().c_str(), ID_STATUS_OFFLINE); pa.responding = false; pa.round_trip_time = 0; pa.miss_count = 0; pa.index = index; pa.pszCommand[0] = '\0'; pa.hContact = 0; pa.status = options.nrstatus; }
wchar_t *DBGetStringW(HANDLE hContact,const char *szModule,const char *szSetting) { wchar_t *str=NULL; DBVARIANT dbv={0}; DBGetContactSetting(hContact,szModule,szSetting,&dbv); if(dbv.type==DBVT_WCHAR) { str=mir_strdupW(dbv.pwszVal); mir_free(dbv.pwszVal); } //else TODO if no unicode string (only ansi) // DBFreeVariant(&dbv); return str; }
/*static*/ void ContactDoubleclicked(WPARAM wParam, LPARAM lParam) { DBVARIANT dbv; char *szProto; HACCOUNT ActualAccount; szProto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, wParam, 0); if(szProto != NULL && strcmp(szProto, ProtoName)==0) { if(!DBGetContactSetting((HANDLE) wParam,ProtoName,"Id",&dbv)) { ActualAccount=(HACCOUNT) CallService(MS_YAMN_FINDACCOUNTBYNAME,(WPARAM)POP3Plugin,(LPARAM)dbv.pszVal); if(ActualAccount != NULL) { #ifdef DEBUG_SYNCHRO DebugLog(SynchroFile,"Service_ContactDoubleclicked:ActualAccountSO-read wait\n"); #endif if(WAIT_OBJECT_0==WaitToReadFcn(ActualAccount->AccountAccessSO)) { #ifdef DEBUG_SYNCHRO DebugLog(SynchroFile,"Service_ContactDoubleclicked:ActualAccountSO-read enter\n"); #endif YAMN_MAILBROWSERPARAM Param={(HANDLE)0,ActualAccount,ActualAccount->NewMailN.Flags,ActualAccount->NoNewMailN.Flags,0}; Param.nnflags=Param.nnflags | YAMN_ACC_MSG; //show mails in account even no new mail in account Param.nnflags=Param.nnflags & ~YAMN_ACC_POP; Param.nflags=Param.nflags | YAMN_ACC_MSG; //show mails in account even no new mail in account Param.nflags=Param.nflags & ~YAMN_ACC_POP; RunMailBrowserSvc((WPARAM)&Param,(LPARAM)YAMN_MAILBROWSERVERSION); #ifdef DEBUG_SYNCHRO DebugLog(SynchroFile,"Service_ContactDoubleclicked:ActualAccountSO-read done\n"); #endif ReadDoneFcn(ActualAccount->AccountAccessSO); } #ifdef DEBUG_SYNCHRO else DebugLog(SynchroFile,"Service_ContactDoubleclicked:ActualAccountSO-read enter failed\n"); #endif } DBFreeVariant(&dbv); } } }
BOOL isContactGPG(HANDLE hContact) { if(!bGPGloaded || !bGPGkeyrings) return false; if (!clist_cnt) return false; for(int j=0;j<clist_cnt;j++) { if (clist[j].hContact == hContact) { if( !clist[j].proto->inspecting ) break; if( clist[j].mode!=MODE_GPG ) break; DBVARIANT dbv; DBGetContactSetting(hContact,szModuleName,"gpg",&dbv); BOOL r=(dbv.type!=0); DBFreeVariant(&dbv); return r; } } return false; }
BOOL isContactPGP(HANDLE hContact) { if(!bPGPloaded || (!bPGPkeyrings && !bPGPprivkey)) return false; if (!clist_cnt) return false; for(int j=0;j<clist_cnt;j++) { if (clist[j].hContact == hContact) { if( !clist[j].proto->inspecting ) break; if( clist[j].mode!=MODE_PGP ) break; DBVARIANT dbv; DBGetContactSetting(hContact,szModuleName,"pgp",&dbv); BOOL r=(dbv.type!=0); DBFreeVariant(&dbv); return r; } } return false; }
int BuildContactMenu(WPARAM wparam,LPARAM lparam) { CLISTMENUITEM cmi; DBVARIANT dbv; int id=-1,isetting; HANDLE hContact; char *szProto; hContact = (HANDLE)wparam; szProto=(char*)CallService(MS_PROTO_GETCONTACTBASEPROTO,(WPARAM)hContact,0); ZeroMemory(&cmi,sizeof(cmi)); cmi.cbSize=sizeof(cmi); if(!IsWatchedProtocol(szProto) || !DBGetContactSettingByte(NULL,S_MOD,"MenuItem",1)) { cmi.flags=CMIM_FLAGS|CMIF_HIDDEN; } else { cmi.flags=CMIM_NAME|CMIM_FLAGS|CMIM_ICON; cmi.hIcon=NULL; cmi.pszName=ParseString(!DBGetContactSetting(NULL,S_MOD,"MenuStamp",&dbv)?dbv.pszVal:DEFAULT_MENUSTAMP,(HANDLE)wparam,0); if(!strcmp(cmi.pszName,Translate("<unknown>"))) { if (IsWatchedProtocol(szProto)) cmi.flags|=CMIF_GRAYED; else cmi.flags|=CMIF_HIDDEN; } else if(DBGetContactSettingByte(NULL,S_MOD,"ShowIcon",1)) { isetting=DBGetContactSettingWord((HANDLE)hContact,S_MOD,"StatusTriger",-1); cmi.hIcon=LoadSkinnedProtoIcon(szProto,isetting|0x8000); } } CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)hmenuitem,(LPARAM)&cmi); DBFreeVariant(&dbv); return 0; }
int LoadContactsModule(void) { { // Load the name order BYTE i; DBVARIANT dbv; for(i=0; i<NAMEORDERCOUNT; i++) nameOrder[i]=i; if(!DBGetContactSetting(NULL,"Contact","NameOrder",&dbv)) { CopyMemory(nameOrder,dbv.pbVal,dbv.cpbVal); DBFreeVariant(&dbv); } } CreateServiceFunction(MS_CONTACT_GETCONTACTINFO,GetContactInfo); HookEvent(ME_OPT_INITIALISE,ContactOptInit); return 0; }
void DeleteAllContacts() { char *proto; DBVARIANT dbv; HANDLE hContact = ( HANDLE )CallService( MS_DB_CONTACT_FINDFIRST, 0, 0 ), hContactNext; while ( hContact != NULL ) { hContactNext = ( HANDLE )CallService( MS_DB_CONTACT_FINDNEXT,( WPARAM )hContact, 0 ); if(!DBGetContactSetting(hContact, "Protocol", "p", &dbv)) { //proto = ( char* )CallService( MS_PROTO_GETCONTACTBASEPROTO, ( WPARAM )hContact,0 ); proto = dbv.pszVal; if ( proto && !strcmp( PROTO, proto)) { CallService(MS_DB_CONTACT_DELETE, (WPARAM)hContact, 0); } DBFreeVariant(&dbv); } hContact = hContactNext; } }
int TlenMUCContactMenuHandleMUC(WPARAM wParam, LPARAM lParam) { HANDLE hContact; DBVARIANT dbv; JABBER_LIST_ITEM *item; if (!jabberOnline) { return 1; } if ((hContact=(HANDLE) wParam)!=NULL && jabberOnline) { if (!DBGetContactSetting(hContact, jabberProtoName, "jid", &dbv)) { char serialId[32]; sprintf(serialId, JABBER_IQID"%d", JabberSerialNext()); item = JabberListAdd(LIST_INVITATIONS, serialId); item->nick = mir_strdup(dbv.pszVal); JabberSend(jabberThreadInfo->s, "<p to='c' tp='c' id='%s'/>", serialId); DBFreeVariant(&dbv); } } return 0; }
void LoadContactTree(void) { HANDLE hContact; int i, status, hideOffline; BOOL mc_disablehgh = ServiceExists(MS_MC_DISABLEHIDDENGROUP); DBVARIANT dbv = {0}; BYTE bMsgFrequency = cfg::getByte("CList", "fhistdata", 0); CallService(MS_CLUI_LISTBEGINREBUILD, 0, 0); for (i = 1; ; i++) { if (pcli->pfnGetGroupName(i, NULL) == NULL) break; CallService(MS_CLUI_GROUPADDED, i, 0); } hideOffline = cfg::getByte("CList", "HideOffline", SETTING_HIDEOFFLINE_DEFAULT); hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); while (hContact != NULL) { status = GetContactStatus(hContact); if ((!hideOffline || status != ID_STATUS_OFFLINE) && !CLVM_GetContactHiddenStatus(hContact, NULL, NULL)) pcli->pfnChangeContactIcon(hContact, IconFromStatusMode((char*) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0), status, hContact, NULL), 1); if(mc_disablehgh && !mc_hgh_removed) { if(!DBGetContactSetting(hContact, "CList", "Group", &dbv)) { if(!strcmp(dbv.pszVal, "MetaContacts Hidden Group")) DBDeleteContactSetting(hContact, "CList", "Group"); mir_free(dbv.pszVal); } } // build initial data for message frequency if(!bMsgFrequency) MF_CalcFrequency(hContact, 100, 0); hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); } cfg::writeByte("CList", "fhistdata", 1); mc_hgh_removed = TRUE; CallService(MS_CLUI_SORTLIST, 0, 0); CallService(MS_CLUI_LISTENDREBUILD, 0, 0); }
static int isSelf(const char *roomID, const char *nick) { JABBER_LIST_ITEM *item; int result; DBVARIANT dbv; result=0; item = JabberListGetItemPtr(LIST_CHATROOM, roomID); if (item!=NULL) { if (item->nick==NULL) { if (!DBGetContactSetting(NULL, jabberProtoName, "LoginName", &dbv)) { if (!strcmp(nick, dbv.pszVal)) result = 1; DBFreeVariant(&dbv); } } else if (nick[0]=='~') { if (!strcmp(nick+1, item->nick)) { result = 1; } } } return result; }
BOOL LoadKeyPGP(pUinKey ptr) { int mode = DBGetContactSettingByte(ptr->hContact,szModuleName,"pgp_mode",255); if(mode==0) { DBVARIANT dbv; DBGetContactSetting(ptr->hContact,szModuleName,"pgp",&dbv); BOOL r=(dbv.type==DBVT_BLOB); if(r) pgp_set_keyid(ptr->cntx,(PVOID)dbv.pbVal); DBFreeVariant(&dbv); return r; } else if(mode==1) { LPSTR key = myDBGetStringDecode(ptr->hContact,szModuleName,"pgp"); if( key ) { pgp_set_key(ptr->cntx,key); mir_free(key); return 1; } } return 0; }
/* Prepares the log file: - calculates the absolute path (and store it in the db) - creates the directory */ int InitFileOutput(void) { char szfpath[256]="",szmpath[256]="",*str; DBVARIANT dbv; GetModuleFileName(NULL,szmpath,MAX_PATH); strcpy(szfpath,!DBGetContactSetting(NULL,S_MOD,"FileName",&dbv)?dbv.pszVal:DEFAULT_FILENAME); DBFreeVariant(&dbv); if(szfpath[0]=='\\') strcpy(szfpath,szfpath+1); str=strrchr(szmpath,'\\'); if(str!=NULL) *++str=0; strcat(szmpath,szfpath); strcpy(szfpath,szmpath); str=strrchr(szmpath,'\\'); if(str!=NULL) *++str=0; /* //we dont need this anylonger. the directory is created in filewrite if(!CreateDirectory(szmpath,NULL)) { if(!(GetFileAttributes(szmpath) & FILE_ATTRIBUTE_DIRECTORY)) { MessageBox(NULL,"Directory could not be created\nPlease choose another!","Last seen plugin",MB_OK|MB_ICONERROR); DBWriteContactSettingByte(NULL,S_MOD,"FileOutput",0); return 0; } } */ DBWriteContactSettingString(NULL,S_MOD,"PathToFile",szfpath); return 0; }
char *TemplateHTMLBuilder::getAvatar(HANDLE hContact, const char * szProto) { DBVARIANT dbv; char tmpPath[MAX_PATH]; char *result = NULL; if (Options::getAvatarServiceFlags() == Options::AVATARSERVICE_PRESENT) { struct avatarCacheEntry *ace = NULL; if (hContact == NULL) { ace = (struct avatarCacheEntry *)CallService(MS_AV_GETMYAVATAR, (WPARAM)0, (LPARAM)szProto); } else { ace = (struct avatarCacheEntry *)CallService(MS_AV_GETAVATARBITMAP, (WPARAM)hContact, (LPARAM)0); } if (ace!=NULL) { result = ace->szFilename; } } if (!DBGetContactSetting(hContact, "ContactPhoto", "File",&dbv)) { if (strlen(dbv.pszVal) > 0) { char* ext = strrchr(dbv.pszVal, '.'); if (ext && strcmpi(ext, ".xml") == 0) { result = (char *)getFlashAvatar(dbv.pszVal, (hContact == NULL) ? 1 : 0); } else { if (result == NULL) { /* relative -> absolute */ strcpy (tmpPath, dbv.pszVal); if (ServiceExists(MS_UTILS_PATHTOABSOLUTE)&& strncmp(tmpPath, "http://", 7)) { CallService(MS_UTILS_PATHTOABSOLUTE, (WPARAM)dbv.pszVal, (LPARAM)tmpPath); } result = tmpPath; } } } DBFreeVariant(&dbv); } result = Utils::UTF8Encode(result); Utils::convertPath(result); return result; }
void LoadMsgDlgFont(int i, LOGFONTA * lf, COLORREF * colour) { char str[32]; int style; DBVARIANT dbv; if (colour) { wsprintfA(str, "SRMFont%dCol", i); *colour = DBGetContactSettingDword(NULL, SRMMMOD, str, fontOptionsList[i].defColour); } if (lf) { wsprintfA(str, "SRMFont%dSize", i); lf->lfHeight = (char) DBGetContactSettingByte(NULL, SRMMMOD, str, fontOptionsList[i].defSize); lf->lfWidth = 0; lf->lfEscapement = 0; lf->lfOrientation = 0; wsprintfA(str, "SRMFont%dSty", i); style = DBGetContactSettingByte(NULL, SRMMMOD, str, fontOptionsList[i].defStyle); lf->lfWeight = style & FONTF_BOLD ? FW_BOLD : FW_NORMAL; lf->lfItalic = style & FONTF_ITALIC ? 1 : 0; lf->lfUnderline = 0; lf->lfStrikeOut = 0; wsprintfA(str, "SRMFont%dSet", i); lf->lfCharSet = DBGetContactSettingByte(NULL, SRMMMOD, str, fontOptionsList[i].defCharset); lf->lfOutPrecision = OUT_DEFAULT_PRECIS; lf->lfClipPrecision = CLIP_DEFAULT_PRECIS; lf->lfQuality = DEFAULT_QUALITY; lf->lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; wsprintfA(str, "SRMFont%d", i); if (DBGetContactSetting(NULL, SRMMMOD, str, &dbv)) lstrcpyA(lf->lfFaceName, fontOptionsList[i].szDefFace); else { lstrcpynA(lf->lfFaceName, dbv.pszVal, sizeof(lf->lfFaceName)); DBFreeVariant(&dbv); } } }