diff options
Diffstat (limited to 'client/Proxifier.cpp')
-rw-r--r-- | client/Proxifier.cpp | 51 |
1 files changed, 42 insertions, 9 deletions
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 <QtCore> #include <QtXml> +#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; |