diff options
author | Alex Borisov <b0ric.alex@gmail.com> | 2012-02-04 01:44:13 +0200 |
---|---|---|
committer | Alex Borisov <b0ric.alex@gmail.com> | 2012-02-04 01:44:13 +0200 |
commit | d23435630923f2106eb531b9748e7c0b0f890219 (patch) | |
tree | a0bbac813074ce354e1f7d7a087a42e6750e0cec | |
parent | 97dbcdd63862d8daff8dda5420d41500d0bf3df3 (diff) |
Add 2 new config variables
-rw-r--r-- | client/Config.cpp | 8 | ||||
-rw-r--r-- | client/Config.h | 15 | ||||
-rw-r--r-- | client/Proxifier.cpp | 51 | ||||
-rw-r--r-- | client/config.cfg | 4 |
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;
|