Project

General

Profile

0002-Support-some-basic-status-messages-if-ssl-is-not-pos.patch

put ssl error messages to the client - Weaselweb, 07/10/2009 06:07 PM

View differences:

src/client/clientsyncer.cpp
216 216

  
217 217
      sslSocket->startClientEncryption();
218 218
    } else {
219
      emit connectionError(tr("<b>The Quassel Core you are trying to connect to does not support SSL!</b><br />If you want to connect anyways, disable the usage of SSL in the account settings."));
219
      if (msg["SslStatusMsg"].toString() == "Unsupported") {
220
	emit connectionError(tr("<b>The Quassel Core you are trying to connect to does not support SSL!</b><br />If you want to connect anyways, disable the usage of SSL in the account settings."));
221
      } else if (msg["SslStatusMsg"].toString() == "CertExpired") {
222
	emit connectionError(tr("<b>The Quassel Core you are trying to connect has an expired certificate!</b><br />If you want to connect anyways, disable the usage of SSL in the account settings."));
223
      } else if (msg["SslStatusMsg"].toString() == "CertNotValidYet") {
224
	emit connectionError(tr("<b>The Quassel Core you are trying to connect has a certificate which is not valid yet!</b><br />If you want to connect anyways, disable the usage of SSL in the account settings."));
225
      }
220 226
      disconnectFromCore();
221 227
    }
222 228
    return;
src/core/core.cpp
511 511
    SslServer *sslServer = qobject_cast<SslServer *>(&_server);
512 512
    QSslSocket *sslSocket = qobject_cast<QSslSocket *>(socket);
513 513
    bool supportSsl = (bool)sslServer && (bool)sslSocket && sslServer->isCertValid();
514
    QString sslStatusMsg;
515
    if ((bool)sslServer) {
516
      sslStatusMsg = sslServer->getSslStatusMsg();
517
    } else {
518
      sslStatusMsg = "Unsupported";
519
    }
514 520
#else
515 521
    bool supportSsl = false;
522
    QString sslStatusMsg = "Unsupported";
516 523
#endif
517 524

  
518 525
#ifndef QT_NO_COMPRESS
......
522 529
#endif
523 530

  
524 531
    reply["SupportSsl"] = supportSsl;
532
    reply["SslStatusMsg"] = sslStatusMsg;
525 533
    reply["SupportsCompression"] = supportsCompression;
526 534
    // switch to ssl/compression after client has been informed about our capabilities (see below)
527 535

  
src/core/sslserver.cpp
34 34

  
35 35
SslServer::SslServer(QObject *parent)
36 36
  : QTcpServer(parent),
37
  _isCertValid(false)
37
  _isCertValid(false),
38
  _sslStatusMsg("Unsupported")
38 39
{
39 40
  static bool sslWarningShown = false;
40 41
  if(!setCertificate(Quassel::configDirPath() + "quasselCert.pem")) {
......
106 107

  
107 108
    if (currentTime > _cert.expiryDate()) {
108 109
      quWarning() << "SslServer: certificate expired";
110
      _sslStatusMsg = "CertExpired";
109 111
      return false;
110 112
    }
111 113
    if (currentTime < _cert.effectiveDate()) {
112 114
      quWarning() << "SslServer: certificate is not valid yet";
115
      _sslStatusMsg = "CertNotValidYet";
113 116
      return false;
114 117
    }
115 118
    quWarning() << "SslServer: Invalid certificate (unknown reason)";
......
120 123
    return false;
121 124
  }
122 125

  
126
  _sslStatusMsg = "Supported";
123 127
  _isCertValid = true;
124 128

  
125 129
  return _isCertValid;
src/core/sslserver.h
27 27
#include <QSslKey>
28 28
#include <QTcpServer>
29 29
#include <QLinkedList>
30
#include <QString>
30 31

  
31 32
class SslServer : public QTcpServer {
32 33
  Q_OBJECT
......
40 41
  virtual inline const QSslCertificate &certificate() const { return _cert; }
41 42
  virtual inline const QSslKey &key() const { return _key; }
42 43
  virtual inline bool isCertValid() const { return _isCertValid; }
44
  virtual inline QString getSslStatusMsg() const { return _sslStatusMsg; }
43 45

  
44 46
protected:
45 47
  virtual void incomingConnection(int socketDescriptor);
......
50 52
  QSslCertificate _cert;
51 53
  QSslKey _key;
52 54
  bool _isCertValid;
55
  QString _sslStatusMsg;
53 56
};
54 57

  
55 58
#endif //HAVE_SSL
56
-