diff options
Diffstat (limited to 'src/Server/ConnectionManager.cpp')
-rw-r--r-- | src/Server/ConnectionManager.cpp | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/src/Server/ConnectionManager.cpp b/src/Server/ConnectionManager.cpp index 25e088a..a278ee5 100644 --- a/src/Server/ConnectionManager.cpp +++ b/src/Server/ConnectionManager.cpp @@ -114,7 +114,35 @@ void ConnectionManager::updateState(Common::HostInfo *hostInfo, Common::HostInfo } } -bool ConnectionManager::handleConfigEntry(const Core::ConfigEntry &entry, bool handled) { +void ConnectionManager::configure() { + x509TrustFile = application->getConfigManager()->get("X509TrustFile"); + x509CrlFile = application->getConfigManager()->get("X509CrlFile"); + x509CertFile = application->getConfigManager()->get("X509CertFile"); + x509KeyFile = application->getConfigManager()->get("X509KeyFile"); + + std::vector<const Core::ConfigEntry*> listenEntries = application->getConfigManager()->getEntries("Listen"); + if(!listenEntries.empty()) { + for(std::vector<const Core::ConfigEntry*>::iterator listenEntry = listenEntries.begin(); listenEntry != listenEntries.end(); ++listenEntry) { + try { + boost::shared_ptr<Net::Listener> listener(new Net::Listener(application, x509CertFile, x509KeyFile, + parseAddress((*listenEntry)->getValue().toString()))); + listener->connectSignalNewConnection(boost::bind(&ConnectionManager::handleNewConnection, this, _1)); + listeners.push_back(listener); + } + catch(Core::Exception &e) { + application->logf(Core::Logger::LOG_WARNING, "ConnectionManager: Invalid listen address '%s'", (*listenEntry)->getValue().toLocale().c_str()); + } + } + } + else { + boost::shared_ptr<Net::Listener> listener(new Net::Listener(application, x509CertFile, x509KeyFile, + boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v6(), DEFAULT_PORT))); + listener->connectSignalNewConnection(boost::bind(&ConnectionManager::handleNewConnection, this, _1)); + listeners.push_back(listener); + } +} + +/*bool ConnectionManager::handleConfigEntry(const Core::ConfigEntry &entry, bool handled) { if(handled) return false; @@ -179,7 +207,7 @@ void ConnectionManager::configFinished() { // TODO Log error } } -} +}*/ void ConnectionManager::handleNewConnection(boost::shared_ptr<Net::Connection> con) { boost::shared_ptr<ServerConnection> connection(new ServerConnection(application, con)); |