/***************************************************************************
- * 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 *
_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()) {
if (_storage) {
QVariantList activeSessions;
for (auto&& user : instance()->_sessions.keys())
- activeSessions << QVariant::fromValue<UserId>(user);
+ activeSessions << QVariant::fromValue(user);
_storage->setCoreState(activeSessions);
}
}
bool Core::sslSupported()
{
-#ifdef HAVE_SSL
- auto* sslServer = qobject_cast<SslServer*>(&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<SslServer*>(&_server);
- bool retv4 = sslServerv4->reloadCerts();
-
- auto* sslServerv6 = qobject_cast<SslServer*>(&_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()
_identServer->startListening();
}
+ if (_metricsServer) {
+ _metricsServer->startListening();
+ }
+
return success;
}
_identServer->stopListening(reason);
}
+ if (_metricsServer) {
+ _metricsServer->stopListening(reason);
+ }
+
bool wasListening = false;
if (_server.isListening()) {
wasListening = true;
void Core::incomingConnection()
{
- auto* server = qobject_cast<QTcpServer*>(sender());
+ auto* server = qobject_cast<SslServer*>(sender());
Q_ASSERT(server);
while (server->hasPendingConnections()) {
- QTcpSocket* socket = server->nextPendingConnection();
+ auto socket = qobject_cast<QSslSocket*>(server->nextPendingConnection());
+ Q_ASSERT(socket);
auto* handler = new CoreAuthHandler(socket, this);
_connectingClients.insert(handler);
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."));
auto* handler = qobject_cast<CoreAuthHandler*>(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();