From d23435630923f2106eb531b9748e7c0b0f890219 Mon Sep 17 00:00:00 2001 From: Alex Borisov Date: Sat, 4 Feb 2012 01:44:13 +0200 Subject: Add 2 new config variables --- client/Proxifier.cpp | 51 ++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 9 deletions(-) (limited to 'client/Proxifier.cpp') diff --git a/client/Proxifier.cpp b/client/Proxifier.cpp index a4c2d08..4b49c09 100644 --- a/client/Proxifier.cpp +++ b/client/Proxifier.cpp @@ -7,6 +7,7 @@ #endif #include #include +#include "UpdatedConfig.h" #include "Logger.h" #include "Proxifier.h" #include "Utility.h" @@ -47,6 +48,22 @@ Proxifier* Proxifier::GetInstance() Proxifier::Proxifier(): valid(false) { Logger::Info("Trying to find proxifier configuration file\n"); + + // check variable from config file + UpdatedConfig *cfg = UpdatedConfig::CurrentConfig(); + if (! cfg->ProxifierConfigFile.empty()) + { + Logger::Info("Checking path: %s\n", cfg->ProxifierConfigFile.c_str()); + QFileInfo filePathInfo(QString::fromLocal8Bit(cfg->ProxifierConfigFile.c_str())); + if (filePathInfo.exists()) + { + Logger::Debug("Configuration found: %s\n", cfg->ProxifierConfigFile.c_str()); + filePath = filePathInfo.absoluteFilePath(); + ReadConfig(); + return; + } + } + #ifdef WIN32 QString folderName = "Proxifier"; QString fileName = "Profiles\\Default.ppx"; @@ -93,21 +110,22 @@ Proxifier::Proxifier(): valid(false) fprintf(stderr, "system drive: %s\n", sysDrive); } */ -#else +#endif + filePath = "Default.ppx"; ReadConfig(); -#endif } bool Proxifier::Restart() { - char execName[] = "Proxifier.exe"; - Logger::Info("Restarting Proxifier process\n"); + Logger::Info("Restarting Proxifier process\n"); + #ifdef WIN32 + char execName[] = "Proxifier.exe"; HANDLE hProcessSnap; HANDLE hProcess; PROCESSENTRY32 pe32; - + // Takes a snapshot of all the processes hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) @@ -135,7 +153,19 @@ bool Proxifier::Restart() } while (Process32Next(hProcessSnap, &pe32)); - // start over again + // find Proxifier's executable and start over again + UpdatedConfig *cfg = UpdatedConfig::CurrentConfig(); + if (! cfg->ProxifierExeFile.empty()) + { + QString program = QString::fromLocal8Bit(cfg->ProxifierExeFile.c_str()); + QFileInfo filePathInfo(program); + if (filePathInfo.exists()) + { + Logger::Trace("Starting process: %s\n", program.toStdString().c_str()); + return QProcess::startDetached(program); + } + } + QString folderName = "Proxifier"; QString pathSlash = "\\"; TCHAR programFiles[MAX_PATH]; @@ -147,9 +177,12 @@ bool Proxifier::Restart() program += pathSlash + folderName + pathSlash + execName; program.prepend("\""); program.append("\""); - Logger::Trace("Starting process: %s\n", program.toStdString().c_str()); - - return QProcess::startDetached(program); + QFileInfo filePathInfo(program); + if (filePathInfo.exists()) + { + Logger::Trace("Starting process: %s\n", program.toStdString().c_str()); + return QProcess::startDetached(program); + } } #endif return false; -- cgit v1.2.3