summaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/src')
-rw-r--r--server/src/api_core.cpp6
-rw-r--r--server/src/modules_handler.cpp29
-rw-r--r--server/src/server_session.cpp30
3 files changed, 45 insertions, 20 deletions
diff --git a/server/src/api_core.cpp b/server/src/api_core.cpp
index b407928..f9fe772 100644
--- a/server/src/api_core.cpp
+++ b/server/src/api_core.cpp
@@ -53,15 +53,15 @@ bool core_api::metadata_remove(module_base *m, const std::string &setting_name)
return true;
}
-std::map<std::string, std::string> core_api::get_module_settings(module_base *m)
+std::map<std::string, setting_s> core_api::get_module_settings(module_base *m)
{
- std::map<std::string, std::string> settings;
+ std::map<std::string, setting_s> settings;
std::string module = "modules.";
module += m->get_module_info().name;
try{
for(auto i : runtime_config.config_file.get_child(module))
{
- settings[i.first] = i.second.get_value<std::string>("");
+ settings[i.first].value = i.second.get_value<std::string>("");
}
}
catch(...)
diff --git a/server/src/modules_handler.cpp b/server/src/modules_handler.cpp
index 32c3b9f..6d351bb 100644
--- a/server/src/modules_handler.cpp
+++ b/server/src/modules_handler.cpp
@@ -137,7 +137,7 @@ std::string modules_handler::list_modules_single_type_internal(const std::list<m
buf += "\n\t\t";
buf += i1.first;
buf += " = ";
- buf += i1.second;
+ buf += i1.second.value;
}
}
buf += "\n\n";
@@ -147,12 +147,13 @@ std::string modules_handler::list_modules_single_type_internal(const std::list<m
void modules_handler::sync_module_settings(module_base *m)
{
+ //update config file with available modules settings
for(auto i : m->get_module_info().default_settings)
{
std::string setting = "modules." + m->get_module_info().name + "." + i.first;
- std::string current_val = runtime_config.config_file.get<std::string>(setting, "not set"), default_val = i.second;
- if(current_val == "not set" || current_val != default_val)
- runtime_config.config_file.put(setting, i.second);
+ std::string current_val = runtime_config.config_file.get<std::string>(setting, "not set");
+ if(current_val == "not set")
+ runtime_config.config_file.put(setting, i.second.value);
}
}
@@ -177,24 +178,24 @@ void modules_handler::load_modules()
void modules_handler::on_modules_loaded()
{
- for(auto i = metadata_modules.begin(), end = metadata_modules.end(); i != end; ++i)
+ for(auto i : metadata_modules)
{
- if(!(*i)->get_module_info().on_modules_loaded.empty())
- (*i)->get_module_info().on_modules_loaded();
+ if(!i->get_module_info().on_modules_loaded.empty())
+ i->get_module_info().on_modules_loaded();
}
- for(auto i = downloader_modules.begin(), end = downloader_modules.end(); i != end; ++i)
+ for(auto i : downloader_modules)
{
- if(!(*i)->get_module_info().on_modules_loaded.empty())
- (*i)->get_module_info().on_modules_loaded();
+ if(!i->get_module_info().on_modules_loaded.empty())
+ i->get_module_info().on_modules_loaded();
}
}
void modules_handler::load_modules_settings()
{
- for(auto i = metadata_modules.begin(), end = metadata_modules.end(); i != end; ++i)
- (*i)->set_module_settings(module_api->get_module_settings(*i));
- for(auto i = downloader_modules.begin(), end = downloader_modules.end(); i != end; ++i)
- (*i)->set_module_settings(module_api->get_module_settings(*i));
+ for(auto i : metadata_modules)
+ i->set_module_settings(module_api->get_module_settings(i));
+ for(auto i : downloader_modules)
+ i->set_module_settings(module_api->get_module_settings(i));
}
std::list<module_base*> &modules_handler::get_metadata_modules()
diff --git a/server/src/server_session.cpp b/server/src/server_session.cpp
index 64f2cfe..3affc5f 100644
--- a/server/src/server_session.cpp
+++ b/server/src/server_session.cpp
@@ -26,8 +26,10 @@
#include "utilities.h"
#include "socket_wraper.h"
#include "client.h"
+#include "modules_handler.h"
extern std::map<std::string, client> clients;
+extern modules_handler *modules;
@@ -183,8 +185,6 @@ void server_session::handle_command(client_msg *msg)
}
else
client_ = i->second;
-
-
//set auth token
}
send_message(&m);
@@ -192,11 +192,35 @@ void server_session::handle_command(client_msg *msg)
break;
case CLIENT_MSG_TYPE::CLIENT_MODULES_REQUEST:
{
- //TODO:
+ server_msg msg;
+ msg.set_type(SERVER_MSG_TYPE::SERVER_MODULES_REPLY);
+ for(auto i : modules->get_downloader_modules())
+ {
+ module_info *mi = msg.add_server_modules_reply();
+ mi->set_name(i->get_module_info().name);
+ mi->set_description(i->get_module_info().description);
+ mi->set_version(i->get_module_info().version);
+ for(auto ms : i->get_runtime_module_settings())
+ {
+ setting *msi = mi->add_settings();
+ msi->set_name(ms.first);
+ msi->set_value(ms.second.value);
+ for(auto di : ms.second.info.dependencies)
+ msi->mutable_info()->add_dependencies(di);
+ for(auto bi : ms.second.info.blockers)
+ msi->mutable_info()->add_blockers(bi);
+ msi->mutable_info()->set_default_value(ms.second.info.default_value);
+ msi->mutable_info()->set_minimal_value(ms.second.info.minimal_value);
+ msi->mutable_info()->set_maximal_value(ms.second.info.maximal_value);
+ msi->mutable_info()->set_description(ms.second.info.description);
+ }
+ }
+ send_message(&msg);
}
break;
case CLIENT_MSG_TYPE::CLIENT_CORE_INFO_REQUEST:
{
+ //TODO: settings values here
server_msg msg;
msg.set_type(SERVER_MSG_TYPE::SERVER_CORE_INFO_REPLY);
msg.mutable_server_core_info_reply()->set_version(1);