Skip to content
Snippets Groups Projects
Commit c7d633e6 authored by Seva's avatar Seva Committed by Adrien Béraud
Browse files

dhtnode: separate proxy privkey, cert & pwd arguments

parent 2576d95a
Branches
Tags
No related merge requests found
......@@ -242,10 +242,10 @@ void cmd_loop(std::shared_ptr<DhtRunner>& node, dht_params& params
iss >> idstr;
#endif // OPENDHT_PUSH_NOTIFICATIONS
try {
if (params.id.first and params.id.second){
if (params.proxy_id.first and params.proxy_id.second){
unsigned int port = std::stoi(idstr);
proxies.emplace(port, std::unique_ptr<DhtProxyServer>(
new DhtProxyServer(params.id, node, port
new DhtProxyServer(params.proxy_id, node, port
#ifdef OPENDHT_PUSH_NOTIFICATIONS
,pushServer
#endif
......@@ -575,10 +575,10 @@ main(int argc, char **argv)
#ifdef OPENDHT_PROXY_SERVER
std::map<in_port_t, std::unique_ptr<DhtProxyServer>> proxies;
#endif
if (params.proxyserverssl and params.id.first and params.id.second){
if (params.proxyserverssl and params.proxy_id.first and params.proxy_id.second){
#ifdef OPENDHT_PROXY_SERVER
proxies.emplace(params.proxyserverssl, std::unique_ptr<DhtProxyServer>(
new DhtProxyServer(params.id,
new DhtProxyServer(params.proxy_id,
node, params.proxyserverssl, params.pushserver, context.logger)));
}
if (params.proxyserver) {
......
......@@ -127,7 +127,9 @@ struct dht_params {
std::string devicekey {};
std::string persist_path {};
dht::crypto::Identity id {};
dht::crypto::Identity proxy_id {};
std::string privkey_pwd {};
std::string proxy_privkey_pwd {};
std::string save_identity {};
};
......@@ -150,6 +152,9 @@ static const constexpr struct option long_options[] = {
{"syslog", no_argument , nullptr, 'L'},
{"proxyserver", required_argument, nullptr, 'S'},
{"proxyserverssl", required_argument, nullptr, 'e'},
{"proxy-certificate", required_argument, nullptr, 'w'},
{"proxy-privkey", required_argument, nullptr, 'K'},
{"proxy-privkey-password", required_argument, nullptr, 'M'},
{"proxyclient", required_argument, nullptr, 'C'},
{"pushserver", required_argument, nullptr, 'y'},
{"devicekey", required_argument, nullptr, 'z'},
......@@ -162,6 +167,7 @@ parseArgs(int argc, char **argv) {
dht_params params;
int opt;
std::string privkey;
std::string proxy_privkey;
while ((opt = getopt_long(argc, argv, "hidsvDp:n:b:f:l:", long_options, nullptr)) != -1) {
switch (opt) {
case 'p': {
......@@ -245,12 +251,26 @@ parseArgs(int argc, char **argv) {
}
break;
}
case 'w': {
try {
params.proxy_id.second = std::make_shared<dht::crypto::Certificate>(loadFile(optarg));
} catch (const std::exception& e) {
throw std::runtime_error(std::string("Error loading proxy certificate: ") + e.what());
}
break;
}
case 'k':
privkey = optarg;
break;
case 'K':
proxy_privkey = optarg;
break;
case 'm':
params.privkey_pwd = optarg;
break;
case 'M':
params.proxy_privkey_pwd = optarg;
break;
case 'I':
params.save_identity = optarg;
break;
......@@ -260,11 +280,20 @@ parseArgs(int argc, char **argv) {
}
if (not privkey.empty()) {
try {
params.id.first = std::make_shared<dht::crypto::PrivateKey>(loadFile(privkey), params.privkey_pwd);
params.id.first = std::make_shared<dht::crypto::PrivateKey>(loadFile(privkey),
params.privkey_pwd);
} catch (const std::exception& e) {
throw std::runtime_error(std::string("Error loading private key: ") + e.what());
}
}
if (not proxy_privkey.empty()) {
try {
params.proxy_id.first = std::make_shared<dht::crypto::PrivateKey>(loadFile(proxy_privkey),
params.proxy_privkey_pwd);
} catch (const std::exception& e) {
throw std::runtime_error(std::string("Error loading proxy private key: ") + e.what());
}
}
if (params.save_identity.empty())
params.privkey_pwd.clear();
return params;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment