X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsslserver.cpp;h=f7d35c3447df70f49d5f871fc7f80e6a3c848638;hp=e5d6e27e8d9222e2f4fec4d07656c4e235d28af5;hb=b62292bbe3f21887dc5ee4353ca9cf675f9aa3f3;hpb=cc6e7c08709c4e761e2fd9c2e322751015497003 diff --git a/src/core/sslserver.cpp b/src/core/sslserver.cpp index e5d6e27e..f7d35c34 100644 --- a/src/core/sslserver.cpp +++ b/src/core/sslserver.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 * @@ -20,16 +20,12 @@ #include "sslserver.h" -#ifdef HAVE_SSL -# include -#endif - #include +#include +#include "core.h" #include "quassel.h" -#ifdef HAVE_SSL - SslServer::SslServer(QObject* parent) : QTcpServer(parent) { @@ -61,28 +57,19 @@ SslServer::SslServer(QObject* parent) } } -QTcpSocket* SslServer::nextPendingConnection() -{ - if (_pendingConnections.isEmpty()) - return nullptr; - else - return _pendingConnections.takeFirst(); -} - void SslServer::incomingConnection(qintptr socketDescriptor) { - auto* serverSocket = new QSslSocket(this); - if (serverSocket->setSocketDescriptor(socketDescriptor)) { + auto* socket = new QSslSocket(this); + if (socket->setSocketDescriptor(socketDescriptor)) { if (isCertValid()) { - serverSocket->setLocalCertificate(_cert); - serverSocket->setPrivateKey(_key); - serverSocket->addCaCertificates(_ca); + socket->setLocalCertificate(_cert); + socket->setPrivateKey(_key); + socket->addCaCertificates(_ca); } - _pendingConnections << serverSocket; - emit newConnection(); + addPendingConnection(socket); } else { - delete serverSocket; + delete socket; } } @@ -199,6 +186,11 @@ bool SslServer::setCertificate(const QString& path, const QString& keyPath) return false; } + _certificateExpires = untestedCert.expiryDate(); + if (_metricsServer) { + _metricsServer->setCertificateExpires(_certificateExpires); + } + _isCertValid = true; // All keys are valid, update the externally visible copy used for new connections. @@ -223,4 +215,9 @@ QSslKey SslServer::loadKey(QFile* keyFile) return key; } -#endif // HAVE_SSL +void SslServer::setMetricsServer(MetricsServer* metricsServer) { + _metricsServer = metricsServer; + if (_metricsServer) { + _metricsServer->setCertificateExpires(_certificateExpires); + } +}