Пример #1
0
int CheckBayes()
{
	char bayesdb_fullpath[MAX_PATH];
	char bayesdb_tmp[MAX_PATH];

	char* tmp = Utils_ReplaceVars("%miranda_userdata%");
	if (tmp[mir_strlen(tmp)-1] == '\\')
		tmp[mir_strlen(tmp)-1] = 0;
	mir_snprintf(bayesdb_tmp, "%s\\%s", tmp, BAYESDB_PATH);
	mir_free(tmp);

	if (ServiceExists(MS_FOLDERS_REGISTER_PATH)) {
		hBayesFolder = FoldersRegisterCustomPath(PLUGIN_NAME, Translate("Bayes database path"), bayesdb_tmp);
	} else hBayesFolder = 0;
	
	if (hBayesFolder)
		FoldersGetCustomPath(hBayesFolder, bayesdb_fullpath, MAX_PATH, bayesdb_tmp);
	else
		strncpy_s(bayesdb_fullpath, bayesdb_tmp, _TRUNCATE);

	mir_strcat(bayesdb_fullpath, "\\" BAYESDB_FILENAME);
	if (_access(bayesdb_fullpath,0) == 0)
		return 1;
	
	return 0;
}
Пример #2
0
// Avatars support
void gg_getavatarfilename(GGPROTO *gg, HANDLE hContact, char *pszDest, int cbLen)
{
	int tPathLen;
	char *path = (char *)_malloca(cbLen);
	char *avatartype = NULL;

	if (gg->hAvatarsFolder == NULL || FoldersGetCustomPath(gg->hAvatarsFolder, path, cbLen, "")) {
		char *tmpPath = Utils_ReplaceVars("%miranda_avatarcache%");
		tPathLen = mir_snprintf(pszDest, cbLen, "%s\\%s", tmpPath, GG_PROTO);
		mir_free(tmpPath);
	}
	else {
		strcpy(pszDest, path);
		tPathLen = (int)strlen(pszDest);
	}

	if (_access(pszDest, 0))
		CallService(MS_UTILS_CREATEDIRTREE, 0, (LPARAM)pszDest);

	switch (DBGetContactSettingByte(hContact, GG_PROTO, GG_KEY_AVATARTYPE, GG_KEYDEF_AVATARTYPE)) {
		case PA_FORMAT_JPEG: avatartype = "jpg"; break;
		case PA_FORMAT_GIF: avatartype = "gif"; break;
		case PA_FORMAT_PNG: avatartype = "png"; break;
	}

	if (hContact != NULL) {
		DBVARIANT dbv;
		if (!DBGetContactSettingString(hContact, GG_PROTO, GG_KEY_AVATARHASH, &dbv)) {
			mir_snprintf(pszDest + tPathLen, cbLen - tPathLen, "\\%s.%s", dbv.pszVal, avatartype);
			DBFreeVariant(&dbv);
		}
	}
	else
		mir_snprintf(pszDest + tPathLen, cbLen - tPathLen, "\\%s avatar.%s", GG_PROTO, avatartype);
}
Пример #3
0
int OpenBayes()
{
	char bayesdb_fullpath[MAX_PATH];
	char *bayesdb_fullpath_utf8;
	char *errmsg, *tmp;
	sqlite3_stmt *stmt;

	if (hBayesFolder) {
		FoldersGetCustomPath(hBayesFolder, bayesdb_fullpath, MAX_PATH, "");
	}
	else {
		tmp = Utils_ReplaceVars("%miranda_userdata%");
		if (tmp[mir_strlen(tmp)-1] == '\\')
			tmp[mir_strlen(tmp)-1] = 0;
		mir_strcpy(bayesdb_fullpath, tmp);
		mir_strcat(bayesdb_fullpath, "\\" BAYESDB_PATH);
		mir_free(tmp);
	}

	CreateDirectoryTree(bayesdb_fullpath);

	mir_strcat(bayesdb_fullpath, "\\" BAYESDB_FILENAME);
	bayesdb_fullpath_utf8 = mir_utf8encode(bayesdb_fullpath);
	
	if (sqlite3_open(bayesdb_fullpath_utf8, &bayesdb) == SQLITE_OK)
	{
		sqlite3_exec(bayesdb, "CREATE TABLE IF NOT EXISTS spam (token blob(16), num int)", NULL, NULL, &errmsg);
		sqlite3_exec(bayesdb, "CREATE TABLE IF NOT EXISTS ham (token blob(16), num int)", NULL, NULL, &errmsg);
		sqlite3_exec(bayesdb, "CREATE TABLE IF NOT EXISTS stats (key varchar(32), value int)", NULL, NULL, &errmsg);
		sqlite3_exec(bayesdb, "CREATE TABLE IF NOT EXISTS queue (contact int, msgtime int, message text)", NULL, NULL, &errmsg);
		sqlite3_prepare_v2(bayesdb, "SELECT count(1) FROM stats WHERE key='spam_msgcount' OR key='ham_msgcount'", -1, &stmt, NULL);
		if (sqlite3_step(stmt) == SQLITE_ROW)
			if (sqlite3_column_int(stmt, 0) != 2) {
				sqlite3_exec(bayesdb, "INSERT INTO stats VALUES ('spam_msgcount', 0)", NULL, NULL, NULL);
				sqlite3_exec(bayesdb, "INSERT INTO stats VALUES ('ham_msgcount', 0)", NULL, NULL, NULL);
			}
	} else {
		MessageBoxA(NULL, bayesdb_fullpath_utf8, "Can't open database", MB_OK);
	}

	mir_free(bayesdb_fullpath_utf8);

#ifdef _DEBUG
	tmp = Utils_ReplaceVars("%miranda_userdata%");
	if (tmp[mir_strlen(tmp)-1] == '\\')
		tmp[mir_strlen(tmp)-1] = 0;
	mir_snprintf(bayesdb_fullpath, "%s\\%s\\%s", tmp, BAYESDB_PATH, BAYESDBG_FILENAME);
	mir_free(tmp);
	bayesdb_fullpath_utf8 = mir_utf8encode(bayesdb_fullpath);
	if (sqlite3_open(bayesdb_fullpath_utf8, &bayesdbg) == SQLITE_OK)
	{
		sqlite3_exec(bayesdbg, "CREATE TABLE spam (token varchar(50), num int)", NULL, NULL, &errmsg);
		sqlite3_exec(bayesdbg, "CREATE TABLE ham (token varchar(50), num int)", NULL, NULL, &errmsg);
	}
	mir_free(bayesdb_fullpath_utf8);
#endif

	return 0;
}
Пример #4
0
INT_PTR TestPlugin(WPARAM wParam, LPARAM lParam)
{
	char temp[MAX_PATH];
	const int MAX = 20;
	int i;
	HANDLE handles[MAX][2];
/*	FOLDERSDATA caca;
	caca.cbSize = sizeof(caca);
	caca.szFormat = FOLDER_LOGS;*/
	char *section;
	for (i = 0; i < MAX; i++)
		{
			switch (i % 4)
				{
					case 0:
						section = "Section 1";
						break;
					case 1:
						section = "Section 2";
						break;
					case 2:
						section = "Yet another section";
						break;
					case 3:
						section = "Section no 4";
						break;
					default:
						section = "Uhh ohh";
						break;
				}
			//strcpy(caca.szSection, section);
			_itoa(i, temp, 10);
			//strcpy(caca.szName, temp);
			
			handles[i][0] = FoldersRegisterCustomPath(section, temp, FOLDER_LOGS); //CallService(MS_FOLDERS_REGISTER_PATH, 0, (LPARAM) &caca);
		}
	//caca.szFormatW = L"%profile_path%\\%current_profile%\\Ø";
	//caca.flags = FF_UNICODE;
	FoldersRegisterCustomPath("Unicode stuff", "non unicode", "   %profile_path%\\%current_profile%\\Ø\\\\\\");
	for (i = 0; i < MAX; i++)
		{
			//strcpy(caca.szSection, "Unicode stuff");
			sprintf(temp, "Value %d", i);
			//strcpy(caca.szName, temp);
			handles[i][1] = FoldersRegisterCustomPathW("Unicode stuff", temp, L"%profile_path%\\%current_profile%\\\u1FA6"); //CallService(MS_FOLDERS_REGISTER_PATH, 0, (LPARAM) &caca);
		}
/*		
	FOLDERSAPPENDDATA data;
	data.hRegisteredPath = handles[0];
	data.szAppendData = "just an appended string";
	char *cacat;
	CallService(MS_FOLDERS_GET_PATH_ALLOC_APPEND, (WPARAM) &data, (LPARAM) &cacat);
	Log("Append function returned : %s", cacat); */
	/*FOLDERSGETDATA data = {0};
	data.cbSize = sizeof(data);
	data.nMaxPathSize = sizeof(temp);
	data.szPath = temp; */
	for (i = 0; i < MAX; i++)
		{
			//CallService(MS_FOLDERS_GET_PATH, handles[i][0], (LPARAM) &data);
			FoldersGetCustomPath((HANDLE) handles[i][0], temp, sizeof(temp), "<not found>");
			Log("Path function[%d] returned : %s", i, temp);
		}
	wchar_t buffer[MAX_PATH];
	//data.szPathW = buffer;
	for (i = 0; i < MAX; i++)
		{
			//CallService(MS_FOLDERS_GET_PATH, handles[i][0], (LPARAM) &data);
			FoldersGetCustomPathW((HANDLE) handles[i][1], buffer, MAX_PATH, L"<not found>");
			Log("Unicode path function[%d] returned: %S", i, buffer);
		}
//	GetPathService(CONFIGURATION_PATH, (LPARAM) temp);
//	GetPathAllocService(AVATARS_PATH, (LPARAM) &caca);
	
	
	for (i = 0; i < MAX; i++)
	{
		FoldersGetCustomPathEx((HANDLE) handles[i][0], temp, sizeof(temp), "<not found>", "test");
		Log("Path function Ex (test) [%d] returned : %s", i, temp);
		FoldersGetCustomPathEx((HANDLE) handles[i][0], temp, sizeof(temp), "<not found>", "");
		Log("Path function Ex ()     [%d] returned : %s", i, temp);
		FoldersGetCustomPathEx((HANDLE) handles[i][0], temp, sizeof(temp), "<not found>", NULL);
		Log("Path function Ex (NULL) [%d] returned : %s", i, temp);
	}
	
	for (i = 0; i < MAX; i++)
	{
		FoldersGetCustomPathExW((HANDLE) handles[i][1], buffer, MAX_PATH, L"<not found>", L"test");
		Log("Unicode path function Ex (test) [%d] returned : %S", i, buffer);
		FoldersGetCustomPathExW((HANDLE) handles[i][1], buffer, MAX_PATH, L"<not found>", L"");
		Log("Unicode path function Ex ()     [%d] returned : %S", i, buffer);
		FoldersGetCustomPathExW((HANDLE) handles[i][1], buffer, MAX_PATH, L"<not found>", NULL);
		Log("Unicode path function Ex (NULL) [%d] returned : %S", i, buffer);
	}

	return 0;
}
Пример #5
0
static BOOL CALLBACK QQDetailsDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
	switch (msg)
	{

	case WM_INITDIALOG:
		TranslateDialogDefault(hwndDlg);
		SetWindowLong(hwndDlg,GWL_USERDATA,lParam);
		FillCBList(hwndDlg,IDC_INFO_SEX,sex_names);
		FillCBList(hwndDlg,IDC_INFO_AREA,country_names);
		FillCBList(hwndDlg,IDC_INFO_PROVINCE,province_names);
		//FillCBList(IDC_INFO_CITY,city_names);
		FillCBList(hwndDlg,IDC_INFO_ANIMAL,zodiac_names);
		FillCBList(hwndDlg,IDC_INFO_HOROSCOPE,horoscope_names);
		FillCBList(hwndDlg,IDC_INFO_BLOOD,blood_types);

		return TRUE;

	case WM_DESTROY:
		if (LocalDetails_t* ldt=networkmap[hwndDlg]) {
			delete ldt;
			networkmap.erase(hwndDlg);
		}
		break;
	case WM_NOTIFY:										 
		switch (((LPNMHDR)lParam)->idFrom) {
			case 0:
				switch (((LPNMHDR)lParam)->code) {
					case PSN_INFOCHANGED:
						if (LocalDetails_t* ldt=networkmap[(HANDLE)((LPPSHNOTIFY)lParam)->lParam]) {
							TCHAR szTemp[MAX_PATH];
							HANDLE hContact = (HANDLE)((LPPSHNOTIFY)lParam)->lParam;
							LPSTR m_szModuleName=ldt->network->m_szModuleName;
							DBVARIANT dbv;
							HBITMAP hBMP;
							HINSTANCE hInst;
							char szPluginPath[MAX_PATH]={0};

							// Contact
							int nTemp;

							// Overview
							// QQ ID
							_ultow(READC_D2(UNIQUEIDSETTING),szTemp,10);
							SetDlgItemText(hwndDlg,IDC_INFO_UID,szTemp);

#define DETAILS_READTS(key,ctl) if (!READC_TS2(key,&dbv)) { SetDlgItemText(hwndDlg,ctl,dbv.ptszVal); DBFreeVariant(&dbv); }
							// Nickname
							DETAILS_READTS("Nick",IDC_INFO_NICKNAME);

							// Age
							_ultow(READC_W2("Age"),szTemp,10);
							SetDlgItemText(hwndDlg,IDC_INFO_AGE,szTemp);

							// Sex
							*szTemp=READC_B2("Gender");
							SendDlgItemMessage(hwndDlg,IDC_INFO_SEX,CB_SETCURSEL,(WPARAM)(*szTemp=='M'?0:*szTemp=='F'?1:2),0);

							DETAILS_READTS("Country",IDC_INFO_AREA);
							DETAILS_READTS("Province",IDC_INFO_PROVINCE);
							DETAILS_READTS("City",IDC_INFO_CITY);

							// Contact 
							DETAILS_READTS("Email",IDC_INFO_EMAIL);
							DETAILS_READTS("Address",IDC_INFO_ADDRESS);
							DETAILS_READTS("ZIP",IDC_INFO_ZIPCODE);
							DETAILS_READTS("Telephone",IDC_INFO_PHONE);
							DETAILS_READTS("Mobile",IDC_INFO_MOBILE);
							DETAILS_READTS("PersonalSignature",IDC_INFO_SIGNATURE);

							// Details
							DETAILS_READTS("FirstName",IDC_INFO_REALNAME);
							DETAILS_READTS("College",IDC_INFO_COLLEGE);
							DETAILS_READTS("Homepage",IDC_INFO_HOMEPAGE);
							DETAILS_READTS("About",IDC_INFO_DESCRIPTION);

							// Face
							nTemp=DBGetContactSettingWord(hContact,m_szModuleName,"Face",0);
							if (!nTemp)
								nTemp=101;
							else
								nTemp=nTemp/3 + 1;

							hBMP=NULL;
							if (!DBGetContactSetting(hContact,m_szModuleName,"UserHeadMD5",&dbv)) {
								// CallService(MS_UTILS_PATHTOABSOLUTE,(WPARAM)"QQ\\",(LPARAM)szPluginPath);
								FoldersGetCustomPath(ldt->network->m_avatarFolder,szPluginPath,MAX_PATH,"QQ");
								strcat(szPluginPath,"\\");
								strcat(szPluginPath,dbv.pszVal);
								strcat(szPluginPath,".bmp");

								hBMP=(HBITMAP)CallService(MS_UTILS_LOADBITMAP,0,(LPARAM)szPluginPath);
								DBFreeVariant(&dbv);
							}

							CallService(MS_UTILS_PATHTOABSOLUTE,(WPARAM)"Plugins\\QQHeadImg.dll",(LPARAM)szPluginPath);

							if (!hBMP) {
								hInst=LoadLibraryA(szPluginPath);

								if (hInst) {
									hBMP=LoadBitmap(hInst,MAKEINTRESOURCE(100+nTemp));
									SendDlgItemMessage(hwndDlg,IDC_INFO_FACE,STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)hBMP);
								}
								FreeLibrary(hInst);
							}

							if (hBMP)
								SendDlgItemMessage(hwndDlg,IDC_INFO_FACE,STM_SETIMAGE,IMAGE_BITMAP,(LPARAM)hBMP);

							*strrchr(szPluginPath,'\\')=0;

							DETAILS_READTS("MirVer",IDC_INFO_CLIENTVER);
							DETAILS_READTS("Location",IDC_INFO_IP);

#define DETAILS_READB(key,ctl) SendDlgItemMessage(hwndDlg,ctl,CB_SETCURSEL,(WPARAM)READC_B2(key),0); 

							DETAILS_READB("Zodiac",IDC_INFO_ANIMAL);
							DETAILS_READB("Blood",IDC_INFO_BLOOD);
							DETAILS_READB("Horoscope",IDC_INFO_HOROSCOPE);

							// Level
							int suns, moons, stars;

							EvaUtil::calcSuns(READC_W2("Level"),&suns,&moons,&stars);
							swprintf(szTemp,TranslateT("%d (%d-%d-%d)"),READC_W2("Level"), suns,moons,stars);
							SetDlgItemText(hwndDlg,IDC_LEVEL,szTemp);
							swprintf(szTemp,TranslateT("%d Hours (%d Hours to Next Level)"),READC_D2("OnlineMins")/3600,READC_W2("HoursToLevelUp"));
							SetDlgItemText(hwndDlg,IDC_ONLINE,szTemp);

							//SetWindowLong(hwndDlg,GWL_USERDATA,(LONG)hContact);
						}
						break;
				}
			break;
		}
		break;

#if 0
	case WM_COMMAND:
		/*switch(LOWORD(wParam))
		{

		case IDC_CHANGEDETAILS:
		{
		CallService(MS_UTILS_OPENURL, 1, (LPARAM)"http://www.icq.com/whitepages/user_details.php");
		}
		break;

		case IDCANCEL:
		SendMessage(GetParent(hwndDlg),msg,wParam,lParam);
		break;
		}*/
		break;
#endif
	}

	return FALSE;	
}