Exemplo n.º 1
0
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);
		}
	}
}
Exemplo n.º 2
0
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);
		}
	}
}
Exemplo n.º 3
0
//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"));
			}

		}
	}

}
Exemplo n.º 4
0
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);
}
Exemplo n.º 5
0
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);
		}
	}
}
Exemplo n.º 6
0
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;
};
Exemplo n.º 7
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");
	}
}
Exemplo n.º 8
0
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);
}
Exemplo n.º 9
0
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;
}
Exemplo n.º 10
0
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;
}
Exemplo n.º 11
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;
}
Exemplo n.º 12
0
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;
}
Exemplo n.º 13
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);
}
Exemplo n.º 14
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);
}
Exemplo n.º 15
0
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;
}
Exemplo n.º 16
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;
}
Exemplo n.º 17
0
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;
}
Exemplo n.º 18
0
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;

}
Exemplo n.º 19
0
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;
}
Exemplo n.º 20
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;
}
Exemplo n.º 21
0
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;
}
Exemplo n.º 22
0
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
	}
}
Exemplo n.º 23
0
/** 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);
}
Exemplo n.º 24
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;
}
Exemplo n.º 25
0
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);
}
Exemplo n.º 26
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;
}
Exemplo n.º 27
0
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");
}
Exemplo n.º 28
0
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;
}
Exemplo n.º 29
0
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);
}
Exemplo n.º 30
0
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);
}