Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/SpectrumIM/spectrum2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitaly Takmazov <vitalyster@gmail.com>2022-01-20 11:45:04 +0300
committerVitaly Takmazov <vitalyster@gmail.com>2022-01-20 11:45:04 +0300
commitdf53f4d95affad9fb95007ac4471b4831ec67a04 (patch)
treebcf5ad61e35a2d4c1b8409f896f6da041de657b0
parent6ba1ee85b7e0d19c358031cefad5a474115108a0 (diff)
Config: process all unknown options as stringsconfig_strings
* remove CONFIG_LIST* macros as they were used only for unknown options, CONFIG_VECTOR still used for registered options
-rw-r--r--backends/libcommuni/ircnetworkplugin.cpp14
-rw-r--r--backends/libpurple/main.cpp2
-rw-r--r--include/transport/Config.h2
-rw-r--r--libtransport/Config.cpp21
-rw-r--r--spectrum/src/frontends/xmpp/adhocmanager.cpp3
-rw-r--r--spectrum/src/frontends/xmpp/settingsadhoccommand.cpp4
-rw-r--r--tests/libtransport/config.cpp24
7 files changed, 18 insertions, 52 deletions
diff --git a/backends/libcommuni/ircnetworkplugin.cpp b/backends/libcommuni/ircnetworkplugin.cpp
index 18bb3e00..f17f15d1 100644
--- a/backends/libcommuni/ircnetworkplugin.cpp
+++ b/backends/libcommuni/ircnetworkplugin.cpp
@@ -36,15 +36,9 @@ IRCNetworkPlugin::IRCNetworkPlugin(Config *config, Swift::QtEventLoop *loop, con
m_socket->connectToHost(FROM_UTF8(host), port);
connect(m_socket, SIGNAL(readyRead()), this, SLOT(readData()));
- std::string server = CONFIG_STRING_DEFAULTED(m_config, "service.irc_server", "");
- if (!server.empty()) {
- m_servers.push_back(server);
- }
- else {
- std::list<std::string> list;
- list = CONFIG_LIST_DEFAULTED(m_config, "service.irc_server", list);
- m_servers.insert(m_servers.begin(), list.begin(), list.end());
- }
+ std::list<std::string> list;
+ boost::algorithm::split(list, CONFIG_STRING_DEFAULTED(m_config, "service.irc_server", ""), boost::is_any_of(","));
+ m_servers.insert(m_servers.begin(), list.begin(), list.end());
if (CONFIG_HAS_KEY(m_config, "service.irc_identify")) {
m_identify = CONFIG_STRING(m_config, "service.irc_identify");
@@ -113,7 +107,7 @@ MyIrcSession *IRCNetworkPlugin::createSession(const std::string &user, const std
std::string identify = m_identify;
boost::replace_all(identify, "$password", password);
boost::replace_all(identify, "$name", nickname);
- if (CONFIG_BOOL_DEFAULTED(m_config, "service.irc_send_pass", false)) {
+ if (boost::lexical_cast<bool>(CONFIG_STRING_DEFAULTED(m_config, "service.irc_send_pass", "false"))) {
session->setPassword(FROM_UTF8(password)); // use IRC PASS
} else {
session->setIdentify(identify); // use identify supplied
diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp
index 9136f74d..6a4868c7 100644
--- a/backends/libpurple/main.cpp
+++ b/backends/libpurple/main.cpp
@@ -334,7 +334,7 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
found = true;
switch (type) {
case PURPLE_PREF_BOOLEAN:
- purple_account_set_bool_wrapped(account, strippedKey.c_str(), keyItem.second.as<bool>());
+ purple_account_set_bool_wrapped(account, strippedKey.c_str(), boost::lexical_cast<bool>(keyItem.second.as<std::string>()));
break;
case PURPLE_PREF_INT:
diff --git a/include/transport/Config.h b/include/transport/Config.h
index e5bd3d09..2f38ac30 100644
--- a/include/transport/Config.h
+++ b/include/transport/Config.h
@@ -46,12 +46,10 @@ const myType &safeAs(const boost::program_options::variable_value &var, const my
#define CONFIG_STRING(PTR, KEY) (*PTR)[KEY].as<std::string>()
#define CONFIG_INT(PTR, KEY) (*PTR)[KEY].as<int>()
#define CONFIG_BOOL(PTR, KEY) (*PTR)[KEY].as<bool>()
-#define CONFIG_LIST(PTR, KEY) (*PTR)[KEY].as<std::list<std::string> >()
#define CONFIG_VECTOR(PTR, KEY) ((*PTR).hasKey(KEY) ? (*PTR)[KEY].as<std::vector<std::string> >() : std::vector<std::string>())
#define CONFIG_STRING_DEFAULTED(PTR, KEY, DEF) ((*PTR).hasKey(KEY) ? Transport::safeAs<std::string>((*PTR)[KEY], DEF) : DEF)
#define CONFIG_BOOL_DEFAULTED(PTR, KEY, DEF) ((*PTR).hasKey(KEY) ? Transport::safeAs<bool>((*PTR)[KEY], DEF) : DEF)
-#define CONFIG_LIST_DEFAULTED(PTR, KEY, DEF) ((*PTR).hasKey(KEY) ? Transport::safeAs<std::list<std::string> >((*PTR)[KEY], DEF) : DEF)
#define CONFIG_INT_DEFAULTED(PTR, KEY, DEF) ((*PTR).hasKey(KEY) ? Transport::safeAs<int>((*PTR)[KEY], DEF) : DEF)
namespace Transport {
diff --git a/libtransport/Config.cpp b/libtransport/Config.cpp
index 52efed72..28b04cd0 100644
--- a/libtransport/Config.cpp
+++ b/libtransport/Config.cpp
@@ -104,6 +104,7 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description
("service.max_room_list_size", value<int>()->default_value(100), "")
("service.login_delay", value<int>()->default_value(0), "")
("service.jid_escaping", value<bool>()->default_value(true), "")
+ ("service.verify_certs", value<bool>()->default_value(false), "")
("service.vip_only", value<bool>()->default_value(false), "")
("service.vip_message", value<std::string>()->default_value(""), "")
("service.reconnect_all_users", value<bool>()->default_value(false), "")
@@ -222,28 +223,14 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description
BOOST_FOREACH(option &opt, parsed.options) {
if (opt.unregistered) {
if (std::find(has_key.begin(), has_key.end(), opt.string_key) == has_key.end()) {
+ m_unregistered[opt.string_key] = variable_value(opt.value[0], false);
has_key.push_back(opt.string_key);
- if (opt.value[0] == "true" || opt.value[0] == "1") {
- m_unregistered[opt.string_key] = variable_value(true, false);
- }
- else if (opt.value[0] == "false" || opt.value[0] == "0") {
- m_unregistered[opt.string_key] = variable_value(false, false);
- }
- else {
- m_unregistered[opt.string_key] = variable_value(opt.value[0], false);
- }
}
else {
std::list<std::string> list;
- try {
- list = m_unregistered[opt.string_key].as<std::list<std::string> >();
- }
- catch(...) {
- list.push_back(m_unregistered[opt.string_key].as<std::string>());
- }
-
+ boost::algorithm::split(list, m_unregistered[opt.string_key].as<std::string>(), boost::is_any_of(","));
list.push_back(opt.value[0]);
- m_unregistered[opt.string_key] = variable_value(list, false);
+ m_unregistered[opt.string_key] = variable_value(boost::algorithm::join(list, ","), false);
}
}
else if (opt.value[0].find("$jid") != std::string::npos) {
diff --git a/spectrum/src/frontends/xmpp/adhocmanager.cpp b/spectrum/src/frontends/xmpp/adhocmanager.cpp
index 50598d27..86f07144 100644
--- a/spectrum/src/frontends/xmpp/adhocmanager.cpp
+++ b/spectrum/src/frontends/xmpp/adhocmanager.cpp
@@ -73,9 +73,6 @@ void AdHocManager::handleUserCreated(User *user) {
for (std::map<std::string, AdHocCommandFactory *>::const_iterator it = m_factories.begin(); it != m_factories.end(); it++) {
for (std::map<std::string, std::string>::const_iterator it2 = it->second->getUserSettings().begin(); it2 != it->second->getUserSettings().end(); it2++) {
std::string value = CONFIG_STRING_DEFAULTED(m_component->getConfig(), it->second->getNode() + "." + it2->first, it2->second);
- if (it2->second == "true" || it2->second == "1" || it2->second == "false" || it2->second == "0") {
- value = CONFIG_BOOL_DEFAULTED(m_component->getConfig(), it->second->getNode() + "." + it2->first, it2->second == "true" || it2->second == "1") ? "1" : "0";
- }
if (m_storageBackend) {
int type = (int) TYPE_BOOLEAN;
m_storageBackend->getUserSetting(user->getUserInfo().id, it2->first, type, value);
diff --git a/spectrum/src/frontends/xmpp/settingsadhoccommand.cpp b/spectrum/src/frontends/xmpp/settingsadhoccommand.cpp
index 9e05c2f8..2a7532d3 100644
--- a/spectrum/src/frontends/xmpp/settingsadhoccommand.cpp
+++ b/spectrum/src/frontends/xmpp/settingsadhoccommand.cpp
@@ -67,11 +67,11 @@ std::shared_ptr<Swift::Command> SettingsAdHocCommand::getForm() {
m_storageBackend->getUserSetting(user.id, "enable_transport", type, value);
FormUtils::addBooleanField(form, "enable_transport", value, "Enable transport");
- value = CONFIG_BOOL_DEFAULTED(m_component->getConfig(), "settings.send_headlines", false) ? "1" : "0";
+ value = CONFIG_STRING_DEFAULTED(m_component->getConfig(), "settings.send_headlines", "0");
m_storageBackend->getUserSetting(user.id, "send_headlines", type, value);
FormUtils::addBooleanField(form, "send_headlines", value, "Allow sending messages as headlines");
- value = CONFIG_BOOL_DEFAULTED(m_component->getConfig(), "settings.stay_connected", false) ? "1" : "0";
+ value = CONFIG_STRING_DEFAULTED(m_component->getConfig(), "settings.stay_connected", "0");
m_storageBackend->getUserSetting(user.id, "stay_connected", type, value);
FormUtils::addBooleanField(form, "stay_connected", value, "Stay connected to legacy network when offline on XMPP");
diff --git a/tests/libtransport/config.cpp b/tests/libtransport/config.cpp
index bcf25100..0adcbd46 100644
--- a/tests/libtransport/config.cpp
+++ b/tests/libtransport/config.cpp
@@ -23,7 +23,6 @@ class ConfigTest : public CPPUNIT_NS :: TestFixture{
CPPUNIT_TEST(unregisteredList);
CPPUNIT_TEST(unregisteredString);
CPPUNIT_TEST(unregisteredListAsString);
- CPPUNIT_TEST(unregisteredStringAsList);
CPPUNIT_TEST_SUITE_END();
public:
@@ -47,8 +46,8 @@ class ConfigTest : public CPPUNIT_NS :: TestFixture{
Config cfg(2, const_cast<char **>(argv));
std::istringstream ifs("service.irc_send_pass = 1\npurple.group-chat-open=0\n");
cfg.load(ifs);
- CPPUNIT_ASSERT_EQUAL(true, CONFIG_BOOL_DEFAULTED(&cfg, "service.irc_send_pass", false));
- CPPUNIT_ASSERT_EQUAL(false, CONFIG_BOOL_DEFAULTED(&cfg, "purple.group-chat-open", true));
+ CPPUNIT_ASSERT_EQUAL(true, boost::lexical_cast<bool>(CONFIG_STRING_DEFAULTED(&cfg, "service.irc_send_pass", "false")));
+ CPPUNIT_ASSERT_EQUAL(false, boost::lexical_cast<bool>(CONFIG_STRING_DEFAULTED(&cfg, "purple.group-chat-open", "true")));
}
void enumerateConfigSection() {
@@ -57,8 +56,8 @@ class ConfigTest : public CPPUNIT_NS :: TestFixture{
std::istringstream ifs("[purple]\nirc_send_pass=1\ngroup-chat-open=false\ntest=passed");
cfg.load(ifs);
Config::SectionValuesCont purpleConfigValues = cfg.getSectionValues("purple");
- CPPUNIT_ASSERT_EQUAL(true, purpleConfigValues["purple.irc_send_pass"].as<bool>());
- CPPUNIT_ASSERT_EQUAL(false, purpleConfigValues["purple.group-chat-open"].as<bool>());
+ CPPUNIT_ASSERT_EQUAL(std::string("1"), purpleConfigValues["purple.irc_send_pass"].as<std::string>());
+ CPPUNIT_ASSERT_EQUAL(std::string("false"), purpleConfigValues["purple.group-chat-open"].as<std::string>());
CPPUNIT_ASSERT_EQUAL(std::string("passed"), purpleConfigValues["purple.test"].as<std::string>());
}
@@ -85,7 +84,7 @@ class ConfigTest : public CPPUNIT_NS :: TestFixture{
Config cfg;
std::istringstream ifs("service.irc_server = irc.freenode.org\nservice.irc_server=localhost\n");
cfg.load(ifs);
- CPPUNIT_ASSERT_EQUAL(2, (int) CONFIG_LIST(&cfg, "service.irc_server").size());
+ CPPUNIT_ASSERT_EQUAL(std::string("irc.freenode.org,localhost"), CONFIG_STRING(&cfg, "service.irc_server"));
}
void unregisteredString() {
@@ -97,19 +96,10 @@ class ConfigTest : public CPPUNIT_NS :: TestFixture{
void unregisteredListAsString() {
Config cfg;
- std::istringstream ifs("service.irc_server = irc.freenode.orgn\nservice.irc_server = irc2.freenode.org");
+ std::istringstream ifs("service.irc_server = irc.freenode.org\nservice.irc_server = irc2.freenode.org");
cfg.load(ifs);
- CPPUNIT_ASSERT_EQUAL(std::string(""), CONFIG_STRING_DEFAULTED(&cfg, "service.irc_server", ""));
+ CPPUNIT_ASSERT_EQUAL(std::string("irc.freenode.org,irc2.freenode.org"), CONFIG_STRING_DEFAULTED(&cfg, "service.irc_server", ""));
}
-
- void unregisteredStringAsList() {
- Config cfg;
- std::istringstream ifs("service.irc_server = irc.freenode.org");
- cfg.load(ifs);
- std::list<std::string> list;
- CPPUNIT_ASSERT_EQUAL(0, (int) CONFIG_LIST_DEFAULTED(&cfg, "service.irc_server", list).size());
- }
-
};
CPPUNIT_TEST_SUITE_REGISTRATION (ConfigTest);