From 7dadddb7b4f9f6a0e2ee4ba9d7b78d61edc5ab0d Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 4 Aug 2012 19:32:05 +0000 Subject: scanner separated from utils git-svn-id: http://svn.miranda-ng.org/main/trunk@1357 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/PluginUpdater/src/Utils.cpp | 193 +----------------------------------- 1 file changed, 2 insertions(+), 191 deletions(-) (limited to 'plugins/PluginUpdater/src/Utils.cpp') diff --git a/plugins/PluginUpdater/src/Utils.cpp b/plugins/PluginUpdater/src/Utils.cpp index fad176be69..70da945507 100644 --- a/plugins/PluginUpdater/src/Utils.cpp +++ b/plugins/PluginUpdater/src/Utils.cpp @@ -1,4 +1,4 @@ -/* +/* Copyright (C) 2010 Mataes This is free software; you can redistribute it and/or @@ -14,7 +14,7 @@ Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this file; see the file license.txt. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. +Boston, MA 02111-1307, USA. */ #include "Common.h" @@ -32,11 +32,6 @@ HANDLE CheckThread = NULL, hNetlibUser = NULL; MYOPTIONS MyOptions = {0}; aPopups PopupsList[POPUPS]; -int CalculateModuleHash(const TCHAR* tszFileName, char* dest); - -typedef map hashMap; -typedef pair hashItem; - struct { char* szIconName; @@ -182,192 +177,8 @@ VOID __stdcall RestartMe(void*) CallService(MS_SYSTEM_RESTART, 0, 0); } -BOOL Exists(LPCTSTR strName) -{ - return GetFileAttributes(strName) != INVALID_FILE_ATTRIBUTES; -} - -BOOL IsPluginDisabled(const char *filename) -{ - return DBGetContactSettingByte(NULL, "PluginDisable", filename, 0); -} - ///////////////////////////////////////////////////////////////////////////////////////// -static void ScanFolder(const TCHAR* tszFolder, const TCHAR* tszBaseUrl, hashMap& hashes, vector& UpdateFiles) -{ - TCHAR tszMask[MAX_PATH], tszFileBack[MAX_PATH]; - mir_sntprintf(tszMask, SIZEOF(tszMask), _T("%s\\*"), tszFolder); - mir_sntprintf(tszFileBack, SIZEOF(tszFileBack), _T("%s\\Backups"), tszRoot); - - WIN32_FIND_DATA ffd; - HANDLE hFind = FindFirstFile(tszMask, &ffd); - if (hFind == INVALID_HANDLE_VALUE) - return; - - do { - if (!_tcscmp(ffd.cFileName, _T(".")) || !_tcscmp(ffd.cFileName, _T(".."))) - continue; - - if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { - mir_sntprintf(tszMask, SIZEOF(tszMask), _T("%s\\%s"), tszFolder, ffd.cFileName); - ScanFolder(tszMask, tszBaseUrl, hashes, UpdateFiles); - continue; - } - - TCHAR *p = _tcsrchr(ffd.cFileName, '.'); - if (!p) continue; - if ( _tcsicmp(p, _T(".dll")) && _tcsicmp(p, _T(".exe"))) - continue; - - char szFileName[MAX_PATH]; - strncpy(szFileName, _T2A(ffd.cFileName), SIZEOF(szFileName)); - _strlwr(szFileName); - if ( IsPluginDisabled(szFileName)) //check if plugin disabled - continue; - - // Read version info - hashMap::iterator boo = hashes.find(szFileName); - if (boo == hashes.end()) - continue; - - TCHAR *plugname = ffd.cFileName; - FILEINFO FileInfo = { 0 }; - DBVARIANT dbv; - if ( !DBGetContactSettingString(NULL, MODNAME, szFileName, &dbv)) { - //ñ÷èòàòü õýø ôàéëà - lstrcpynA(FileInfo.curhash, dbv.pszVal, SIZEOF(FileInfo.curhash)); - _strlwr(FileInfo.curhash); - DBFreeVariant(&dbv); - } - else { - mir_sntprintf(tszMask, SIZEOF(tszMask), _T("%s\\%s"), tszFolder, ffd.cFileName); - CalculateModuleHash(tszMask, FileInfo.curhash); - DBWriteContactSettingString(NULL, MODNAME, szFileName, FileInfo.curhash); - } - - strncpy(FileInfo.newhash, boo->second.c_str(), SIZEOF(FileInfo.newhash)); - - // Compare versions - if ( strcmp(FileInfo.curhash, FileInfo.newhash)) { // Yeah, we've got new version. - _tcscpy(FileInfo.tszDescr, ffd.cFileName); - - *p = 0; - mir_sntprintf(FileInfo.File.tszDownloadURL, SIZEOF(FileInfo.File.tszDownloadURL), _T("%s/%s.zip"), tszBaseUrl, ffd.cFileName); - _tcslwr(FileInfo.File.tszDownloadURL); - - mir_sntprintf(FileInfo.File.tszDiskPath, SIZEOF(FileInfo.File.tszDiskPath), _T("%s\\%s.zip"), tszFileBack, ffd.cFileName); - - UpdateFiles.push_back(FileInfo); - } // end compare versions - } - while (FindNextFile(hFind, &ffd) != 0); - - FindClose(hFind); -} - -static void CheckUpdates(void *) -{ - TCHAR tszBuff[2048] = {0}, /*tszFileInfo[30] = {0},*/ tszTmpIni[MAX_PATH] = {0}; - char szKey[64] = {0}; - INT upd_ret; - DBVARIANT dbVar = {0}; - vector UpdateFiles; - - if (!Exists(tszRoot)) - CreateDirectoryTreeT(tszRoot); - - //Files.clear(); - Reminder = DBGetContactSettingByte(NULL, MODNAME, "Reminder", DEFAULT_REMINDER); - - // Load files info - if (DBGetContactSettingTString(NULL, MODNAME, "UpdateURL", &dbVar)) { // URL is not set - DBWriteContactSettingTString(NULL, MODNAME, "UpdateURL", _T(DEFAULT_UPDATE_URL)); - DBGetContactSettingTString(NULL, MODNAME, "UpdateURL", &dbVar); - } - TCHAR* tszBaseUrl = NEWTSTR_ALLOCA(dbVar.ptszVal); - DBFreeVariant(&dbVar); - - // Download version info - FILEURL *pFileUrl = (FILEURL *)mir_alloc(sizeof(*pFileUrl)); - mir_sntprintf(pFileUrl->tszDownloadURL, SIZEOF(pFileUrl->tszDownloadURL), _T("%s/hashes.txt"), tszBaseUrl); - mir_sntprintf(tszBuff, SIZEOF(tszBuff), _T("%s\\tmp.ini"), tszRoot); - lstrcpyn(pFileUrl->tszDiskPath, tszBuff, SIZEOF(pFileUrl->tszDiskPath)); - lstrcpyn(tszTmpIni, tszBuff, SIZEOF(tszTmpIni)); - PopupDataText temp; - temp.Title = TranslateT("Plugin Updater"); - temp.Text = TranslateT("Downloading version info..."); - DlgDownloadProc(pFileUrl, temp); - mir_free(pFileUrl); - if (!DlgDld) { - CheckThread = NULL; - return; - } - - FILE* fp = _tfopen(tszTmpIni, _T("r")); - if (!fp) - return; - - hashMap hashes; - char str[200]; - while(fgets(str, SIZEOF(str), fp) != NULL) { - rtrim(str); - char* p = strchr(str, ' '); - if (p == NULL) - continue; - - *p++ = 0; - _strlwr(p); - hashes[str] = p; - } - fclose(fp); - DeleteFile(tszTmpIni); - - TCHAR *dirname = Utils_ReplaceVarsT(_T("%miranda_path%")); - ScanFolder(dirname, tszBaseUrl, hashes, UpdateFiles); - mir_free(dirname); - - // Show dialog - if (UpdateFiles.size() > 0) - upd_ret = DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_UPDATE), GetDesktopWindow(), DlgUpdate, (LPARAM)&UpdateFiles); - if (upd_ret == IDCANCEL) { - CheckThread = NULL; - return; - } - - if (!UpdateFiles.size() && !Silent) { - LPCTSTR Title = TranslateT("Plugin Updater"); - LPCTSTR Text = TranslateT("No updates found."); - if (ServiceExists(MS_POPUP_ADDPOPUPEX) && DBGetContactSettingByte(NULL, "PopUp", "ModuleIsEnabled", 1) && DBGetContactSettingByte(NULL, MODNAME, "Popups2", DEFAULT_POPUP_ENABLED)) { - Number = 2; - show_popup(0, Title, Text, Number, 0); - } - else if (DBGetContactSettingByte(NULL, MODNAME, "Popups2M", DEFAULT_MESSAGE_ENABLED)) - MessageBox(NULL, Text, Title, MB_ICONINFORMATION); - } - - CheckThread = NULL; -} - -void DoCheck(int iFlag, int iFlag2) -{ - if (iFlag2) { - LPCTSTR Title = TranslateT("Plugin Updater"); - LPCTSTR Text = TranslateT("Update checking already started!"); - if (ServiceExists(MS_POPUP_ADDPOPUPEX) && DBGetContactSettingByte(NULL, "PopUp", "ModuleIsEnabled", 1) && DBGetContactSettingByte(NULL, MODNAME, "Popups2", DEFAULT_POPUP_ENABLED)) - { - Number = 2; - show_popup(0, Title, Text, Number, 0); - } - else if (DBGetContactSettingByte(NULL, MODNAME, "Popups2M", DEFAULT_MESSAGE_ENABLED)) - MessageBox(NULL, Text, Title, MB_ICONINFORMATION); - } - else if (iFlag) { - CheckThread = mir_forkthread(CheckUpdates, 0); - DBWriteContactSettingDword(NULL, MODNAME, "LastUpdate", time(NULL)); - } -} - BOOL AllowUpdateOnStartup() { if (OnlyOnceADay) { -- cgit v1.2.3