void QTlsServer::incomingConnection(int socketDescriptor) { QSslSocket* serverSocket = new QSslSocket; QObject::connect(serverSocket, SIGNAL(sslErrors(const QList<QSslError>&)), this, SLOT(displayTlsErrors(const QList<QSslError>&))); if (serverSocket->setSocketDescriptor(socketDescriptor)) { QFile file("server-key.pem"); if (!file.open(QIODevice::ReadOnly)) { std::cout << "can't open key" << "server-key.pem"; return; } QSslKey key(&file, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey, QByteArray("qtwebsocket-server-key")); file.close(); serverSocket->setPrivateKey(key); if (!serverSocket->addCaCertificates("ca.pem")) { std::cout << "open certificate ca error" << "ca.pem"; return; } serverSocket->setLocalCertificate("server-crt.pem"); serverSocket->setPeerVerifyMode(QSslSocket::VerifyNone); //serverSocket->ignoreSslErrors(); QObject::connect(serverSocket, SIGNAL(encrypted()), this, SLOT(tlsSocketEncrypted())); serverSocket->startServerEncryption(); } else { serverSocket->deleteLater(); } }
void Server::connectionFailure() { QSslSocket *socket = dynamic_cast<QSslSocket *>(sender()); assert(socket); std::cout << "connection error " << socket->errorString().toStdString() << std::endl; sockets.removeOne(socket); socket->disconnect(); socket->deleteLater(); }
void NetworkManagerFactory::initialize() { m_isInitialized = true; ///FIXME workaround, without it QSslSocket::defaultCiphers() will cause lockup (Qt 5.2) #if QT_VERSION < 0x050300 QSslSocket* tmpSocket = new QSslSocket(); tmpSocket->deleteLater(); #endif m_defaultCiphers = QSslSocket::defaultCiphers(); loadUserAgents(); optionChanged(QLatin1String("Network/DoNotTrackPolicy"), SettingsManager::getValue(QLatin1String("Network/DoNotTrackPolicy"))); optionChanged(QLatin1String("Network/EnableReferrer"), SettingsManager::getValue(QLatin1String("Network/EnableReferrer"))); optionChanged(QLatin1String("Network/WorkOffline"), SettingsManager::getValue(QLatin1String("Network/WorkOffline"))); optionChanged(QLatin1String("Security/Ciphers"), SettingsManager::getValue(QLatin1String("Security/Ciphers"))); connect(SettingsManager::getInstance(), SIGNAL(valueChanged(QString,QVariant)), this, SLOT(optionChanged(QString,QVariant))); }