Skip to content
Snippets Groups Projects
Commit 624f3646 authored by Adrien Béraud's avatar Adrien Béraud
Browse files

proxy: don't use shared_ptr for Identity

parent 561a6606
Branches
Tags
No related merge requests found
...@@ -79,7 +79,7 @@ public: ...@@ -79,7 +79,7 @@ public:
* it will fails silently * it will fails silently
*/ */
DhtProxyServer( DhtProxyServer(
std::shared_ptr<dht::crypto::Identity> identity, dht::crypto::Identity identity,
std::shared_ptr<DhtRunner> dht, in_port_t port = 8000, const std::string& pushServer = "", std::shared_ptr<DhtRunner> dht, in_port_t port = 8000, const std::string& pushServer = "",
std::shared_ptr<dht::Logger> logger = {}); std::shared_ptr<dht::Logger> logger = {});
...@@ -327,7 +327,6 @@ private: ...@@ -327,7 +327,6 @@ private:
std::unique_ptr<restinio::http_server_t<RestRouterTraits>> httpServer_; std::unique_ptr<restinio::http_server_t<RestRouterTraits>> httpServer_;
std::unique_ptr<asio::const_buffer> pk_; std::unique_ptr<asio::const_buffer> pk_;
std::unique_ptr<asio::const_buffer> cc_; std::unique_ptr<asio::const_buffer> cc_;
std::shared_ptr<dht::crypto::Identity> serverIdentity_;
// http client // http client
std::pair<std::string, std::string> pushHostPort_; std::pair<std::string, std::string> pushHostPort_;
......
...@@ -88,11 +88,11 @@ struct RestRouterTraits : public restinio::default_traits_t ...@@ -88,11 +88,11 @@ struct RestRouterTraits : public restinio::default_traits_t
}; };
DhtProxyServer::DhtProxyServer( DhtProxyServer::DhtProxyServer(
std::shared_ptr<dht::crypto::Identity> identity, dht::crypto::Identity identity,
std::shared_ptr<DhtRunner> dht, in_port_t port, const std::string& pushServer, std::shared_ptr<DhtRunner> dht, in_port_t port, const std::string& pushServer,
std::shared_ptr<dht::Logger> logger std::shared_ptr<dht::Logger> logger
) )
: dht_(dht), serverIdentity_(identity), logger_(logger), lockListener_(std::make_shared<std::mutex>()), : dht_(dht), logger_(logger), lockListener_(std::make_shared<std::mutex>()),
listeners_(std::make_shared<std::map<restinio::connection_id_t, http::ListenerSession>>()), listeners_(std::make_shared<std::map<restinio::connection_id_t, http::ListenerSession>>()),
connListener_(std::make_shared<http::ConnectionListener>(dht, listeners_, lockListener_, logger)), connListener_(std::make_shared<http::ConnectionListener>(dht, listeners_, lockListener_, logger)),
pushServer_(pushServer) pushServer_(pushServer)
...@@ -115,7 +115,7 @@ DhtProxyServer::DhtProxyServer( ...@@ -115,7 +115,7 @@ DhtProxyServer::DhtProxyServer(
jsonBuilder_["commentStyle"] = "None"; jsonBuilder_["commentStyle"] = "None";
jsonBuilder_["indentation"] = ""; jsonBuilder_["indentation"] = "";
if (identity){ if (identity.first and identity.second) {
// define tls context // define tls context
asio::ssl::context tls_context { asio::ssl::context::sslv23 }; asio::ssl::context tls_context { asio::ssl::context::sslv23 };
tls_context.set_options(asio::ssl::context::default_workarounds tls_context.set_options(asio::ssl::context::default_workarounds
...@@ -124,13 +124,13 @@ DhtProxyServer::DhtProxyServer( ...@@ -124,13 +124,13 @@ DhtProxyServer::DhtProxyServer(
// save keys in memory & set in tls context // save keys in memory & set in tls context
asio::error_code ec; asio::error_code ec;
// node private key // node private key
auto pk = identity->first->serialize(); // returns Blob auto pk = identity.first->serialize(); // returns Blob
pk_ = std::make_unique<asio::const_buffer>(static_cast<void*>(pk.data()), (std::size_t) pk.size()); pk_ = std::make_unique<asio::const_buffer>(static_cast<void*>(pk.data()), (std::size_t) pk.size());
tls_context.use_private_key(*pk_, asio::ssl::context::file_format::pem, ec); tls_context.use_private_key(*pk_, asio::ssl::context::file_format::pem, ec);
if (ec) if (ec)
throw std::runtime_error("Error setting node's private key: " + ec.message()); throw std::runtime_error("Error setting node's private key: " + ec.message());
// certificate chain // certificate chain
auto cc = identity->second->toString(true/*chain*/); auto cc = identity.second->toString(true/*chain*/);
cc_ = std::make_unique<asio::const_buffer>(static_cast<const void*>(cc.data()), (std::size_t) cc.size()); cc_ = std::make_unique<asio::const_buffer>(static_cast<const void*>(cc.data()), (std::size_t) cc.size());
tls_context.use_certificate_chain(*cc_, ec); tls_context.use_certificate_chain(*cc_, ec);
if (ec) if (ec)
......
...@@ -41,10 +41,8 @@ DhtProxyTester::setUp() { ...@@ -41,10 +41,8 @@ DhtProxyTester::setUp() {
nodeProxy->run(0, /*identity*/{}, /*threaded*/true); nodeProxy->run(0, /*identity*/{}, /*threaded*/true);
nodeProxy->bootstrap(nodePeer.getBound()); nodeProxy->bootstrap(nodePeer.getBound());
serverCAIdentity = std::make_unique<dht::crypto::Identity>( auto serverCAIdentity = dht::crypto::generateEcIdentity("DHT Node CA");
dht::crypto::generateEcIdentity("DHT Node CA")); auto serverIdentity = dht::crypto::generateIdentity("DHT Node", serverCAIdentity);
serverIdentity = std::make_shared<dht::crypto::Identity>(
dht::crypto::generateIdentity("DHT Node", *serverCAIdentity));
serverProxy = std::unique_ptr<dht::DhtProxyServer>( serverProxy = std::unique_ptr<dht::DhtProxyServer>(
new dht::DhtProxyServer( new dht::DhtProxyServer(
...@@ -52,7 +50,7 @@ DhtProxyTester::setUp() { ...@@ -52,7 +50,7 @@ DhtProxyTester::setUp() {
/*https*/serverIdentity, /*https*/serverIdentity,
nodeProxy, 8080, /*pushServer*/"127.0.0.1:8090", logger)); nodeProxy, 8080, /*pushServer*/"127.0.0.1:8090", logger));
clientConfig.client_cert = serverIdentity->second; clientConfig.client_cert = serverIdentity.second;
clientConfig.dht_config.node_config.maintain_storage = false; clientConfig.dht_config.node_config.maintain_storage = false;
clientConfig.threaded = true; clientConfig.threaded = true;
clientConfig.push_node_id = "dhtnode"; clientConfig.push_node_id = "dhtnode";
......
...@@ -66,11 +66,6 @@ class DhtProxyTester : public CppUnit::TestFixture { ...@@ -66,11 +66,6 @@ class DhtProxyTester : public CppUnit::TestFixture {
std::shared_ptr<dht::DhtRunner> nodeClient; std::shared_ptr<dht::DhtRunner> nodeClient;
std::shared_ptr<dht::DhtRunner> nodeProxy; std::shared_ptr<dht::DhtRunner> nodeProxy;
#ifdef OPENDHT_PUSH_NOTIFICATIONS
std::shared_ptr<dht::crypto::Identity> serverIdentity;
std::unique_ptr<dht::crypto::Identity> serverCAIdentity;
#endif
std::unique_ptr<dht::DhtProxyServer> serverProxy; std::unique_ptr<dht::DhtProxyServer> serverProxy;
dht::DhtRunner::Context clientContext {}; dht::DhtRunner::Context clientContext {};
......
...@@ -227,8 +227,7 @@ void cmd_loop(std::shared_ptr<DhtRunner>& node, dht_params& params ...@@ -227,8 +227,7 @@ void cmd_loop(std::shared_ptr<DhtRunner>& node, dht_params& params
unsigned int port = std::stoi(idstr); unsigned int port = std::stoi(idstr);
proxies.emplace(port, std::unique_ptr<DhtProxyServer>( proxies.emplace(port, std::unique_ptr<DhtProxyServer>(
new DhtProxyServer( new DhtProxyServer(
params.generate_identity ? std::make_shared<dht::crypto::Identity>(params.id) : nullptr, params.generate_identity ? params.id : dht::crypto::Identity{}, node, port
node, port
#ifdef OPENDHT_PUSH_NOTIFICATIONS #ifdef OPENDHT_PUSH_NOTIFICATIONS
,pushServer ,pushServer
#endif #endif
...@@ -562,7 +561,7 @@ main(int argc, char **argv) ...@@ -562,7 +561,7 @@ main(int argc, char **argv)
#ifdef OPENDHT_PROXY_SERVER #ifdef OPENDHT_PROXY_SERVER
proxies.emplace(params.proxyserver, std::unique_ptr<DhtProxyServer>( proxies.emplace(params.proxyserver, std::unique_ptr<DhtProxyServer>(
new DhtProxyServer( new DhtProxyServer(
params.generate_identity ? std::make_shared<dht::crypto::Identity>(params.id) : nullptr, params.generate_identity ? params.id : dht::crypto::Identity{},
node, params.proxyserver, params.pushserver, context.logger))); node, params.proxyserver, params.pushserver, context.logger)));
#else #else
std::cerr << "DHT proxy server requested but OpenDHT built without proxy server support." << std::endl; std::cerr << "DHT proxy server requested but OpenDHT built without proxy server support." << std::endl;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment