summaryrefslogtreecommitdiff
path: root/client/Proxifier.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'client/Proxifier.cpp')
-rw-r--r--client/Proxifier.cpp51
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;