X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fsslserver.h;h=16ab183bd3e33495ce6fe72e49b872832e6272d6;hp=d8a8bba68d07047b05b33c9ee3e1667a73a98e1f;hb=752237a05d424c132f51a0bba76dea84e2d72b81;hpb=5b686746c880e5cda6d5de3e08180ea4332ff222 diff --git a/src/core/sslserver.h b/src/core/sslserver.h index d8a8bba6..16ab183b 100644 --- a/src/core/sslserver.h +++ b/src/core/sslserver.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2012 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -27,6 +27,7 @@ #include #include #include +#include class SslServer : public QTcpServer { @@ -42,16 +43,46 @@ public: virtual inline const QSslKey &key() const { return _key; } virtual inline bool isCertValid() const { return _isCertValid; } + /** + * Reloads SSL certificates used for connections + * + * If this command fails, it will try to maintain the most recent working certificate. Error + * conditions are automatically written to the log. + * + * @return True if certificates reloaded successfully, otherwise false. + */ + bool reloadCerts(); + protected: +#if QT_VERSION >= 0x050000 + virtual void incomingConnection(qintptr socketDescriptor); +#else virtual void incomingConnection(int socketDescriptor); - virtual bool setCertificate(const QString &path); +#endif + + virtual bool setCertificate(const QString &path, const QString &keyPath); private: + /** + * Loads SSL certificates used for connections + * + * If this command fails, it will try to maintain the most recent working certificate. Will log + * specific failure points, but does not offer verbose guidance. + * + * @return True if certificates loaded successfully, otherwise false. + */ + bool loadCerts(); + QSslKey loadKey(QFile *keyFile); + QLinkedList _pendingConnections; QSslCertificate _cert; QSslKey _key; QList _ca; bool _isCertValid; + + // Used when reloading certificates later + QString _sslCertPath; /// Path to the certificate file + QString _sslKeyPath; /// Path to the private key file (may be in same file as above) };