void RemoveSessionMark(HANDLE hContact,int mode,int marknum) { unsigned int i=1; char temp_1[1]={'\0'},temp_2[1]={'\0'}; char szDst[256]={'\0'}; if(mode==0) { DBVARIANT dbv; if(!DBGetContactSettingString(hContact, __INTERNAL_NAME, "LastSessionsMarks", &dbv) && dbv.pszVal) { for (i=marknum;i<ses_limit;i++) dbv.pszVal[i]=dbv.pszVal[i+1]; for (i=ses_limit;i<10;i++) dbv.pszVal[i]='0'; DBWriteContactSettingString(hContact, __INTERNAL_NAME, "LastSessionsMarks", dbv.pszVal); DBFreeVariant(&dbv); } } if (mode==1) { DBVARIANT dbv; if(!DBGetContactSettingString(hContact, __INTERNAL_NAME, "UserSessionsMarks", &dbv) && dbv.pszVal) { for (i=marknum;i<ses_limit;i++) dbv.pszVal[i]=dbv.pszVal[i+1]; DBWriteContactSettingString(hContact, __INTERNAL_NAME, "UserSessionsMarks", dbv.pszVal); DBFreeVariant(&dbv); } } }
void SetInSessionOrder(HANDLE hContact,int mode,int count,unsigned int ordernum) { int iOrder=0; char szTemp[3]={'\0'}; if(ordernum<10) mir_snprintf(szTemp, SIZEOF(szTemp), "%u%u", 0, ordernum); else mir_snprintf(szTemp, SIZEOF(szTemp), "%u", ordernum); if(mode==0) { DBVARIANT dbv; if(!DBGetContactSettingString(hContact, __INTERNAL_NAME, "LastSessionsOrder", &dbv) && dbv.pszVal) { dbv.pszVal[count*2]=szTemp[0]; dbv.pszVal[count*2+1]=szTemp[1]; DBWriteContactSettingString(hContact, __INTERNAL_NAME, "LastSessionsOrder", dbv.pszVal); DBFreeVariant(&dbv); } } if (mode==1) { DBVARIANT dbv; if(!DBGetContactSettingString(hContact, __INTERNAL_NAME, "UserSessionsOrder", &dbv) && dbv.pszVal) { dbv.pszVal[count*2]=szTemp[0]; dbv.pszVal[count*2+1]=szTemp[1]; DBWriteContactSettingString(hContact, __INTERNAL_NAME, "UserSessionsOrder", dbv.pszVal); DBFreeVariant(&dbv); } } }
//Function to put all enabled contact to the Online status void RefreshContact(void) { HACCOUNT Finder; for(Finder=POP3Plugin->FirstAccount;Finder!=NULL;Finder=Finder->Next) { if(Finder->hContact != NULL) { if((Finder->Flags & YAMN_ACC_ENA) && (Finder->NewMailN.Flags & YAMN_ACC_CONT)) { DBDeleteContactSetting(Finder->hContact, "CList", "Hidden"); } else { DBWriteContactSettingByte(Finder->hContact, "CList", "Hidden", 1); } } else { if((Finder->Flags & YAMN_ACC_ENA) && (Finder->NewMailN.Flags & YAMN_ACC_CONT)) { Finder->hContact =(HANDLE) CallService(MS_DB_CONTACT_ADD, 0, 0); CallService(MS_PROTO_ADDTOCONTACT,(WPARAM)Finder->hContact,(LPARAM)ProtoName); DBWriteContactSettingString(Finder->hContact,ProtoName,"Id",Finder->Name); DBWriteContactSettingString(Finder->hContact,ProtoName,"Nick",Finder->Name); DBWriteContactSettingString(Finder->hContact,"Protocol","p",ProtoName); DBWriteContactSettingWord(Finder->hContact, ProtoName, "Status", ID_STATUS_ONLINE); DBWriteContactSettingString(Finder->hContact, "CList", "StatusMsg", Translate("No new mail message")); } } } }
void JabberDBAddAuthRequest(TlenProtocol *proto, char *jid, char *nick) { char *s; PBYTE pCurBlob; PBYTE pBlob; DWORD cbBlob; HANDLE hContact; if ((hContact=JabberHContactFromJID(proto, jid)) == NULL) { hContact = (HANDLE) CallService(MS_DB_CONTACT_ADD, 0, 0); CallService(MS_PROTO_ADDTOCONTACT, (WPARAM) hContact, (LPARAM) proto->iface.m_szModuleName); // strip resource if present s = JabberLoginFromJID(jid); _strlwr(s); DBWriteContactSettingString(hContact, proto->iface.m_szModuleName, "jid", s); mir_free(s); } else { DBDeleteContactSetting(hContact, proto->iface.m_szModuleName, "Hidden"); } DBWriteContactSettingString(hContact, proto->iface.m_szModuleName, "Nick", nick); JabberLog(proto, "auth request: %s, %s", jid, nick); //blob is: uin(DWORD), hContact(HANDLE), nick(ASCIIZ), first(ASCIIZ), last(ASCIIZ), email(ASCIIZ), reason(ASCIIZ) //blob is: 0(DWORD), hContact(HANDLE), nick(ASCIIZ), ""(ASCIIZ), ""(ASCIIZ), email(ASCIIZ), ""(ASCIIZ) cbBlob = sizeof(DWORD) + sizeof(HANDLE) + (int)strlen(nick) + (int)strlen(jid) + 5; pBlob = pCurBlob = (PBYTE) mir_alloc(cbBlob); *((PDWORD) pCurBlob) = 0; pCurBlob += sizeof(DWORD); *((PHANDLE) pCurBlob) = hContact; pCurBlob += sizeof(HANDLE); strcpy((char *) pCurBlob, nick); pCurBlob += strlen(nick)+1; *pCurBlob = '\0'; pCurBlob++; //firstName *pCurBlob = '\0'; pCurBlob++; //lastName strcpy((char *) pCurBlob, jid); pCurBlob += strlen(jid)+1; *pCurBlob = '\0'; //reason JabberDBAddEvent(proto, NULL, EVENTTYPE_AUTHREQUEST, 0, pBlob, cbBlob); }
void SetSessionMark(HANDLE hContact,int mode,char bit,unsigned int marknum) { char* pszBuffer=NULL; if(mode==0) { DBVARIANT dbv; if(!DBGetContactSettingString(hContact, __INTERNAL_NAME, "LastSessionsMarks", &dbv) && dbv.pszVal) { dbv.pszVal[marknum]=bit; DBWriteContactSettingString(hContact, __INTERNAL_NAME, "LastSessionsMarks", dbv.pszVal); DBFreeVariant(&dbv); } } if (mode==1) { DBVARIANT dbv; if(!DBGetContactSettingString(hContact, __INTERNAL_NAME, "UserSessionsMarks", &dbv) && dbv.pszVal) { pszBuffer = mir_strdup(dbv.pszVal); pszBuffer[marknum]=bit; DBWriteContactSettingString(hContact, __INTERNAL_NAME, "UserSessionsMarks", pszBuffer); mir_free(pszBuffer); DBFreeVariant(&dbv); } } }
static int MTG_DOMOVE(WPARAM wParam,LPARAM lParam) { char *grpname,*correctgrpname; char *intname; if (lParam==0) { MessageBoxA(0,"Wrong version of New menu system - please update.","MoveToGroup",0); return(0); }; lParam--; if (lParam==-2)//root level { DBWriteContactSettingString((HANDLE)wParam,"CList","Group",""); return 0; } intname=(char *)malloc(20); itoa(lParam,intname,10); grpname=DBGetStringA(0,"CListGroups",intname); if (grpname!=0) { correctgrpname=&(grpname[1]); DBWriteContactSettingString((HANDLE)wParam,"CList","Group",correctgrpname); mir_free(grpname); }; free (intname); return 0; };
void AddSessionMark(HANDLE hContact,int mode,char bit) { unsigned int i; char temp_1[1]={'\0'},temp_2[1]={'\0'}; char szDst[256]={'\0'}; char* pszBuffer=NULL; if(mode==0) { DBVARIANT dbv; if(!DBGetContactSettingString(hContact, __INTERNAL_NAME, "LastSessionsMarks", &dbv) && dbv.pszVal) { temp_1[0]=dbv.pszVal[0]; for (i=0;i<ses_limit;i++) { temp_2[0]=dbv.pszVal[i+1]; dbv.pszVal[i+1]=temp_1[0]; temp_1[0]=temp_2[0]; } for (i=ses_limit;i<10;i++) dbv.pszVal[i]='0'; dbv.pszVal[0]=bit; DBWriteContactSettingString(hContact, __INTERNAL_NAME, "LastSessionsMarks", dbv.pszVal); DBFreeVariant(&dbv); } else if(bit=='1') DBWriteContactSettingString(hContact, __INTERNAL_NAME, "LastSessionsMarks", "10000000000"); } if (mode==1) { DBVARIANT dbv; if(!DBGetContactSettingString(hContact, __INTERNAL_NAME, "UserSessionsMarks", &dbv) && dbv.pszVal) { if(strlen(dbv.pszVal)<g_ses_count) { pszBuffer = (char*)mir_alloc(g_ses_count+1); ZeroMemory(pszBuffer,g_ses_count+1); strcpy(pszBuffer,dbv.pszVal); } else pszBuffer = mir_strdup(dbv.pszVal); DBFreeVariant(&dbv); temp_1[0]=pszBuffer[0]; for (i=0;i<g_ses_count;i++) { temp_2[0]=pszBuffer[i+1]; pszBuffer[i+1]=temp_1[0]; temp_1[0]=temp_2[0]; } pszBuffer[0]=bit; DBWriteContactSettingString(hContact, __INTERNAL_NAME, "UserSessionsMarks", pszBuffer); mir_free(pszBuffer); } else if(bit=='1')DBWriteContactSettingString(hContact, __INTERNAL_NAME, "UserSessionsMarks", "10000000000"); else DBWriteContactSettingString(hContact, __INTERNAL_NAME, "UserSessionsMarks", "00000000000"); } }
void SkypeProfile_Save(SkypeProfile *pstProf) { DBWriteContactSettingByte(NULL, SKYPE_PROTONAME, "Gender", pstProf->Sex); DBWriteContactSettingString(NULL, SKYPE_PROTONAME, "HomePhone", pstProf->HomePhone); DBWriteContactSettingString(NULL, SKYPE_PROTONAME, "OfficePhone", pstProf->OfficePhone); DBWriteContactSettingString(NULL, SKYPE_PROTONAME, "HomePage", pstProf->HomePage); DBWriteContactSettingTString(NULL, SKYPE_PROTONAME, "Nick", pstProf->FullName); DBWriteContactSettingTString(NULL, SKYPE_PROTONAME, "City", pstProf->City); DBWriteContactSettingTString(NULL, SKYPE_PROTONAME, "Province", pstProf->Province); DBWriteContactSettingWord(NULL, SKYPE_PROTONAME, "BirthYear", (WORD)pstProf->Birthday.wYear); DBWriteContactSettingByte(NULL, SKYPE_PROTONAME, "BirthMonth", (BYTE)pstProf->Birthday.wMonth); DBWriteContactSettingByte(NULL, SKYPE_PROTONAME, "BirthDay", (BYTE)pstProf->Birthday.wDay); }
INT_PTR __cdecl Service_PGPsetKey(WPARAM wParam, LPARAM lParam) { BOOL del = true; if(bPGPloaded) { if(bPGPkeyrings) { char szKeyID[128]; szKeyID[0]='\0'; PVOID KeyID = pgp_select_keyid(GetForegroundWindow(),szKeyID); if(szKeyID[0]) { DBDeleteContactSetting((HANDLE)wParam,szModuleName,"pgp"); DBCONTACTWRITESETTING cws; memset(&cws,0,sizeof(cws)); cws.szModule = szModuleName; cws.szSetting = "pgp"; cws.value.type = DBVT_BLOB; cws.value.pbVal = (LPBYTE)KeyID; cws.value.cpbVal = pgp_size_keyid(); CallService(MS_DB_CONTACT_WRITESETTING,wParam,(LPARAM)&cws); DBWriteContactSettingByte((HANDLE)wParam,szModuleName,"pgp_mode",0); DBWriteContactSettingString((HANDLE)wParam,szModuleName,"pgp_abbr",szKeyID); del = false; } } else if(bPGPprivkey) { char KeyPath[MAX_PATH]; KeyPath[0]='\0'; if(ShowSelectKeyDlg(0,KeyPath)) { char *publ = LoadKeys(KeyPath,false); if(publ) { DBDeleteContactSetting((HANDLE)wParam,szModuleName,"pgp"); myDBWriteStringEncode((HANDLE)wParam,szModuleName,"pgp",publ); DBWriteContactSettingByte((HANDLE)wParam,szModuleName,"pgp_mode",1); DBWriteContactSettingString((HANDLE)wParam,szModuleName,"pgp_abbr","(binary)"); mir_free(publ); del = false; } } } } if(del) Service_PGPdelKey(wParam,lParam); else { pUinKey ptr = getUinKey((HANDLE)wParam); cpp_delete_context(ptr->cntx); ptr->cntx=0; } ShowStatusIconNotify((HANDLE)wParam); return 1; }
static INT_PTR Proto_AddToContact(WPARAM wParam,LPARAM lParam) { PROTOCOLDESCRIPTOR *pd,*pdCompare; pd = Proto_IsProtocolLoaded(( char* )lParam ); if ( pd == NULL ) { PROTOACCOUNT* pa = Proto_GetAccount(( char* )lParam ); if ( pa ) { DBWriteContactSettingString((HANDLE)wParam,"Protocol","p",(char*)lParam); return 0; } return 1; } if ( pd->type == PROTOTYPE_PROTOCOL ) { DBWriteContactSettingString((HANDLE)wParam,"Protocol","p",(char*)lParam); return 0; } if(Proto_IsProtoOnContact(wParam,lParam)) return 1; { /* v:0.3.3 + PROTO FILTERS ARE NOW KEPT IN THEIR OWN DB MODULE! */ int i; char str[10],*lastProto; DBVARIANT dbv; for(i=0;;i++) { _itoa(i,str,10); if(DBGetContactSettingString((HANDLE)wParam,"_Filter",str,&dbv)) break; pdCompare = Proto_IsProtocolLoaded(( char* )dbv.pszVal ); mir_free(dbv.pszVal); if(pdCompare==NULL) continue; if(pd->type > pdCompare->type) break; } //put the new module at position i lastProto=mir_strdup((char*)lParam); for(;;i++) { _itoa(i,str,10); if(DBGetContactSettingString((HANDLE)wParam,"_Filter",str,&dbv)) { DBWriteContactSettingString((HANDLE)wParam,"_Filter",str,lastProto); mir_free(lastProto); break; } DBWriteContactSettingString((HANDLE)wParam,"_Filter",str,lastProto); mir_free(lastProto); lastProto=dbv.pszVal; } } return 0; }
static TlenProtocol *tlenProtoInit( const char* pszProtoName, const TCHAR* tszUserName ) { DBVARIANT dbv; char text[_MAX_PATH]; TlenProtocol *proto = (TlenProtocol *)mir_alloc(sizeof(TlenProtocol)); memset(proto, 0, sizeof(TlenProtocol)); proto->iface.m_tszUserName = mir_tstrdup( tszUserName ); proto->iface.m_szModuleName = mir_strdup(pszProtoName); proto->iface.m_szProtoName = mir_strdup(pszProtoName); _strlwr( proto->iface.m_szProtoName ); proto->iface.m_szProtoName[0] = toupper( proto->iface.m_szProtoName[0] ); proto->iface.m_iStatus = ID_STATUS_OFFLINE; TlenInitServicesVTbl(proto); InitializeCriticalSection(&proto->modeMsgMutex); InitializeCriticalSection(&proto->csSend); sprintf(text, "%s/%s", proto->iface.m_szModuleName, "Nudge"); proto->hTlenNudge = CreateHookableEvent(text); HookEventObj_Ex(ME_SYSTEM_MODULESLOADED, proto, TlenSystemModulesLoaded); HookEventObj_Ex(ME_OPT_INITIALISE, proto, TlenOptionsInit); HookEventObj_Ex(ME_DB_CONTACT_SETTINGCHANGED, proto, JabberDbSettingChanged); HookEventObj_Ex(ME_DB_CONTACT_DELETED, proto, JabberContactDeleted); HookEventObj_Ex(ME_CLIST_PREBUILDCONTACTMENU, proto, TlenPrebuildContactMenu); // HookEventObj_Ex(ME_SKIN2_ICONSCHANGED, proto, TlenIconsChanged); HookEventObj_Ex(ME_SYSTEM_PRESHUTDOWN, proto, TlenPreShutdown); if (!DBGetContactSetting(NULL, proto->iface.m_szModuleName, "LoginServer", &dbv)) { DBFreeVariant(&dbv); } else { DBWriteContactSettingString(NULL, proto->iface.m_szModuleName, "LoginServer", "tlen.pl"); } if (!DBGetContactSetting(NULL, proto->iface.m_szModuleName, "ManualHost", &dbv)) { DBFreeVariant(&dbv); } else { DBWriteContactSettingString(NULL, proto->iface.m_szModuleName, "ManualHost", "s1.tlen.pl"); } TlenLoadOptions(proto); JabberWsInit(proto); JabberSerialInit(proto); JabberIqInit(proto); JabberListInit(proto); return proto; }
int MainInit(WPARAM wparam,LPARAM lparam) { HookEvent(ME_OPT_INITIALISE,OptionsInit); if(DBGetContactSettingByte(NULL,S_MOD,"MenuItem",1)) { InitMenuitem(); } if(DBGetContactSettingByte(NULL,S_MOD,"UserinfoTab",1)) ehuserinfo=HookEvent(ME_USERINFO_INITIALISE,UserinfoInit); if(DBGetContactSettingByte(NULL,S_MOD,"FileOutput",0)) InitFileOutput(); if(DBGetContactSettingByte(NULL,S_MOD,"MissedOnes",0)) ehmissed_proto=HookEvent(ME_PROTO_ACK,ModeChange_mo); SetOffline(); ehdb=HookEvent(ME_DB_CONTACT_SETTINGCHANGED,UpdateValues); ehproto[0]=HookEvent(ME_PROTO_ACK,ModeChange); ehproto[1]=HookEvent(ME_PROTO_ACK,GetInfoAck); SkinAddNewSound("LastSeenTrackedStatusChange",Translate("LastSeen: User status change"),"global.wav"); DBWriteContactSettingString(NULL,"Uninstall",Translate("Last seen"),S_MOD); return 0; }
static void JabberContactListCreateClistGroup(char *groupName) { char str[33], newName[128]; int i; DBVARIANT dbv; char *name; for (i=0;;i++) { itoa(i, str, 10); if (DBGetContactSetting(NULL, "CListGroups", str, &dbv)) break; name = dbv.pszVal; if (name[0]!='\0' && !strcmp(name+1, groupName)) { // Already exist, no need to create DBFreeVariant(&dbv); return; } DBFreeVariant(&dbv); } // Create new group with id = i (str is the text representation of i) newName[0] = 1 | GROUPF_EXPANDED; strncpy(newName+1, groupName, sizeof(newName)-1); newName[sizeof(newName)-1] = '\0'; DBWriteContactSettingString(NULL, "CListGroups", str, newName); CallService(MS_CLUI_GROUPADDED, i+1, 0); }
void MirandaSkinnedDialog::setSettting(const char *name, const char *val, bool global) { char setting[SETTING_NAME_SIZE]; getSettingName(setting, name, global); DBWriteContactSettingString(NULL, getModule(), setting, val); }
static INT_PTR Proto_RemoveFromContact(WPARAM wParam,LPARAM lParam) { int i; DBVARIANT dbv; char str[10]; i = Proto_IsProtoOnContact(wParam,lParam); if(!i) return 1; if(i==-1) DBDeleteContactSetting((HANDLE)wParam,"Protocol","p"); else { for(i--;;i++) { //we have to decrease i, as Proto_IsOnContact returns +1 more number than read from database _itoa(i+1,str,10); if(0!=DBGetContactSettingString((HANDLE)wParam,"_Filter",str,&dbv)) { _itoa(i,str,10); DBDeleteContactSetting((HANDLE)wParam,"_Filter",str); break; } _itoa(i,str,10); DBWriteContactSettingString((HANDLE)wParam,"_Filter",str,dbv.pszVal); mir_free(dbv.pszVal); } } return 0; }
BOOL convertSetting(HANDLE hContact, char* module, char* setting, int toType) // 0 = byte, 1 = word, 2 = dword, 3 = string, 4 = unicode { DBVARIANT dbv = {0}; BOOL Result = 0; if (!GetSetting(hContact, module, setting, &dbv)) { switch (dbv.type) { case DBVT_BYTE: Result = Convert(hContact, module, setting, dbv.bVal, toType); break; case DBVT_WORD: Result = Convert(hContact, module, setting, dbv.wVal, toType); break; case DBVT_DWORD: Result = Convert(hContact, module, setting, dbv.dVal, toType); break; case DBVT_ASCIIZ: if (toType == 4) // convert to UNICODE { int len = (int)strlen(dbv.pszVal) + 1; WCHAR *wc = (WCHAR*)_malloca(len*sizeof(WCHAR)); MultiByteToWideChar(CP_ACP, 0, dbv.pszVal, -1, wc, len); Result = !DBWriteContactSettingWString(hContact, module, setting, wc); } else if (strlen(dbv.pszVal) < 11 && toType != 3) { int val = atoi(dbv.pszVal); if (val == 0 && dbv.pszVal[0] != '0') break; Result = Convert(hContact, module, setting, val, toType); } break; case DBVT_UTF8: if (toType == 3 && UOS) // convert to ANSI { int len = (int)strlen(dbv.pszVal) + 1; char *sz = (char*)_malloca(len*3); WCHAR *wc = (WCHAR*)_malloca(len*sizeof(WCHAR)); MultiByteToWideChar(CP_UTF8, 0, dbv.pszVal, -1, wc, len); WideCharToMultiByte(CP_ACP, 0, wc, -1, sz, len, NULL, NULL); Result = !DBWriteContactSettingString(hContact, module, setting, sz); } break; } if (!Result) msg(Translate("Cannot Convert!"), modFullname); DBFreeVariant(&dbv); } return Result; }
static BOOL Convert(HANDLE hContact, char* module, char* setting, int value, int toType) // 0 = byte, 1 = word, 2 = dword, 3 = string { int Result = 1; char temp[64]; switch (toType) { case 0: if (value > 0xFF) Result = 0; else DBWriteContactSettingByte(hContact, module, setting, (BYTE)value); break; case 1: if (value > 0xFFFF) Result = 0; else DBWriteContactSettingWord(hContact, module, setting, (WORD)value); break; case 2: DBWriteContactSettingDword(hContact, module, setting, (DWORD)value); break; case 3: DBDeleteContactSetting(hContact, module, setting); DBWriteContactSettingString(hContact, module, setting, itoa(value,temp,10)); break; } return Result; }
ROWCELL *cppInitModernRow(ROWCELL ** tabAccess) { int fsize; int seq=0; ROWCELL * RowRoot=NULL; FILE * hFile; int i=0; if (!DBGetContactSettingByte(NULL,"ModernData","UseAdvancedRowLayout",0)) return NULL; tmplbuf=NULL; if (DBGetContactSettingByte(NULL,"ModernData","UseAdvancedRowLayout",0)==1) tmplbuf=DBGetStringA(NULL,"ModernData","RowTemplate"); if (tmplbuf) { rowParse(RowRoot, RowRoot, tmplbuf, i, seq,tabAccess); mir_free(tmplbuf); return RowRoot; } if (hFile = fopen("template.txt", "rb")) { fsize = _filelength(_fileno(hFile)); tmplbuf = (char*)malloc(fsize+1); ZeroMemory(tmplbuf, fsize+1); for (i=0; i<fsize; i++) tmplbuf[i] = getc(hFile); tmplbuf[i] = 0; i = 0; rowParse(RowRoot, RowRoot, tmplbuf, i, seq,tabAccess); DBWriteContactSettingString(NULL,"ModernData","RowTemplate",tmplbuf); free(tmplbuf); fclose(hFile); return RowRoot; } return NULL; }
int __cdecl onSystemOKToExit(WPARAM wParam,LPARAM lParam) { if(bSavePass) { LPSTR tmp = gpg_get_passphrases(); DBWriteContactSettingString(0,szModuleName,"gpgSave",tmp); LocalFree(tmp); } else { DBDeleteContactSetting(0,szModuleName,"gpgSave"); } if(bPGPloaded) pgp_done(); if(bGPGloaded) gpg_done(); rsa_done(); while(iHook--) UnhookEvent(g_hHook[iHook]); mir_free(g_hHook); while(iService--) DestroyServiceFunction(g_hService[iService]); mir_free(g_hService); DestroyHookableEvent(g_hEvent[0]); DestroyHookableEvent(g_hEvent[1]); freeContactList(); free_rtfconv(); #if defined(_DEBUG) || defined(NETLIB_LOG) DeinitNetlib(); #endif return 0; }
void * AddTempGroup(HWND hwnd,struct ClcData *dat,const TCHAR *szName,DWORD flags,int groupId,int calcTotalMembers) { int i=0; int f=0; char * szGroupName; DWORD groupFlags; if (WildCompare((char*)szName,"* Hidden Group",0)) { if(ServiceExists(MS_MC_ADDTOMETA)) return NULL; else return(&dat->list); } for(i=1;;i++) { szGroupName=(char*)CallService(MS_CLIST_GROUPGETNAME2,i,(LPARAM)&groupFlags); if(szGroupName==NULL) break; if (boolstrcmpi(szGroupName,szName)) f=1; } if (!f) { char buf[20]; char b2[255]; void * res=NULL; _snprintf(buf,sizeof(buf),"%d",(i-1)); _snprintf(b2,sizeof(b2),"#%s",szName); b2[0]=1|GROUPF_EXPANDED; DBWriteContactSettingString(NULL,"CListGroups",buf,b2); CallService(MS_CLIST_GROUPGETNAME2,i,(LPARAM)&groupFlags); res=AddGroup(hwnd,dat,szName,groupFlags,i,0); return res; } return NULL; }
HANDLE add_contact(char *name, DWORD flags) { HANDLE hContact; // already on list? if (hContact=find_contact(name)) { if (!(flags & PALF_TEMPORARY) && DBGetContactSettingByte(hContact, "CList", "NotOnList", 1)) { DBDeleteContactSetting( hContact, "CList", "NotOnList" ); DBDeleteContactSetting( hContact, "CList", "Hidden" ); } LOG(("add_contact: Found %s", name)); return hContact; // already there, return handle } // no, so add LOG(("add_contact: Adding %s", name)); hContact=(HANDLE)CallServiceSync(MS_DB_CONTACT_ADD, 0, 0); if (hContact) { if (CallServiceSync(MS_PROTO_ADDTOCONTACT, (WPARAM)hContact,(LPARAM)SKYPE_PROTONAME)!=0) { LOG(("add_contact: Ouch! MS_PROTO_ADDTOCONTACT failed for some reason")); CallServiceSync(MS_DB_CONTACT_DELETE, (WPARAM)hContact, 0); return NULL; } if (name[0]) DBWriteContactSettingString(hContact, SKYPE_PROTONAME, SKYPE_NAME, name); if (flags & PALF_TEMPORARY ) { DBWriteContactSettingByte(hContact, "CList", "NotOnList", 1); DBWriteContactSettingByte(hContact, "CList", "Hidden", 1); } if (name[0]) { SkypeSend("GET USER %s DISPLAYNAME", name); } else {LOG(("add_contact: Info: The contact added has no name."));} } else {LOG(("add_contact: Ouch! MS_DB_CONTACT_ADD failed for some reason"));} LOG(("add_contact succeeded")); return hContact; }
void JabberIqResultSetAuth(XmlNode *iqNode, void *userdata) { struct ThreadData *info = (struct ThreadData *) userdata; char *type; int iqId; // RECVED: authentication result // ACTION: if successfully logged in, continue by requesting roster list and set my initial status JabberLog("<iq/> iqIdSetAuth"); if ((type=JabberXmlGetAttrValue(iqNode, "type")) == NULL) return; if (!strcmp(type, "result")) { DBVARIANT dbv; if (DBGetContactSetting(NULL, jabberProtoName, "Nick", &dbv)) DBWriteContactSettingString(NULL, jabberProtoName, "Nick", info->username); else DBFreeVariant(&dbv); iqId = JabberSerialNext(); JabberIqAdd(iqId, IQ_PROC_NONE, JabberIqResultGetRoster); JabberSend(info->s, "<iq type='get' id='"JABBER_IQID"%d'><query xmlns='jabber:iq:roster'/></iq>", iqId); } // What to do if password error? etc... else if (!strcmp(type, "error")) { char text[128]; JabberSend(info->s, "</s>"); _snprintf(text, sizeof(text), "%s %s@%s.", Translate("Authentication failed for"), info->username, info->server); MessageBox(NULL, text, Translate("Tlen Authentication"), MB_OK|MB_ICONSTOP|MB_SETFOREGROUND); ProtoBroadcastAck(jabberProtoName, NULL, ACKTYPE_LOGIN, ACKRESULT_FAILED, NULL, LOGINERR_WRONGPASSWORD); jabberThreadInfo = NULL; // To disallow auto reconnect } }
/** Scans the \c CHANGES and call the appropriate function for each change. * * @param chg : Structure holding all the change info (See CHANGES). */ void ApplyChanges(CHANGES *chg) { HANDLE most_online; int i; // remove removed contacts for(i = 0; i < chg->num_deleted; i++) { Meta_Delete((WPARAM)chg->hDeletedContacts[i], 0); if(chg->hDeletedContacts[i] == chg->hDefaultContact) chg->hDefaultContact = 0; if(chg->hDeletedContacts[i] == chg->hOfflineContact) chg->hOfflineContact = 0; } // set contact positions for(i = 0; i < chg->num_contacts; i++) { if(Meta_GetContactNumber(chg->hContact[i]) != i) Meta_SwapContacts(chg->hMeta, Meta_GetContactNumber(chg->hContact[i]), i); } NotifyEventHooks(hSubcontactsChanged, (WPARAM)chg->hMeta, (LPARAM)chg->hDefaultContact); // set default if(chg->hDefaultContact) DBWriteContactSettingDword(chg->hMeta, META_PROTO, "Default", Meta_GetContactNumber(chg->hDefaultContact)); else DBWriteContactSettingDword(chg->hMeta, META_PROTO, "Default", 0); NotifyEventHooks(hEventDefaultChanged, (WPARAM)chg->hMeta, (LPARAM)chg->hDefaultContact); // set offline if(chg->hOfflineContact) DBWriteContactSettingDword(chg->hMeta, META_PROTO, "OfflineSend", Meta_GetContactNumber(chg->hOfflineContact)); else DBWriteContactSettingDword(chg->hMeta, META_PROTO, "OfflineSend", (DWORD)-1); // fix nick most_online = Meta_GetMostOnline(chg->hMeta); Meta_CopyContactNick(chg->hMeta, most_online); // fix status Meta_FixStatus(chg->hMeta); // fix avatar most_online = Meta_GetMostOnlineSupporting(chg->hMeta, PFLAGNUM_4, PF4_AVATARS); if(most_online) { PROTO_AVATAR_INFORMATION AI; AI.cbSize = sizeof(AI); AI.hContact = chg->hMeta; AI.format = PA_FORMAT_UNKNOWN; strcpy(AI.filename, "X"); if((int)CallProtoService(META_PROTO, PS_GETAVATARINFO, 0, (LPARAM)&AI) == GAIR_SUCCESS) DBWriteContactSettingString(chg->hMeta, "ContactPhoto", "File",AI.filename); } if(MetaAPI_GetForceState((WPARAM)chg->hMeta, 0) != chg->force_default) MetaAPI_ForceDefault((WPARAM)chg->hMeta, 0); }
HANDLE JabberDBCreateContact(TlenProtocol *proto, char *jid, char *nick, BOOL temporary) { HANDLE hContact; if (jid==NULL || jid[0]=='\0') return NULL; if ((hContact=JabberHContactFromJID(proto, jid)) == NULL) { hContact = (HANDLE) CallService(MS_DB_CONTACT_ADD, 0, 0); CallService(MS_PROTO_ADDTOCONTACT, (WPARAM) hContact, (LPARAM) proto->iface.m_szModuleName); DBWriteContactSettingString(hContact, proto->iface.m_szModuleName, "jid", jid); if (nick!=NULL && nick[0]!='\0') DBWriteContactSettingString(hContact, proto->iface.m_szModuleName, "Nick", nick); if (temporary) DBWriteContactSettingByte(hContact, "CList", "NotOnList", 1); } return hContact; }
static void SetAvatar(HANDLE hContact, JABBER_LIST_ITEM *item, char *data, int len, DWORD format) { FILE* out; char filename[MAX_PATH]; char md5[33]; MD5 context; int i; md5_init(&context); md5_update(&context, data, len); md5_finalize(&context); if (format == PA_FORMAT_UNKNOWN && len > 4) { format = JabberGetPictureType(data); } for (i=0;i<16;i++) { char lo, hi; unsigned int j=context.state[i>>2]; j>>=8*(i%4); j&=0xFF; lo = j & 0x0F; hi = j >> 4; hi = hi + ((hi > 9) ? 'a' - 10 : '0'); lo = lo + ((lo > 9) ? 'a' - 10 : '0'); md5[i*2] = hi; md5[i*2+1] = lo; } md5[i*2] = 0; if (item != NULL) { char *hash = item->avatarHash; item->avatarFormat = format; item->avatarHash = mir_strdup(md5); mir_free(hash); } else { jabberThreadInfo->avatarFormat = format; strcpy(jabberThreadInfo->avatarHash, md5); } TlenGetAvatarFileName(item, filename, sizeof filename ); DeleteFileA(filename); out = fopen( filename, "wb" ); if ( out != NULL ) { fwrite( data, len, 1, out ); fclose( out ); DBWriteContactSettingString(hContact, "ContactPhoto", "File", filename ); DBWriteContactSettingString(hContact, jabberProtoName, "AvatarHash", md5); DBWriteContactSettingDword(hContact, jabberProtoName, "AvatarFormat", format); } ProtoBroadcastAck( jabberProtoName, hContact, ACKTYPE_AVATAR, ACKRESULT_STATUS, NULL , 0); }
int myDBWriteStringEncode(HANDLE hContact,const char *szModule,const char *szSetting,const char *val) { int len = (int)strlen(val)+64; char *buf = (LPSTR)alloca(len); strncpy(buf,val,len); CallService(MS_DB_CRYPT_ENCODESTRING,(WPARAM)len,(LPARAM)buf); int ret = DBWriteContactSettingString(hContact,szModule,szSetting,buf); return ret; }
void write_ping_address(PINGADDRESS *i) { bool is_contact = (bool)(CallService(MS_DB_CONTACT_IS, (WPARAM)i->hContact, 0) != 0); if(!is_contact) { //MessageBox(0, "Creating contact", "Ping", MB_OK); i->hContact = (HANDLE)CallService(MS_DB_CONTACT_ADD, 0, 0); CallService( MS_PROTO_ADDTOCONTACT, ( WPARAM )i->hContact, ( LPARAM )PROTO ); CallService(MS_IGNORE_IGNORE, (WPARAM)i->hContact, (WPARAM)IGNOREEVENT_USERONLINE); } DBWriteContactSettingString(i->hContact, PROTO, "Address", i->pszName); set_changing_clist_handle(TRUE); DBWriteContactSettingString(i->hContact, "CList", "MyHandle", i->pszLabel); set_changing_clist_handle(FALSE); DBWriteContactSettingString(i->hContact, PROTO, "Nick", i->pszLabel); DBWriteContactSettingWord(i->hContact, PROTO, "Status", i->status); DBWriteContactSettingDword(i->hContact, PROTO, "Port", i->port); DBWriteContactSettingString(i->hContact, PROTO, "Proto", i->pszProto); if(strlen(i->pszCommand)) DBWriteContactSettingString(i->hContact, PROTO, "Command", i->pszCommand); else DBDeleteContactSetting(i->hContact, PROTO, "Command"); if(strlen(i->pszParams)) DBWriteContactSettingString(i->hContact, PROTO, "CommandParams", i->pszParams); else DBDeleteContactSetting(i->hContact, PROTO, "CommandParams"); DBWriteContactSettingWord(i->hContact, PROTO, "SetStatus", i->set_status); DBWriteContactSettingWord(i->hContact, PROTO, "GetStatus", i->get_status); DBWriteContactSettingWord(i->hContact, PROTO, "Index", i->index); if(strlen(i->pszCListGroup)) DBWriteContactSettingString(i->hContact, "CList", "Group", i->pszCListGroup); else DBDeleteContactSetting(i->hContact, "CList", "Group"); }
BOOL SM_RemoveAll (void) { while (m_WndList) { SESSION_INFO *pLast = m_WndList->next; if(m_WndList->hWnd) { SendMessage(m_WndList->hWnd, GC_EVENT_CONTROL+WM_USER+500, SESSION_TERMINATE, 2); } DoEventHook(m_WndList->pszID, m_WndList->pszModule, GC_SESSION_TERMINATE, NULL, NULL, (DWORD)m_WndList->dwItemData); if(m_WndList->hContact) CList_SetOffline(m_WndList->hContact, m_WndList->iType == GCW_CHATROOM?TRUE:FALSE); DBWriteContactSettingString(m_WndList->hContact, m_WndList->pszModule , "Topic", ""); DBDeleteContactSetting(m_WndList->hContact, "CList", "StatusMsg"); DBWriteContactSettingString(m_WndList->hContact, m_WndList->pszModule, "StatusBar", ""); UM_RemoveAll(&m_WndList->pUsers); TM_RemoveAll(&m_WndList->pStatuses); LM_RemoveAll(&m_WndList->pLog, &m_WndList->pLogEnd); m_WndList->iStatusCount = 0; m_WndList->nUsersInNicklist = 0; free (m_WndList->pszID); free (m_WndList->pszModule); if(m_WndList->pszName) free(m_WndList->pszName); if(m_WndList->pszStatusbarText) free(m_WndList->pszStatusbarText); if(m_WndList->pszTopic) free(m_WndList->pszTopic); while (m_WndList->lpCommands != NULL) { COMMAND_INFO *pNext = m_WndList->lpCommands->next; free(m_WndList->lpCommands->lpCommand); free(m_WndList->lpCommands); m_WndList->lpCommands = pNext; } free (m_WndList); m_WndList = pLast; } m_WndList = NULL; return TRUE; }
void JabberDBAddAuthRequest(char *jid, char *nick) { char *s, *p, *q; DBEVENTINFO dbei = {0}; PBYTE pCurBlob; HANDLE hContact; // strip resource if present s = mir_strdup(jid); if ((p=strchr(s, '@')) != NULL) { if ((q=strchr(p, '/')) != NULL) *q = '\0'; } _strlwr(s); if ((hContact=JabberHContactFromJID(jid)) == NULL) { hContact = (HANDLE) CallService(MS_DB_CONTACT_ADD, 0, 0); CallService(MS_PROTO_ADDTOCONTACT, (WPARAM) hContact, (LPARAM) jabberProtoName); DBWriteContactSettingString(hContact, jabberProtoName, "jid", s); } else { DBDeleteContactSetting(hContact, jabberProtoName, "Hidden"); } DBWriteContactSettingString(hContact, jabberProtoName, "Nick", nick); //blob is: uin(DWORD), hContact(HANDLE), nick(ASCIIZ), first(ASCIIZ), last(ASCIIZ), email(ASCIIZ), reason(ASCIIZ) //blob is: 0(DWORD), hContact(HANDLE), nick(ASCIIZ), ""(ASCIIZ), ""(ASCIIZ), email(ASCIIZ), ""(ASCIIZ) dbei.cbSize = sizeof(DBEVENTINFO); dbei.szModule = jabberProtoName; dbei.timestamp = (DWORD) time(NULL); dbei.flags = 0; dbei.eventType = EVENTTYPE_AUTHREQUEST; dbei.cbBlob = sizeof(DWORD) + sizeof(HANDLE) + strlen(nick) + strlen(jid) + 5; pCurBlob = dbei.pBlob = (PBYTE) mir_alloc(dbei.cbBlob); *((PDWORD) pCurBlob) = 0; pCurBlob += sizeof(DWORD); *((PHANDLE) pCurBlob) = hContact; pCurBlob += sizeof(HANDLE); strcpy((char *) pCurBlob, nick); pCurBlob += strlen(nick)+1; *pCurBlob = '\0'; pCurBlob++; //firstName *pCurBlob = '\0'; pCurBlob++; //lastName strcpy((char *) pCurBlob, jid); pCurBlob += strlen(jid)+1; *pCurBlob = '\0'; //reason CallService(MS_DB_EVENT_ADD, (WPARAM) (HANDLE) NULL, (LPARAM) &dbei); JabberLog("Setup DBAUTHREQUEST with nick='%s' jid='%s'", nick, jid); }
void reset_myhandle() { EnterCriticalSection(&list_cs); set_changing_clist_handle(true); for(PINGLIST::iterator i = list_items.begin(); i != list_items.end(); i++) { DBWriteContactSettingString(i->hContact, "CList", "MyHandle", i->pszLabel); } set_changing_clist_handle(false); LeaveCriticalSection(&list_cs); }