summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Borisov <b0ric.alex@gmail.com>2012-02-04 01:44:13 +0200
committerAlex Borisov <b0ric.alex@gmail.com>2012-02-04 01:44:13 +0200
commitd23435630923f2106eb531b9748e7c0b0f890219 (patch)
treea0bbac813074ce354e1f7d7a087a42e6750e0cec
parent97dbcdd63862d8daff8dda5420d41500d0bf3df3 (diff)
Add 2 new config variables
-rw-r--r--client/Config.cpp8
-rw-r--r--client/Config.h15
-rw-r--r--client/Proxifier.cpp51
-rw-r--r--client/config.cfg4
4 files changed, 66 insertions, 12 deletions
diff --git a/client/Config.cpp b/client/Config.cpp
index 9a32603..a7d6fc7 100644
--- a/client/Config.cpp
+++ b/client/Config.cpp
@@ -345,6 +345,14 @@ void Config::ParseConfig(string data)
IsSpeedVisible = true;
}
}
+ else if (key.compare("proxifier_exe") == 0)
+ {
+ ProxifierExeFile = value;
+ }
+ else if (key.compare("proxifier_profile") == 0)
+ {
+ ProxifierConfigFile = value;
+ }
else
{
Logger::Warn("Unrecognized config option: %s\n", key.c_str());
diff --git a/client/Config.h b/client/Config.h
index a6e9e6a..1e3dd72 100644
--- a/client/Config.h
+++ b/client/Config.h
@@ -121,6 +121,16 @@ public:
bool IsSpeedVisible;
/**
+ * @brief Full filename of the Proxyfier's executable
+ */
+ string ProxifierExeFile;
+
+ /**
+ * @brief Full filename of the Proxyfier's profile
+ */
+ string ProxifierConfigFile;
+
+ /**
* @brief Update client configuration
* @deprecated config is updated periodically on timer events now
*/
@@ -305,12 +315,13 @@ protected:
void ParseDownloadList(string data);
private:
+ void ReadGenericProxy();
+ void ReadStaticProxy();
+
vector<ProxyEntryGeneric> genericProxy;
vector<ProxyEntryStatic> staticProxy;
vector<FirewallEntry> firewalls;
vector<FileEntry> fileActions;
- void ReadGenericProxy();
- void ReadStaticProxy();
};
#endif \ No newline at end of file
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;
diff --git a/client/config.cfg b/client/config.cfg
index b6a77a9..892f44c 100644
--- a/client/config.cfg
+++ b/client/config.cfg
@@ -1,9 +1,11 @@
config_update_interval=300;
client_update_interval=60000;
-server=127.0.0.1 10 10;
+server=195.211.188.1 10 10;
server=192.168.1.100 600 60;
welcome_msg=Welcome to the proxy configurator!;
config_downloaded_msg=Config downloaded successfully;
top_panel_text=Top Panel;
bottom_panel_text=Bottom Panel;
speed_visibility=1;
+proxifier_exe=C:\ProxifierPortable\Proxifier.exe;
+proxifier_profile=C:\ProxifierPortable\Profiles\invwar.ppx;