X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcore.cpp;h=11563fd5f59ec423e505b99854538b716fb40890;hp=a4133eb12ecec93e6b37dfacff1630900d9c3906;hb=c0d6dc0dec628f2e143e37ecc95cec45e636f8a5;hpb=d1ecf9e978968e1ed82f1baee64f83d7f60c7017 diff --git a/src/core/core.cpp b/src/core/core.cpp index a4133eb1..11563fd5 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2019 by the Quassel Project * + * Copyright (C) 2005-2020 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -213,6 +213,12 @@ void Core::init() _identServer = new IdentServer(this); } + if (Quassel::isOptionSet("metrics-daemon")) { + _metricsServer = new MetricsServer(this); + _server.setMetricsServer(_metricsServer); + _v6server.setMetricsServer(_metricsServer); + } + Quassel::registerReloadHandler([]() { // Currently, only reloading SSL certificates and the sysident cache is supported if (Core::instance()) { @@ -294,7 +300,7 @@ void Core::saveState() if (_storage) { QVariantList activeSessions; for (auto&& user : instance()->_sessions.keys()) - activeSessions << QVariant::fromValue(user); + activeSessions << QVariant::fromValue(user); _storage->setCoreState(activeSessions); } } @@ -566,28 +572,15 @@ bool Core::initAuthenticator( bool Core::sslSupported() { -#ifdef HAVE_SSL - auto* sslServer = qobject_cast(&instance()->_server); - return sslServer && sslServer->isCertValid(); -#else - return false; -#endif + return instance()->_server.isCertValid() && instance()->_v6server.isCertValid(); } bool Core::reloadCerts() { -#ifdef HAVE_SSL - auto* sslServerv4 = qobject_cast(&_server); - bool retv4 = sslServerv4->reloadCerts(); - - auto* sslServerv6 = qobject_cast(&_v6server); - bool retv6 = sslServerv6->reloadCerts(); + bool retv4 = _server.reloadCerts(); + bool retv6 = _v6server.reloadCerts(); return retv4 && retv6; -#else - // SSL not supported, don't mark configuration reload as failed - return true; -#endif } void Core::cacheSysIdent() @@ -674,6 +667,10 @@ bool Core::startListening() _identServer->startListening(); } + if (_metricsServer) { + _metricsServer->startListening(); + } + return success; } @@ -683,6 +680,10 @@ void Core::stopListening(const QString& reason) _identServer->stopListening(reason); } + if (_metricsServer) { + _metricsServer->stopListening(reason); + } + bool wasListening = false; if (_server.isListening()) { wasListening = true; @@ -702,10 +703,11 @@ void Core::stopListening(const QString& reason) void Core::incomingConnection() { - auto* server = qobject_cast(sender()); + auto* server = qobject_cast(sender()); Q_ASSERT(server); while (server->hasPendingConnections()) { - QTcpSocket* socket = server->nextPendingConnection(); + auto socket = qobject_cast(server->nextPendingConnection()); + Q_ASSERT(socket); auto* handler = new CoreAuthHandler(socket, this); _connectingClients.insert(handler); @@ -714,7 +716,7 @@ void Core::incomingConnection() connect(handler, &AuthHandler::socketError, this, &Core::socketError); connect(handler, &CoreAuthHandler::handshakeComplete, this, &Core::setupClientSession); - qInfo() << qPrintable(tr("Client connected from")) << qPrintable(socket->peerAddress().toString()); + qInfo() << qPrintable(tr("Client connected from")) << qPrintable(handler->hostAddress().toString()); if (!_configured) { stopListening(tr("Closing server for basic setup.")); @@ -728,7 +730,7 @@ void Core::clientDisconnected() auto* handler = qobject_cast(sender()); Q_ASSERT(handler); - qInfo() << qPrintable(tr("Non-authed client disconnected:")) << qPrintable(handler->socket()->peerAddress().toString()); + qInfo() << qPrintable(tr("Non-authed client disconnected:")) << qPrintable(handler->hostAddress().toString()); _connectingClients.remove(handler); handler->deleteLater();