Example #1
0
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;
}
Example #2
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();
}
Example #3
0
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;
}
Example #4
0
////////// 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;
};
Example #7
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);
		}
	}
}
Example #9
0
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;
}
Example #10
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);
	}
}
Example #11
0
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;
}
Example #12
0
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);
}
Example #13
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);

	}
}
Example #14
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;
}
Example #15
0
/** 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;
}
Example #16
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;
}
Example #18
0
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;
}
Example #19
0
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));
		}
	}
}
Example #20
0
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;
}
Example #21
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);
	}
}
Example #22
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);

};
Example #23
0
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;
}
Example #24
0
// 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));
}
Example #26
0
// 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;
}
Example #27
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);
}
Example #28
0
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);
	}
}
Example #29
0
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;
}
Example #30
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;
}