diff options
Diffstat (limited to 'server/src/main.cpp')
-rw-r--r-- | server/src/main.cpp | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/server/src/main.cpp b/server/src/main.cpp index 2786435..b856fd4 100644 --- a/server/src/main.cpp +++ b/server/src/main.cpp @@ -23,6 +23,8 @@ #include <iostream> #include <map> +#include <signal.h> + #include "api_module_metadata_storage.h" #include "modules_handler.h" #include "utilities.h" @@ -47,9 +49,15 @@ server *serv = nullptr; //TODO: "core" config section architecture, define base settings +void sigint_handler(int sig) +{ + bpt::write_info(runtime_config.config_file_path, runtime_config.config_file); //save config on sigint + exit(0); +} -int main(int argc, char *argv[]) +extern "C" int main(int argc, char *argv[]) { + signal(SIGINT, sigint_handler); bpo::options_description desc("Available commands and options"); desc.add_options() ("help,h", "this message") @@ -78,6 +86,48 @@ int main(int argc, char *argv[]) bpt::read_info(parsed_config_path, runtime_config.config_file); //TODO: finish this else std::cerr<<"failed to load config: \"" + config_path + "\", file does not exists or is not regular file\n"; + runtime_config.config_file_path = parsed_config_path; + } + { + auto server_pt = runtime_config.config_file.find("server"); + if(server_pt == runtime_config.config_file.not_found()) + { + runtime_config.config_file.put("server", ""); + server_pt = runtime_config.config_file.find("server"); + } + auto it = server_pt->second.find("port"); + if(it == server_pt->second.not_found()) + server_pt->second.put("port", 6613); + it = server_pt->second.find("password"); + if(it == server_pt->second.not_found()) + server_pt->second.put("password", ""); + it = server_pt->second.find("default_download_directory"); + if(it == server_pt->second.not_found()) + server_pt->second.put("default_download_directory", "~/udm/downloads"); + it = server_pt->second.find("default_metadata_module"); + if(it == server_pt->second.not_found()) + server_pt->second.put("default_metadata_module", "flat_files_metadata"); + it = server_pt->second.find("daemon"); + if(it == server_pt->second.not_found()) + server_pt->second.put("daemon", false); + it = server_pt->second.find("verbosity"); + if(it == server_pt->second.not_found()) + server_pt->second.put("verbosity", 0); + it = server_pt->second.find("enable_encryption"); + if(it == server_pt->second.not_found()) + server_pt->second.put("enable_encryption", false); + it = server_pt->second.find("ssl_certificate"); + if(it == server_pt->second.not_found()) + server_pt->second.put("ssl_certificate", "~/config/udm/cert.crt"); + it = server_pt->second.find("ssl_key"); + if(it == server_pt->second.not_found()) + server_pt->second.put("ssl_key", "~/config/udm/cert.key"); + it = server_pt->second.find("ssl_ca"); + if(it == server_pt->second.not_found()) + server_pt->second.put("ssl_ca", "~/config/udm/ca.crt"); + it = server_pt->second.find("ssl_dh"); + if(it == server_pt->second.not_found()) + server_pt->second.put("ssl_dh", "~/config/udm/dh.pem"); } //load all config variables here runtime_config.settings.verbosity = runtime_config.config_file.get<short>("server.verbosity", 0); |