summaryrefslogtreecommitdiffstats
path: root/src/Server/ConnectionManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Server/ConnectionManager.cpp')
-rw-r--r--src/Server/ConnectionManager.cpp32
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));