mirror of
https://github.com/savoirfairelinux/opendht.git
synced 2026-11-08 12:28:42 +00:00
tools: factor configuration parsing
This commit is contained in:
1 parent
eca340b785
commit
cb0005d0eb
4 files changed
+48
-82
No files matched your search
+2
-35
@@ -62,41 +62,8 @@ main(int argc, char **argv)
|
||||
|
||||
DhtRunner dht;
|
||||
try {
|
||||
if (not params.id.first) {
|
||||
auto node_ca = std::make_unique<dht::crypto::Identity>(dht::crypto::generateEcIdentity("DHT Node CA"));
|
||||
params.id = dht::crypto::generateIdentity("DHT Chat Node", *node_ca);
|
||||
if (not params.save_identity.empty()) {
|
||||
dht::crypto::saveIdentity(*node_ca, params.save_identity + "_ca", params.privkey_pwd);
|
||||
dht::crypto::saveIdentity(params.id, params.save_identity, params.privkey_pwd);
|
||||
}
|
||||
}
|
||||
|
||||
dht::DhtRunner::Config config {};
|
||||
config.dht_config.node_config.network = params.network;
|
||||
config.dht_config.node_config.maintain_storage = false;
|
||||
config.dht_config.node_config.persist_path = params.persist_path;
|
||||
config.dht_config.id = params.id;
|
||||
config.threaded = true;
|
||||
config.proxy_server = params.proxyclient;
|
||||
config.push_node_id = "dhtnode";
|
||||
config.push_token = params.devicekey;
|
||||
config.peer_discovery = params.peer_discovery;
|
||||
config.peer_publish = params.peer_discovery;
|
||||
if (params.no_rate_limit) {
|
||||
config.dht_config.node_config.max_req_per_sec = -1;
|
||||
config.dht_config.node_config.max_peer_req_per_sec = -1;
|
||||
}
|
||||
|
||||
dht::DhtRunner::Context context {};
|
||||
if (params.log) {
|
||||
if (params.syslog or (params.daemonize and params.logfile.empty()))
|
||||
context.logger = log::getSyslogLogger("dhtnode");
|
||||
else if (not params.logfile.empty())
|
||||
context.logger = log::getFileLogger(params.logfile);
|
||||
else
|
||||
context.logger = log::getStdLogger();
|
||||
}
|
||||
dht.run(params.port, config, std::move(context));
|
||||
auto dhtConf = getDhtConfig(params);
|
||||
dht.run(params.port, dhtConf.first, std::move(dhtConf.second));
|
||||
|
||||
if (not params.bootstrap.first.empty())
|
||||
dht.bootstrap(params.bootstrap.first.c_str(), params.bootstrap.second.c_str());
|
||||
|
||||
+4
-37
@@ -532,41 +532,8 @@ main(int argc, char **argv)
|
||||
|
||||
auto node = std::make_shared<DhtRunner>();
|
||||
try {
|
||||
if (not params.id.first and params.generate_identity) {
|
||||
auto node_ca = std::make_unique<dht::crypto::Identity>(dht::crypto::generateEcIdentity("DHT Node CA"));
|
||||
params.id = dht::crypto::generateIdentity("DHT Node", *node_ca);
|
||||
if (not params.save_identity.empty()) {
|
||||
dht::crypto::saveIdentity(*node_ca, params.save_identity + "_ca", params.privkey_pwd);
|
||||
dht::crypto::saveIdentity(params.id, params.save_identity, params.privkey_pwd);
|
||||
}
|
||||
}
|
||||
|
||||
dht::DhtRunner::Config config {};
|
||||
config.dht_config.node_config.network = params.network;
|
||||
config.dht_config.node_config.maintain_storage = false;
|
||||
config.dht_config.node_config.persist_path = params.persist_path;
|
||||
config.dht_config.id = params.id;
|
||||
config.threaded = true;
|
||||
config.proxy_server = params.proxyclient;
|
||||
config.push_node_id = "dhtnode";
|
||||
config.push_token = params.devicekey;
|
||||
config.peer_discovery = params.peer_discovery;
|
||||
config.peer_publish = params.peer_discovery;
|
||||
if (params.no_rate_limit) {
|
||||
config.dht_config.node_config.max_req_per_sec = -1;
|
||||
config.dht_config.node_config.max_peer_req_per_sec = -1;
|
||||
}
|
||||
|
||||
dht::DhtRunner::Context context {};
|
||||
if (params.log) {
|
||||
if (params.syslog or (params.daemonize and params.logfile.empty()))
|
||||
context.logger = log::getSyslogLogger("dhtnode");
|
||||
else if (not params.logfile.empty())
|
||||
context.logger = log::getFileLogger(params.logfile);
|
||||
else
|
||||
context.logger = log::getStdLogger();
|
||||
}
|
||||
node->run(params.port, config, std::move(context));
|
||||
auto dhtConf = getDhtConfig(params);
|
||||
node->run(params.port, dhtConf.first, std::move(dhtConf.second));
|
||||
|
||||
if (not params.bootstrap.first.empty()) {
|
||||
std::cout << "Bootstrap: " << params.bootstrap.first << ":" << params.bootstrap.second << std::endl;
|
||||
@@ -580,13 +547,13 @@ main(int argc, char **argv)
|
||||
#ifdef OPENDHT_PROXY_SERVER
|
||||
proxies.emplace(params.proxyserverssl, std::unique_ptr<DhtProxyServer>(
|
||||
new DhtProxyServer(params.proxy_id,
|
||||
node, params.proxyserverssl, params.pushserver, context.logger)));
|
||||
node, params.proxyserverssl, params.pushserver, dhtConf.second.logger)));
|
||||
}
|
||||
if (params.proxyserver) {
|
||||
proxies.emplace(params.proxyserver, std::unique_ptr<DhtProxyServer>(
|
||||
new DhtProxyServer(
|
||||
dht::crypto::Identity{},
|
||||
node, params.proxyserver, params.pushserver, context.logger)));
|
||||
node, params.proxyserver, params.pushserver, dhtConf.second.logger)));
|
||||
#else
|
||||
std::cerr << "DHT proxy server requested but OpenDHT built without proxy server support." << std::endl;
|
||||
exit(EXIT_FAILURE);
|
||||
|
||||
+2
-10
@@ -85,16 +85,8 @@ main(int argc, char **argv)
|
||||
|
||||
DhtRunner dht;
|
||||
try {
|
||||
dht.run(params.port, {}, true, params.network);
|
||||
|
||||
if (params.log) {
|
||||
if (params.syslog)
|
||||
log::enableSyslog(dht, "dhtnode");
|
||||
else if (not params.logfile.empty())
|
||||
log::enableFileLogging(dht, params.logfile);
|
||||
else
|
||||
log::enableLogging(dht);
|
||||
}
|
||||
auto dhtConf = getDhtConfig(params);
|
||||
dht.run(params.port, dhtConf.first, std::move(dhtConf.second));
|
||||
|
||||
if (not params.bootstrap.first.empty())
|
||||
dht.bootstrap(params.bootstrap.first.c_str(), params.bootstrap.second.c_str());
|
||||
|
||||
@@ -134,6 +134,46 @@ struct dht_params {
|
||||
bool no_rate_limit {false};
|
||||
};
|
||||
|
||||
std::pair<dht::DhtRunner::Config, dht::DhtRunner::Context>
|
||||
getDhtConfig(dht_params& params)
|
||||
{
|
||||
if (not params.id.first and params.generate_identity) {
|
||||
auto node_ca = std::make_unique<dht::crypto::Identity>(dht::crypto::generateEcIdentity("DHT Node CA"));
|
||||
params.id = dht::crypto::generateIdentity("DHT Node", *node_ca);
|
||||
if (not params.save_identity.empty()) {
|
||||
dht::crypto::saveIdentity(*node_ca, params.save_identity + "_ca", params.privkey_pwd);
|
||||
dht::crypto::saveIdentity(params.id, params.save_identity, params.privkey_pwd);
|
||||
}
|
||||
}
|
||||
|
||||
dht::DhtRunner::Config config {};
|
||||
config.dht_config.node_config.network = params.network;
|
||||
config.dht_config.node_config.maintain_storage = false;
|
||||
config.dht_config.node_config.persist_path = params.persist_path;
|
||||
config.dht_config.id = params.id;
|
||||
config.threaded = true;
|
||||
config.proxy_server = params.proxyclient;
|
||||
config.push_node_id = "dhtnode";
|
||||
config.push_token = params.devicekey;
|
||||
config.peer_discovery = params.peer_discovery;
|
||||
config.peer_publish = params.peer_discovery;
|
||||
if (params.no_rate_limit) {
|
||||
config.dht_config.node_config.max_req_per_sec = -1;
|
||||
config.dht_config.node_config.max_peer_req_per_sec = -1;
|
||||
}
|
||||
|
||||
dht::DhtRunner::Context context {};
|
||||
if (params.log) {
|
||||
if (params.syslog or (params.daemonize and params.logfile.empty()))
|
||||
context.logger = dht::log::getSyslogLogger("dhtnode");
|
||||
else if (not params.logfile.empty())
|
||||
context.logger = dht::log::getFileLogger(params.logfile);
|
||||
else
|
||||
context.logger = dht::log::getStdLogger();
|
||||
}
|
||||
return {std::move(config), std::move(context)};
|
||||
}
|
||||
|
||||
static const constexpr struct option long_options[] = {
|
||||
{"help", no_argument , nullptr, 'h'},
|
||||
{"port", required_argument, nullptr, 'p'},
|
||||
|
||||
Reference in new issue
Block a user