From 47f86754eae605bff97cd73a9d49e68f64eee99e Mon Sep 17 00:00:00 2001 From: HanzZ Date: Tue, 17 Apr 2012 18:26:21 +0200 Subject: [PATCH 1/2] Allow setting config file options also from command line --- include/transport/config.h | 4 +++- spectrum/src/main.cpp | 2 +- spectrum/src/sample.cfg | 6 +++--- src/config.cpp | 5 +++++ 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/include/transport/config.h b/include/transport/config.h index 4ff5b8fa..7d01eaa0 100644 --- a/include/transport/config.h +++ b/include/transport/config.h @@ -50,7 +50,7 @@ typedef boost::program_options::variables_map Variables; class Config { public: /// Constructor. - Config() {} + Config(int argc = 0, char **argv = NULL) : m_argc(argc), m_argv(argv) {} /// Destructor virtual ~Config() {} @@ -99,6 +99,8 @@ class Config { boost::signal onConfigReloaded; private: + int m_argc; + char **m_argv; Variables m_variables; std::map m_unregistered; std::string m_file; diff --git a/spectrum/src/main.cpp b/spectrum/src/main.cpp index 82540d11..ea3b288e 100644 --- a/spectrum/src/main.cpp +++ b/spectrum/src/main.cpp @@ -114,7 +114,7 @@ static void daemonize(const char *cwd, const char *lock_file) { int main(int argc, char **argv) { - Config config; + Config config(argc, argv); boost::program_options::variables_map vm; bool no_daemon = false; diff --git a/spectrum/src/sample.cfg b/spectrum/src/sample.cfg index 5018ae8b..9097e3b4 100644 --- a/spectrum/src/sample.cfg +++ b/spectrum/src/sample.cfg @@ -8,13 +8,13 @@ backend_host=localhost pidfile=./test.pid # < this option doesn't work yet #backend_port=10001 -admin_jid=admin@localhost +#admin_jid=admin@localhost admin_password=test #cert=server.pfx #patch to PKCS#12 certificate #cert_password=test #password to that certificate if any users_per_backend=10 -#backend=../..//backends/libpurple/spectrum2_libpurple_backend -backend=../../backends/template/template_backend.py +backend=../..//backends/libpurple/spectrum2_libpurple_backend +#backend=../../backends/template/template_backend.py protocol=prpl-jabber #protocol=prpl-msn #protocol=any diff --git a/src/config.cpp b/src/config.cpp index 9672f00d..2505614e 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -187,6 +187,11 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description } } + // Load configs passed by command line + if (m_argc != 0 && m_argv) { + store(parse_command_line(m_argc, m_argv, opts), m_variables); + } + store(parsed, m_variables); notify(m_variables); From 70b93a4fb82971089c2d40d567992ea538f7bdfc Mon Sep 17 00:00:00 2001 From: HanzZ Date: Tue, 17 Apr 2012 22:03:28 +0200 Subject: [PATCH 2/2] hack for gfire --- backends/libpurple/main.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 74cef363..d01c2138 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -289,6 +289,13 @@ class SpectrumNetworkPlugin : public NetworkPlugin { i++; } g_strfreev (keys); + + char* contents; + gsize length; + gboolean ret = g_file_get_contents ("gfire.cfg", &contents, &length, NULL); + if (ret) { + purple_account_set_int(account, "version", fromString(std::string(contents, length))); + } } void handleLoginRequest(const std::string &user, const std::string &legacyName, const std::string &password) { @@ -348,6 +355,10 @@ class SpectrumNetworkPlugin : public NetworkPlugin { void handleLogoutRequest(const std::string &user, const std::string &legacyName) { PurpleAccount *account = m_sessions[user]; if (account) { + if (purple_account_get_int(account, "version", 0) != 0) { + std::string data = stringOf(purple_account_get_int(account, "version", 0)); + g_file_set_contents ("gfire.cfg", data.c_str(), data.size(), NULL); + } // VALGRIND_DO_LEAK_CHECK; m_sessions.erase(user); purple_account_disconnect(account);