int __cdecl onIconPressed(WPARAM wParam, LPARAM lParam) { HANDLE hContact = (HANDLE)wParam; HANDLE hMeta = hContact; if(metaIsProtoMetaContacts(hContact)) hContact = metaGetMostOnline(hContact); // возьмем тот, через который пойдет сообщение else if(metaIsSubcontact(hContact)) hMeta = metaGetContact(hContact); StatusIconClickData *sicd = (StatusIconClickData *)lParam; if(strcmp(sicd->szModule, szGPGModuleName)) return 0; // not our event void setSrmmIcon(HANDLE); void setClistIcon(HANDLE); bool isContactHaveKey(HANDLE hContact); BYTE enc = DBGetContactSettingByte(hContact, szGPGModuleName, "GPGEncryption", 0); if(enc) { DBWriteContactSettingByte(hContact, szGPGModuleName, "GPGEncryption", 0); DBWriteContactSettingByte(hMeta, szGPGModuleName, "GPGEncryption", 0); setSrmmIcon(hContact); setClistIcon(hContact); } else if(!enc) { if(!isContactHaveKey(hContact)) { void ShowLoadPublicKeyDialog(); extern map<int, HANDLE> user_data; extern int item_num; item_num = 0; //black magic here user_data[1] = hContact; ShowLoadPublicKeyDialog(); } else { DBWriteContactSettingByte(hContact, szGPGModuleName, "GPGEncryption", 1); DBWriteContactSettingByte(hMeta, szGPGModuleName, "GPGEncryption", 1); setSrmmIcon(hContact); setClistIcon(hContact); return 0; } if(isContactHaveKey(hContact)) { DBWriteContactSettingByte(hContact, szGPGModuleName, "GPGEncryption", 1); DBWriteContactSettingByte(hMeta, szGPGModuleName, "GPGEncryption", 1); setSrmmIcon(hContact); setClistIcon(hContact); } } return 0; }
static void SortGroup(struct ClcData *dat,struct ClcGroup *group,int useInsertionSort) { int i,sortCount; for(i=group->contactCount-1;i>=0;i--) { if(group->contact[i].type==CLCIT_DIVIDER) { group->contactCount--; memmove(&group->contact[i],&group->contact[i+1],sizeof(struct ClcContact)*(group->contactCount-i)); } } for(i=0;i<group->contactCount;i++) if(group->contact[i].type!=CLCIT_INFO) break; if(i>group->contactCount-2) return; if(group->contact[i].type==CLCIT_GROUP) { if(dat->exStyle&CLS_EX_SORTGROUPSALPHA) { for(sortCount=0;i+sortCount<group->contactCount;sortCount++) if(group->contact[i+sortCount].type!=CLCIT_GROUP) break; qsort(group->contact+i,sortCount,sizeof(struct ClcContact),GroupSortProc); i=i+sortCount; } for(;i<group->contactCount;i++) if(group->contact[i].type==CLCIT_CONTACT) break; if(group->contactCount-i<2) return; } for(sortCount=0;i+sortCount<group->contactCount;sortCount++) if(group->contact[i+sortCount].type!=CLCIT_CONTACT) break; if(useInsertionSort) InsertionSort(group->contact+i,sortCount,ContactSortProc); else qsort(group->contact+i,sortCount,sizeof(struct ClcContact),ContactSortProc); if(dat->exStyle&CLS_EX_DIVIDERONOFF) { int prevContactOnline=0; for(i=0;i<group->contactCount;i++) { if(group->contact[i].type!=CLCIT_CONTACT && group->contact[i].type!=CLCIT_GROUP) continue; if ((group->contact[i].type==CLCIT_GROUP) && DBGetContactSettingByte(NULL,"CList","PlaceOfflineToRoot",0)) prevContactOnline=1; if (group->contact[i].type==CLCIT_CONTACT) if(group->contact[i].flags&CONTACTF_ONLINE) prevContactOnline=1; else { if(prevContactOnline) { i=AddItemToGroup(group,i); group->contact[i].type=CLCIT_DIVIDER; if (group->contact[i].szText) mir_free(group->contact[i].szText); group->contact[i].szText=mir_strdupT(TranslateT("Offline")); } break; } } } ClearRowByIndexCache(); }
BOOL CList_SetOffline(HANDLE hContact, BOOL bHide) { if ( hContact ) { char * szProto = (char *) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); int i = DBGetContactSettingByte(hContact, szProto, "ChatRoom", 0); DBWriteContactSettingWord(hContact, szProto,"ApparentMode",(LPARAM) 0); DBWriteContactSettingWord(hContact, szProto, "Status", ID_STATUS_OFFLINE); if (bHide && i != GCW_SERVER) DBWriteContactSettingByte(hContact, "CList", "Hidden", 1); return TRUE; } return FALSE; }
////////// By FYR///////////// int ExtIconFromStatusMode(HANDLE hContact, const char *szProto,int status) { if (DBGetContactSettingByte(NULL,"CLC","Meta",0)==1) return IconFromStatusMode(szProto,status); if (szProto!=NULL) if (MyStrCmp(szProto,"MetaContacts")==0) { hContact=(HANDLE)CallService(MS_MC_GETMOSTONLINECONTACT,(UINT)hContact,0); if (hContact!=0) { szProto=(char*)CallService(MS_PROTO_GETCONTACTBASEPROTO,(UINT)hContact,0); status=DBGetContactSettingWord(hContact,szProto,"Status",ID_STATUS_OFFLINE); } } return IconFromStatusMode(szProto,status); }
int SetHideOffline(WPARAM wParam, LPARAM lParam) { switch ((int) wParam) { case 0: DBWriteContactSettingByte(NULL, "CList", "HideOffline", 0); break; case 1: DBWriteContactSettingByte(NULL, "CList", "HideOffline", 1); break; case -1: DBWriteContactSettingByte(NULL, "CList", "HideOffline", (BYTE) ! DBGetContactSettingByte(NULL, "CList", "HideOffline", SETTING_HIDEOFFLINE_DEFAULT)); break; } SetButtonStates(hwndContactList); LoadContactTree(); return 0; }
static int OnBuildGroupMenu(WPARAM wParam,LPARAM lParam) { CLISTMENUITEM mi; ZeroMemory(&mi,sizeof(mi)); mi.cbSize = sizeof(mi); mi.flags = CMIM_FLAGS | (DBGetContactSettingByte(NULL,"CList","HideOffline",SETTING_HIDEOFFLINE_DEFAULT)?CMIF_CHECKED:0); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hHideOfflineUsersMenuItem, (LPARAM)&mi); ZeroMemory(&mi,sizeof(mi)); mi.cbSize = sizeof(mi); mi.flags = CMIM_FLAGS | (SendMessage(hwndContactTree,CLM_GETHIDEOFFLINEROOT,0,0)?CMIF_CHECKED:0); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hHideOfflineUsersOutHereMenuItem, (LPARAM)&mi); ZeroMemory(&mi,sizeof(mi)); mi.cbSize = sizeof(mi); mi.flags = CMIM_FLAGS | (GetWindowLong(hwndContactTree,GWL_STYLE)&CLS_HIDEEMPTYGROUPS?CMIF_CHECKED:0); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hHideEmptyGroupsMenuItem, (LPARAM)&mi); ZeroMemory(&mi,sizeof(mi)); mi.cbSize = sizeof(mi); mi.flags = CMIM_FLAGS | (GetWindowLong(hwndContactTree,GWL_STYLE)&CLS_USEGROUPS?0:CMIF_CHECKED); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hDisableGroupsMenuItem, (LPARAM)&mi); ZeroMemory(&mi,sizeof(mi)); mi.cbSize = sizeof(mi); mi.flags = CMIM_FLAGS; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hGroupMainMenuItemProxy, (LPARAM)&mi); CheckMenuItem(hMenuOldContext, POPUP_VISIBILITY, MF_BYCOMMAND | (g_CluiData.dwFlags & CLUI_SHOWVISI ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem(hMenuOldContext, POPUP_FRAME, MF_BYCOMMAND | (g_CluiData.dwFlags & CLUI_FRAME_CLISTSUNKEN ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem(hMenuOldContext, POPUP_TOOLBAR, MF_BYCOMMAND | (g_CluiData.dwFlags & CLUI_FRAME_SHOWTOPBUTTONS ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem(hMenuOldContext, POPUP_BUTTONS, MF_BYCOMMAND | (g_CluiData.dwFlags & CLUI_FRAME_SHOWBOTTOMBUTTONS ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem(hMenuOldContext, POPUP_SHOWMETAICONS, MF_BYCOMMAND | (g_CluiData.dwFlags & CLUI_USEMETAICONS ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem(hMenuEventArea, ID_EVENTAREA_AUTOHIDE, MF_BYCOMMAND | (g_CluiData.dwFlags & CLUI_FRAME_AUTOHIDENOTIFY ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem(hMenuEventArea, ID_EVENTAREA_ENABLED, MF_BYCOMMAND | (g_CluiData.dwFlags & CLUI_FRAME_USEEVENTAREA ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem(hMenuEventArea, ID_EVENTAREA_SUNKENFRAME, MF_BYCOMMAND | (g_CluiData.dwFlags & CLUI_FRAME_EVENTAREASUNKEN ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem(hMenuOldContext, POPUP_SHOWSTATUSICONS, MF_BYCOMMAND | (g_CluiData.dwFlags & CLUI_FRAME_STATUSICONS ? MF_CHECKED : MF_UNCHECKED)); // floater menu items EnableMenuItem(hMenuOldContext, POPUP_FLOATER_AUTOHIDE, MF_BYCOMMAND | (g_CluiData.bUseFloater & CLUI_USE_FLOATER ? MF_ENABLED : MF_GRAYED)); EnableMenuItem(hMenuOldContext, POPUP_FLOATER_EVENTS, MF_BYCOMMAND | (g_CluiData.bUseFloater & CLUI_USE_FLOATER ? MF_ENABLED : MF_GRAYED)); CheckMenuItem(hMenuOldContext, POPUP_FLOATER, MF_BYCOMMAND | (g_CluiData.bUseFloater & CLUI_USE_FLOATER ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem(hMenuOldContext, POPUP_FLOATER_AUTOHIDE, MF_BYCOMMAND | (g_CluiData.bUseFloater & CLUI_FLOATER_AUTOHIDE ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem(hMenuOldContext, POPUP_FLOATER_EVENTS, MF_BYCOMMAND | (g_CluiData.bUseFloater & CLUI_FLOATER_EVENTS ? MF_CHECKED : MF_UNCHECKED)); return 0; };
long httpd_startup() { static unsigned long tmpid; char tmp[MAX_PATH]; //////////// tzset(); //////////// svr_q_event = CreateEvent(0,0,0,0); if(!svr_q_event) { MB_Popup("HTTPDeamon","Could not create queue sync event!"); httpd_logaccess("ERROR: Could not create queue sync event!",GetLastError(),0,0); return 0; } if(!(svr_q_hTh = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)httpd_server_queue,NULL,0,&tmpid))) { MB_Popup("HTTPDeamon","Could not create queue thread!"); httpd_logaccess("ERROR: Could not create queue thread!",GetLastError(),0,0); CloseHandle(svr_q_event); svr_q_event = NULL; return 0; } if(DBGetContactSettingByte(NULL,MBOT,"WWWLog",1)==1) { InitializeCriticalSectionAndSpinCount(&svr_log_cs,0x80000100); _snprintf(tmp,sizeof(tmp)-1,"%s\\mbot\\httpd.log",g_root); svr_log = fopen(tmp,"a+b"); if(!svr_log) { MB_Popup("HTTPDeamon","Could not create log file!"); httpd_logaccess("ERROR: Could not create log file!",GetLastError(),0,0); DeleteCriticalSection(&svr_log_cs); } } if(!(svr_hTh = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)httpd_server_thread,NULL,0,&tmpid))) { MB_Popup("HTTPDeamon","Could not create server thread!"); httpd_logaccess("ERROR: Could not create server thread!",GetLastError(),0,0); CloseHandle(svr_q_event); TerminateThread(svr_q_hTh,0); CloseHandle(svr_q_hTh); svr_q_event = NULL; svr_q_hTh = NULL; return 0; } return 1; }
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); } } }
int CList_RoomDoubleclicked(WPARAM wParam,LPARAM lParam) { DBVARIANT dbv; char *szProto; HANDLE hContact = (HANDLE)wParam; if (!hContact) return 0; szProto = (char *) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); if ( MM_FindModule(szProto)) { if(DBGetContactSettingByte(hContact, szProto, "ChatRoom", 0) == 0) return 0; if ( !DBGetContactSettingTString( hContact, szProto, "ChatRoomID", &dbv )) { SESSION_INFO* si = SM_FindSession( dbv.ptszVal, szProto ); if ( si ) { // is the "toggle visibility option set, so we need to close the window? if (si->hWnd != NULL && DBGetContactSettingByte(NULL, "Chat", "ToggleVisibility", 0)==1 && !CallService(MS_CLIST_GETEVENT, (WPARAM)hContact, 0) && IsWindowVisible(si->hWnd) && !IsIconic(si->hWnd)) { PostMessage(si->hWnd, GC_CLOSEWINDOW, 0, 0); DBFreeVariant(&dbv); return 1; } ShowRoom(si, WINDOW_VISIBLE, TRUE); } DBFreeVariant(&dbv); return 1; } } return 0; }
void StatusUpdaterThread(HWND hwndDlg) { int i,curdelay,lastcheck=0; HANDLE hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_LOWEST); while (!stopStatusUpdater) { curdelay=DBGetContactSettingByte(hContact,"CList","StatusMsgAutoDelay",15000); if (curdelay<5000) curdelay=5000; if ((int)(GetTickCount()-lastcheck)>curdelay) { lastcheck=GetTickCount(); if (DBGetContactSettingByte(hContact,"CList","StatusMsgAuto",0)) { for (i=0; i<5; i++) { if (hContact!=NULL) { pdisplayNameCacheEntry pdnce =(pdisplayNameCacheEntry)pcli->pfnGetCacheEntry((HANDLE)hContact); if (pdnce && !pdnce->protoNotExists && pdnce->szProto) { CallContactService(hContact, PSS_GETAWAYMSG, 0, 0); } hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); } if (hContact==NULL) { hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); if (hContact==NULL) break; } Sleep(500); } } } //Sleep(DBGetContactSettingByte(hContact,"CList","StatusMsgAutoDelay",100)); Sleep(200); } }
int GetStatusIconsCount(HANDLE hContact) { char buff[256]; int count = 0; int flags; struct StatusIconListNode *current = status_icon_list; while(current) { sprintf(buff, "SRMMStatusIconFlags%d", (int)current->sid.dwId); flags = DBGetContactSettingByte(hContact, current->sid.szModule, buff, current->sid.flags); if(!(flags & MBF_HIDDEN)) { count ++; } current = current->next; } return count; }
void LoadContactTree(void) { HANDLE hContact; int i, status, hideOffline; BOOL mc_disablehgh = ServiceExists(MS_MC_DISABLEHIDDENGROUP); DBVARIANT dbv = {0}; CallService(MS_CLUI_LISTBEGINREBUILD, 0, 0); for (i = 1; ; i++) { if (GetGroupNameT(i, NULL) == NULL) break; CallService(MS_CLUI_GROUPADDED, i, 0); } hideOffline = DBGetContactSettingByte(NULL, "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)) ChangeContactIcon(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); } } hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); } mc_hgh_removed = TRUE; sortByStatus = DBGetContactSettingByte(NULL, "CList", "SortByStatus", SETTING_SORTBYSTATUS_DEFAULT); sortByProto = DBGetContactSettingByte(NULL, "CList", "SortByProto", SETTING_SORTBYPROTO_DEFAULT); CallService(MS_CLUI_SORTLIST, 0, 0); CallService(MS_CLUI_LISTENDREBUILD, 0, 0); }
static VOID CALLBACK SortContactsTimer(HWND hwnd,UINT message,UINT idEvent,DWORD dwTime) { KillTimer(NULL,resortTimerId); resortTimerId=0; if (hwnd!=NULL) { KillTimer(hwnd,TIMERID_DELAYEDRESORTCLC); SetTimer(hwnd,TIMERID_DELAYEDRESORTCLC,DBGetContactSettingByte(NULL,"CLUI","DELAYEDTIMER",10),NULL); } else { CallService(MS_CLUI_SORTLIST,0,0); } }
int ThreadData::zlibRecv( char* data, long datalen ) { if ( zRecvReady ) { retry: zRecvDatalen = recvws( zRecvData, ZLIB_CHUNK_SIZE, MSG_NODUMP ); if ( zRecvDatalen == SOCKET_ERROR ) { proto->Log( "Netlib_Recv() failed, error=%d", WSAGetLastError()); return SOCKET_ERROR; } if ( zRecvDatalen == 0 ) return 0; zStreamIn.avail_in = zRecvDatalen; zStreamIn.next_in = ( Bytef* )zRecvData; } zStreamIn.avail_out = datalen; zStreamIn.next_out = ( BYTE* )data; switch ( inflate( &zStreamIn, Z_NO_FLUSH )) { case Z_OK: proto->Log( "Inflate: Z_OK" ); break; case Z_BUF_ERROR: proto->Log( "Inflate: Z_BUF_ERROR" ); break; case Z_DATA_ERROR: proto->Log( "Inflate: Z_DATA_ERROR" ); break; case Z_MEM_ERROR: proto->Log( "Inflate: Z_MEM_ERROR" ); break; } int len = datalen - zStreamIn.avail_out; if ( DBGetContactSettingByte( NULL, "Netlib", "DumpRecv", TRUE ) == TRUE ) { char* szLogBuffer = ( char* )alloca( len+32 ); memcpy( szLogBuffer, data, len ); szLogBuffer[ len ]='\0'; proto->Log( "(ZLIB) Data received\n%s\n===IN: %d(%d) bytes", szLogBuffer, len, zRecvDatalen ); } if ( len == 0 ) goto retry; zRecvReady = ( zStreamIn.avail_out != 0 ); return len; }
/** Set/unset (i.e. toggle) contact to force use of default contact * * Set the given contact to be the default one for the metacontact to which it is linked. * * @param wParam : \c HANDLE to the MetaContact to be set as default * @param lParam : \c HWND to the clist window (This means the function has been called via the contact menu). */ INT_PTR Meta_ForceDefault(WPARAM wParam,LPARAM lParam) { if(DBGetContactSettingDword((HANDLE)wParam,META_PROTO, META_ID, (DWORD)-1) != (DWORD)-1) { // the wParam is a MetaContact BOOL current = DBGetContactSettingByte((HANDLE)wParam, META_PROTO, "ForceDefault", 0); current = !current; DBWriteContactSettingByte((HANDLE)wParam, META_PROTO, "ForceDefault", (BYTE)current); DBWriteContactSettingDword((HANDLE)wParam, META_PROTO, "ForceSend", 0); if(current) NotifyEventHooks(hEventForceSend, wParam, (LPARAM)Meta_GetContactHandle((HANDLE)wParam, DBGetContactSettingDword((HANDLE)wParam, META_PROTO, "Default", -1))); else NotifyEventHooks(hEventUnforceSend, wParam, 0); } return 0; }
void gg_keepalive_init(GGPROTO *gg) { if (DBGetContactSettingByte(NULL, GG_PROTO, GG_KEY_KEEPALIVE, GG_KEYDEF_KEEPALIVE)) { int i; for(i = 0; i < MAX_TIMERS && g_timers[i] != NULL; i++); if(i < MAX_TIMERS) { #ifdef DEBUGMODE gg_netlog(gg, "gg_keepalive_init(): Initializing Timer %d", i); #endif gg->timer = SetTimer(NULL, 0, 1000 * 30, gg_keepalive); g_timers[i] = gg; } } }
HANDLE Meta_GetActive(HANDLE hMeta) { HANDLE hActive = 0; if(DBGetContactSettingByte(hMeta, MODULE, "ForceDefault", 0)) hActive = (HANDLE)MetaAPI_GetDefault((WPARAM)hMeta, 0); if(!hActive) { if((hActive = (HANDLE)DBGetContactSettingDword(hMeta, MODULE, "ForceSend", 0)) == 0) { if((hActive = (HANDLE)DBGetContactSettingDword(hMeta, MODULE, "TempDefault", 0)) == 0) { hActive = Meta_GetMostOnline(hMeta); if(ContactStatus(hActive, ContactProto(hActive)) == ID_STATUS_OFFLINE) { hActive = Meta_GetMostOnlineSupporting(hMeta, PFLAGNUM_4, PF4_IMSENDOFFLINE); } } } } return hActive; }
BOOL isSecureIM(pUinKey ptr, BOOL emptyMirverAsSecureIM) { if( !bAIP ) return false; if( !ptr->proto->inspecting ) return false; BOOL isSecureIM = false; if( bNOL && DBGetContactSettingByte(ptr->hContact,"CList","NotOnList",0) ) { return false; } LPSTR mirver = myDBGetString(ptr->hContact,ptr->proto->name,"MirVer"); if( mirver ) { isSecureIM = (emptyMirverAsSecureIM && !*mirver) || (strstr(mirver,"SecureIM")!=NULL) || (strstr(mirver,"secureim")!=NULL); mir_free(mirver); } return isSecureIM; }
void RegisterProtoIcons (char *protoname) { if (ServiceExists(MS_SKIN2_GETICON)&&DBGetContactSettingByte(NULL,"CList","UseProtoIconFromIcoLib",1)) { int i; char buf[256]; char buf2[256]; for (i=0;i<8;i++) { sprintf(buf,"%s #%d",protoname,i); sprintf(buf2,"Contact List/Connection Icons %s",protoname); LoadIconFromExternalFile(NULL,i,TRUE,TRUE,buf,buf2,buf,0,GetConnectingIconForProto_DLL(protoname,i)); } } }
int FacebookProto::SetStatus( int new_status ) { LOG("===== Beginning SetStatus process"); // Routing statuses not supported by Facebook switch ( new_status ) { case ID_STATUS_INVISIBLE: case ID_STATUS_OFFLINE: m_iDesiredStatus = new_status; break; // TODO RM: needed/useful? case ID_STATUS_CONNECTING: m_iDesiredStatus = ID_STATUS_OFFLINE; break; case ID_STATUS_IDLE: default: m_iDesiredStatus = ID_STATUS_INVISIBLE; if (DBGetContactSettingByte(NULL,m_szModuleName,FACEBOOK_KEY_MAP_STATUSES, DEFAULT_MAP_STATUSES)) break; case ID_STATUS_ONLINE: case ID_STATUS_FREECHAT: m_iDesiredStatus = ID_STATUS_ONLINE; break; } if ( m_iStatus == ID_STATUS_CONNECTING ) { LOG("===== Status is connecting, no change"); return 0; } if ( m_iStatus == m_iDesiredStatus) { LOG("===== Statuses are same, no change"); return 0; } facy.invisible_ = ( new_status == ID_STATUS_INVISIBLE ); ForkThread( &FacebookProto::ChangeStatus, this ); return 0; }
static void RestoreUnreadMessageAlerts(void) { CLISTEVENT cle = { 0 }; DBEVENTINFO dbei = { 0 }; char toolTip[256]; int windowAlreadyExists; int autoPopup = DBGetContactSettingByte(NULL, SRMMMOD, SRMSGSET_AUTOPOPUP, SRMSGDEFSET_AUTOPOPUP); HANDLE hDbEvent, hContact; dbei.cbSize = sizeof(dbei); cle.cbSize = sizeof(cle); cle.hIcon = LoadSkinnedIcon(SKINICON_EVENT_MESSAGE); cle.pszService = "SRMsg/ReadMessage"; hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); while (hContact) { hDbEvent = (HANDLE) CallService(MS_DB_EVENT_FINDFIRSTUNREAD, (WPARAM) hContact, 0); while (hDbEvent) { dbei.cbBlob = 0; CallService(MS_DB_EVENT_GET, (WPARAM) hDbEvent, (LPARAM) & dbei); if (!(dbei.flags & (DBEF_SENT | DBEF_READ)) && dbei.eventType == EVENTTYPE_MESSAGE) { windowAlreadyExists = WindowList_Find(g_dat->hMessageWindowList, hContact) != NULL; if (windowAlreadyExists) continue; if (autoPopup && !windowAlreadyExists) { HWND hwndParent; struct NewMessageWindowLParam newData = { 0 }; newData.hContact = hContact; hwndParent = CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_MSGWIN), NULL, DlgProcParentWindow, (LPARAM) & newData); CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_MSG), hwndParent, DlgProcMessage, (LPARAM) & newData); // CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_MSG), NULL, DlgProcMessage, (LPARAM) & newData); } else { cle.hContact = hContact; cle.hDbEvent = hDbEvent; _snprintf(toolTip, sizeof(toolTip), Translate("Message from %s"), (char *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM) hContact, 0)); cle.pszTooltip = toolTip; CallService(MS_CLIST_ADDEVENT, 0, (LPARAM) & cle); } } hDbEvent = (HANDLE) CallService(MS_DB_EVENT_FINDNEXT, (WPARAM) hDbEvent, 0); } hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); } }
boolean isColumnVisible(int extra) { switch(extra) { case EXTRA_ICON_ADV1: return(DBGetContactSettingByte(NULL,CLUIFrameModule,"EXTRA_ICON_ADV1",1)); case EXTRA_ICON_ADV2: return(DBGetContactSettingByte(NULL,CLUIFrameModule,"EXTRA_ICON_ADV2",1)); case EXTRA_ICON_SMS: return(DBGetContactSettingByte(NULL,CLUIFrameModule,"EXTRA_ICON_SMS",1)); case EXTRA_ICON_EMAIL: return(DBGetContactSettingByte(NULL,CLUIFrameModule,"EXTRA_ICON_EMAIL",1)); case EXTRA_ICON_PROTO: return(DBGetContactSettingByte(NULL,CLUIFrameModule,"EXTRA_ICON_PROTO",1)); case EXTRA_ICON_WEB: return(DBGetContactSettingByte(NULL,CLUIFrameModule,"EXTRA_ICON_WEB",1)); case EXTRA_ICON_CLIENT: return(DBGetContactSettingByte(NULL,CLUIFrameModule,"EXTRA_ICON_CLIENT",1)); }; return(FALSE); };
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; }
// Caution: DO NOT use JabberSend() to send binary (non-string) data int JabberSend(HANDLE hConn, const char *fmt, ...) { char *str; int size; va_list vararg; int result; #ifndef TLEN_PLUGIN PVOID ssl; char *szLogBuffer; #endif EnterCriticalSection(&mutex); va_start(vararg,fmt); size = 512; str = (char *) malloc(size); while (_vsnprintf(str, size, fmt, vararg) == -1) { size += 512; str = (char *) realloc(str, size); } va_end(vararg); JabberLog("SEND:%s", str); size = strlen(str); #ifndef TLEN_PLUGIN if ((ssl=JabberSslHandleToSsl(hConn)) != NULL) { if (DBGetContactSettingByte(NULL, "Netlib", "DumpSent", TRUE) == TRUE) { if ((szLogBuffer=(char *)malloc(size+32)) != NULL) { strcpy(szLogBuffer, "(SSL) Data sent\n"); memcpy(szLogBuffer+strlen(szLogBuffer), str, size+1 /* also copy \0 */); Netlib_Logf(hNetlibUser, "%s", szLogBuffer); // %s to protect against when fmt tokens are in szLogBuffer causing crash free(szLogBuffer); } } result = pfn_SSL_write(ssl, str, size); } else result = JabberWsSend(hConn, str, size); #else result = JabberWsSend(hConn, str, size); #endif LeaveCriticalSection(&mutex); free(str); return result; }
static void ResetCList(HWND hwndDlg) { int i; if (CallService(MS_CLUI_GETCAPS, 0, 0) & CLUIF_DISABLEGROUPS && !DBGetContactSettingByte(NULL, "CList", "UseGroups", SETTING_USEGROUPS_DEFAULT)) SendDlgItemMessage(hwndDlg, IDC_CLIST, CLM_SETUSEGROUPS, (WPARAM) FALSE, 0); else SendDlgItemMessage(hwndDlg, IDC_CLIST, CLM_SETUSEGROUPS, (WPARAM) TRUE, 0); SendDlgItemMessage(hwndDlg, IDC_CLIST, CLM_SETHIDEEMPTYGROUPS, 1, 0); SendDlgItemMessage(hwndDlg, IDC_CLIST, CLM_SETGREYOUTFLAGS, 0, 0); SendDlgItemMessage(hwndDlg, IDC_CLIST, CLM_SETLEFTMARGIN, 2, 0); SendDlgItemMessage(hwndDlg, IDC_CLIST, CLM_SETBKBITMAP, 0, (LPARAM) (HBITMAP) NULL); SendDlgItemMessage(hwndDlg, IDC_CLIST, CLM_SETBKCOLOR, GetSysColor(COLOR_WINDOW), 0); SendDlgItemMessage(hwndDlg, IDC_CLIST, CLM_SETINDENT, 10, 0); for (i = 0; i <= FONTID_MAX; i++) SendDlgItemMessage(hwndDlg, IDC_CLIST, CLM_SETTEXTCOLOR, i, GetSysColor(COLOR_WINDOWTEXT)); }
// returns 1 if the plugin should be enabled within this profile, filename is always lower case static int isPluginOnWhiteList(TCHAR * pluginname) { char* pluginnameA = _strlwr(mir_t2a(pluginname)); int rc = DBGetContactSettingByte(NULL, PLUGINDISABLELIST, pluginnameA, 0); mir_free(pluginnameA); if ( rc != 0 && askAboutIgnoredPlugins ) { TCHAR buf[256]; mir_sntprintf(buf, SIZEOF(buf), TranslateT("'%s' is disabled, re-enable?"), pluginname); if (MessageBox(NULL, buf, TranslateT("Re-enable Miranda plugin?"), MB_YESNO | MB_ICONQUESTION) == IDYES) { SetPluginOnWhiteList(pluginname, 1); rc = 0; } } return rc == 0; }
HICON GetConnectingIconForProto(char *szProto,int b) { if (ServiceExists(MS_SKIN2_GETICON)&&DBGetContactSettingByte(NULL,"CList","UseProtoIconFromIcoLib",1)) { HICON hIcon=0; char buf[256]; sprintf(buf,"%s #%d",szProto,b); hIcon=LoadIconFromExternalFile(NULL,b,TRUE,FALSE,buf,"Contact List/Connection Icons",buf,0,NULL); if (hIcon==NULL) return (GetConnectingIconForProto_DLL(szProto,b)); return (CopyIcon(hIcon)); }else { return(GetConnectingIconForProto_DLL(szProto,b)); } return (NULL); }
void RegisterAction(POPUPACTION *action) { int index; if ((index = gActions.getIndex(action)) >= 0) { DWORD flags = gActions[index]->flags; *gActions[index] = *action; gActions[index]->flags = flags; } else { POPUPACTION *actionCopy = (POPUPACTION *)mir_alloc(sizeof(POPUPACTION)); *actionCopy = *action; actionCopy->flags = DBGetContactSettingByte(NULL, "PopUpActions", actionCopy->lpzTitle, actionCopy->flags & PAF_ENABLED) ? PAF_ENABLED : 0; gActions.insert(actionCopy); } }
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; }
static int ProtocolAck(WPARAM wParam,LPARAM lParam) { ACKDATA *ack=(ACKDATA*)lParam; /* if (ack->type==ACKTYPE_AWAYMSG && ack->lParam) { DBVARIANT dbv; if (!DBGetContactSetting(ack->hContact, "CList", "StatusMsg", &dbv)) { if (!MyStrCmp(dbv.pszVal, (char *)ack->lParam)) { DBFreeVariant(&dbv); return 0; } DBFreeVariant(&dbv); } DBWriteContactSettingString(ack->hContact, "CList", "StatusMsg", (char *)ack->lParam); return 0; } */ if(ack->type!=ACKTYPE_STATUS) return 0; CallService(MS_CLUI_PROTOCOLSTATUSCHANGED,ack->lParam,(LPARAM)ack->szModule); if((int)ack->hProcess<ID_STATUS_ONLINE && ack->lParam>=ID_STATUS_ONLINE) { DWORD caps; caps=(DWORD)CallProtoService(ack->szModule,PS_GETCAPS,PFLAGNUM_1,0); if(caps&PF1_SERVERCLIST) { HANDLE hContact; char *szProto; hContact=(HANDLE)CallService(MS_DB_CONTACT_FINDFIRST,0,0); while(hContact) { pdisplayNameCacheEntry cacheEntry; cacheEntry=GetContactFullCacheEntry(hContact); szProto=cacheEntry->szProto; if(szProto!=NULL && !MyStrCmp(szProto,ack->szModule)) if(DBGetContactSettingByte(hContact,"CList","Delete",0)) CallService(MS_DB_CONTACT_DELETE,(WPARAM)hContact,0); hContact=(HANDLE)CallService(MS_DB_CONTACT_FINDNEXT,(WPARAM)hContact,0); } } } TrayIconUpdateBase(ack->szModule); return 0; }