void HTTPSManager::incomingConnection(qintptr socketDescriptor) { QSslSocket* sslSocket = new QSslSocket(this); sslSocket->setLocalCertificate(_certificate); sslSocket->setPrivateKey(_privateKey); if (sslSocket->setSocketDescriptor(socketDescriptor)) { new HTTPSConnection(sslSocket, this); } else { delete sslSocket; } }
void HttpsServer::incomingConnection(qintptr socketDescriptor) #endif { QSslSocket* sslSocket = new QSslSocket(this); if (sslSocket->setSocketDescriptor(socketDescriptor)) { sslSocket->setPrivateKey(privateKey()); sslSocket->setLocalCertificate(certificate()); sslSocket->startServerEncryption(); connect(sslSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(sslSocket_sslErrors(QList<QSslError>))); connect(sslSocket, SIGNAL(encrypted()), this, SLOT(sslSocket_encrypted())); addPendingConnection(sslSocket); nextPendingConnection(); createHttpConnection()->initialize(sslSocket, sslSocket); } else { qWarning() << "HttpsServer::incomingConnection: failed to set socket descriptor '" << socketDescriptor << "' on ssl socket."; delete sslSocket; } }
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 QSslServer::incomingConnection(qintptr socket) { QSslSocket *pSslSocket = new QSslSocket(); if (Q_LIKELY(pSslSocket)) { pSslSocket->setSslConfiguration(m_sslConfiguration); if (Q_LIKELY(pSslSocket->setSocketDescriptor(socket))) { typedef void (QSslSocket::* sslErrorsSignal)(const QList<QSslError> &); #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 2) connect(pSslSocket, &QSslSocket::peerVerifyError, this, &QSslServer::peerVerifyError); connect(pSslSocket, &QSslSocket::encrypted, this, &QSslServer::newEncryptedConnection); #else connect(pSslSocket,SIGNAL(peerVerifyError(QSslError)), this, SIGNAL(peerVerifyError(QSslError))); connect(pSslSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SIGNAL(sslErrors(QList<QSslError>))); connect(pSslSocket, SIGNAL(encrypted()), this, SIGNAL(newEncryptedConnection())); #endif addPendingConnection(pSslSocket); pSslSocket->startServerEncryption(); } else { delete pSslSocket; } } }
QTcpSocket *Nuria::Internal::TcpServer::handleToSocket (qintptr handle) { if (!this->m_ssl) { QTcpSocket *socket = new QTcpSocket; socket->setSocketDescriptor (handle); return socket; } // SSL #ifndef NURIA_NO_SSL_HTTP QSslSocket *socket = new QSslSocket (this); // Certificate and private key socket->setPrivateKey (this->m_key); socket->setLocalCertificate (this->m_cert); // Set handle if (!socket->setSocketDescriptor (handle)) { delete socket; return nullptr; } // socket->startServerEncryption (); return socket; #else return nullptr; #endif }
void InVpnSslServer::incomingConnection(int socketDescriptor) { QSslSocket *serverSocket = new QSslSocket(this); if (serverSocket->setSocketDescriptor(socketDescriptor)) { ready(serverSocket); } else { delete serverSocket; } }
void SshServer::slot_newIncommingConnection( int socketDescriptor ) { QSslSocket* sslSocket = new QSslSocket(); // before the handshake, we need to adjust some security parameters for SSL QSsl::SslProtocol sslProtocol; if( "SSL-v3" == _sshServerSettings._version ) sslProtocol = QSsl::SslV3; else if( "TLS-v1" == _sshServerSettings._version ) sslProtocol = QSsl::TlsV1; else { logError( this, "no valid SSL version to use" ); delete sslSocket; return; } QSsl::EncodingFormat ecodingFormat = ("PER"==_sshServerSettings._format) ? QSsl::Pem : QSsl::Der; QSsl::KeyAlgorithm algorithm = ("RSA"==_sshServerSettings._cipher) ? QSsl::Rsa : QSsl::Dsa; QByteArray password; // setting the SSL version to use sslSocket->setProtocol( sslProtocol ); // ensure that the peer's certificate will be verified sslSocket->setPeerVerifyMode( QSslSocket::VerifyPeer ); // ensure that the peer's cerficiate and its issuer's certificate will be verified sslSocket->setPeerVerifyDepth( 2 ); // setting server's certificate sslSocket->setLocalCertificate( _sshServerSettings._certificate, ecodingFormat ); // setting server's private key sslSocket->setPrivateKey( _sshServerSettings._privateKey, algorithm, ecodingFormat, password ); // setting the CA ceritificate QList<QSslCertificate> caCertificates = QSslCertificate::fromPath( _sshServerSettings._certificate, ecodingFormat ); sslSocket->setDefaultCaCertificates( caCertificates ); // setup some traps for the socket events connect( sslSocket, SIGNAL(disconnected()), sslSocket, SLOT(deleteLater()) ); connect( sslSocket, SIGNAL(encrypted()), SLOT(slot_SuccessfulConnected()) ); connect( sslSocket, SIGNAL(sslErrors(const QList<QSslError>&)), this, SLOT(slot_UnSuccessfulConnected(const QList<QSslError>&)) ); connect( sslSocket, SIGNAL(readyRead()), this, SLOT(slot_IncommingData()) ); // start the handshake bool result = sslSocket->setSocketDescriptor( socketDescriptor ); if( false == result ) { logError( this, QString("failed to set socket descriptor: %1").arg(sslSocket->errorString()) ); delete sslSocket; return; } sslSocket->startServerEncryption(); }
void SslServer::incomingConnection(qintptr handle) { QSslSocket *socket = new QSslSocket(this); socket->setSocketDescriptor(handle); socket->setLocalCertificate(_cert); socket->setPrivateKey(_key); addPendingConnection(socket); }
//! [1] void SslServer::incomingConnection(qintptr socketDescriptor) { QSslSocket *serverSocket = new QSslSocket; if (serverSocket->setSocketDescriptor(socketDescriptor)) { connect(serverSocket, SIGNAL(encrypted()), this, SLOT(ready())); serverSocket->startServerEncryption(); } else { delete serverSocket; } }
QAbstractSocket* SslSocketCreation::operator()() const { QSslSocket* socket = new QSslSocket(); socket->setSocketDescriptor(socketDescriptor); socket->setLocalCertificate(certificate); socket->setPrivateKey(privateKey); socket->startServerEncryption(); return socket; }
//! [1] void SslServer::incomingConnection(qintptr socketDescriptor) { QSslSocket *serverSocket = new QSslSocket; if (serverSocket->setSocketDescriptor(socketDescriptor)) { addPendingConnection(serverSocket); connect(serverSocket, &QSslSocket::encrypted, this, &SslServer::ready); serverSocket->startServerEncryption(); } else { delete serverSocket; } }
// Intercept new socket connection and enable SSL void SslServer::incomingConnection(int socketDescriptor) { QSslSocket *serverSocket = new QSslSocket(); if (serverSocket->setSocketDescriptor(socketDescriptor)) { addPendingConnection (serverSocket); } else { delete serverSocket; } }
QAbstractSocket * HttpsSocket::createSocket(qintptr socketDescriptor) { QSslSocket * socket = new QSslSocket(); socket->setSocketDescriptor(socketDescriptor); socket->setLocalCertificate(m_certificate); socket->setPrivateKey(m_privateKey); socket->startServerEncryption(); return socket; }
QIODevice* QxtSslConnectionManager::incomingConnection(int socketDescriptor) #endif { QSslSocket* socket = new QSslSocket(this); if(socket->setSocketDescriptor(socketDescriptor)) { socket->setLocalCertificate(qxt_d().localCertificate()); socket->setPrivateKey(qxt_d().privateKey()); if(qxt_d().autoEncrypt()) socket->startServerEncryption(); return socket; } else { delete socket; return 0; } }
void SslServer::incomingConnection(int socketDescriptor) { QSslSocket *serverSocket = new QSslSocket(this); if (serverSocket->setSocketDescriptor(socketDescriptor)) { if (isCertValid()) { serverSocket->setLocalCertificate(_cert); serverSocket->setPrivateKey(_key); serverSocket->addCaCertificates(_ca); } _pendingConnections << serverSocket; emit newConnection(); } else { delete serverSocket; } }
/** * Called when a new connection is available. The newConnection() * signal is emitted when the connection is added to the pending * connections queue * * @brief SslServer::incomingConnection * @param socketDescriptor * * Ref: http://doc.qt.io/qt-5/qtcpserver.html#incomingConnection */ void SslServer::incomingConnection(qintptr socketDescriptor) { QSslSocket *mSslSocket = new QSslSocket(this); if(mSslSocket->setSocketDescriptor(socketDescriptor)) { mSslSocket->setProtocol(mProtocol); mSslSocket->setLocalCertificate(mLocalCertificate); mSslSocket->setPrivateKey(mPrivateKey); this->addPendingConnection(mSslSocket); } else { delete mSslSocket; qDebug() << "QSslSocket pointer deleted"; } }
void QxtSslServer::incomingConnection(int socketDescriptor) #endif { QSslSocket* socket = new QSslSocket(this); if(socket->setSocketDescriptor(socketDescriptor)) { socket->setLocalCertificate(qxt_d().localCertificate); socket->setPrivateKey(qxt_d().privateKey); if(parent()){ connect(socket, SIGNAL(sslErrors(const QList<QSslError>&)), parent(), SLOT(sslErrors(const QList<QSslError>&))); connect(socket, SIGNAL(peerVerifyError(const QSslError&)), parent(), SLOT(peerVerifyError(const QSslError&))); } qxt_d().pendingConnections.enqueue(socket); // emit newConnection(); // removed: QTcpServerPrivate emits this for us if(qxt_d().autoEncrypt) socket->startServerEncryption(); } else { delete socket; } }
/*! Called when a new connection is established. Converts \a socket to a QSslSocket. \internal */ void QSslServer::incomingConnection(qintptr socket) { QSslSocket *pSslSocket = new QSslSocket(); if (Q_LIKELY(pSslSocket)) { pSslSocket->setSslConfiguration(m_sslConfiguration); if (Q_LIKELY(pSslSocket->setSocketDescriptor(socket))) { connect(pSslSocket, &QSslSocket::peerVerifyError, this, &QSslServer::peerVerifyError); typedef void (QSslSocket::* sslErrorsSignal)(const QList<QSslError> &); connect(pSslSocket, static_cast<sslErrorsSignal>(&QSslSocket::sslErrors), this, &QSslServer::sslErrors); connect(pSslSocket, &QSslSocket::encrypted, this, &QSslServer::newEncryptedConnection); addPendingConnection(pSslSocket); pSslSocket->startServerEncryption(); } else { delete pSslSocket; } } }
void SSLServer::incomingConnection(int socketDescriptor) { // On an incoming connection we want // to create a new secure socket. QSslSocket *secureSocket = new QSslSocket; // Add to list so that we can find it with // nextConnection m_secureSocketList.append(secureSocket); // We need to read in the local certificate and // and the private key that we generated // with openssl. Read the README to see // how these are generated. secureSocket->setLocalCertificate("cacert.pem"); secureSocket->setPrivateKey("privkey.pem"); // check that the certificate / private key are not null if (secureSocket->localCertificate().isNull()) { qDebug() << "WARNING: The local certificate appears to be null! "; } if (secureSocket->privateKey().isNull()) { qDebug() << "WARNING: The private key appears to be null! "; } // debug message on success qDebug() << "Created the SSL socket, Read local cert. / private key files"; // From incoming connection we obtain the socket descriptor, // we associate this with our new SSL socket secureSocket->setSocketDescriptor(socketDescriptor); // Begin encryption. Note from the documentation // all the key stuff must be done prior to doing this. secureSocket->startServerEncryption(); qDebug() << "Started encryption for new secure socket"; }
void SslServer::newConnectionPrivate(qintptr descriptor) { QSslSocket *socket = new QSslSocket(this); socket->setSocketDescriptor(descriptor); if (m_max_connections == 0) { socket->abort(); return; } socket->setProtocol(QSsl::TlsV1_2OrLater); socket->addCaCertificate(m_cert); socket->setLocalCertificate(m_cert); socket->setPrivateKey(m_key); //New connection done, set one less available connection m_max_connections--; QByteArray m_buffer; qint32 size = 0; m_socket_list.append(socket); m_descriptor_hash.insert(socket, descriptor); m_socket_hash.insert(descriptor, socket); m_buffer_hash.insert(socket, m_buffer); m_size_hash.insert(socket, size); connect(socket, &QSslSocket::encrypted, this, &SslServer::encrypted); connect(socket, &QSslSocket::disconnected, this, &SslServer::disconnectedPrivate); connect(socket, static_cast<void(QSslSocket::*)(const QList<QSslError>&)>(&QSslSocket::sslErrors), this, &SslServer::sslErrors); m_alive_hash[socket].start(); socket->startServerEncryption(); }
void SslServer::incomingConnection(int v) { QSslSocket *s = new QSslSocket(this); s->setSocketDescriptor(v); qlSockets.append(s); }
void WebSocketWorker::SetupSocket() { if (m_connectionType == kSSLServer) { #ifndef QT_NO_OPENSSL QSslSocket *pSslSocket = new QSslSocket(); if (pSslSocket->setSocketDescriptor(m_socketFD) && gCoreContext->CheckSubnet(pSslSocket)) { pSslSocket->setSslConfiguration(m_sslConfig); pSslSocket->startServerEncryption(); if (pSslSocket->waitForEncrypted(5000)) { LOG(VB_HTTP, LOG_INFO, "SSL Handshake occurred, connection encrypted"); LOG(VB_HTTP, LOG_INFO, QString("Using %1 cipher").arg(pSslSocket->sessionCipher().name())); } else { LOG(VB_HTTP, LOG_WARNING, "SSL Handshake FAILED, connection terminated"); delete pSslSocket; pSslSocket = nullptr; } } else { delete pSslSocket; pSslSocket = nullptr; } if (pSslSocket) m_socket = dynamic_cast<QTcpSocket *>(pSslSocket); else return; #else return; #endif } else // Plain old unencrypted socket { m_socket = new QTcpSocket(); m_socket->setSocketDescriptor(m_socketFD); if (!gCoreContext->CheckSubnet(m_socket)) { delete m_socket; m_socket = nullptr; return; } } m_socket->setSocketOption(QAbstractSocket::KeepAliveOption, QVariant(1)); connect(m_socket, SIGNAL(readyRead()), SLOT(doRead())); connect(m_socket, SIGNAL(disconnected()), SLOT(CloseConnection())); // Setup heartbeat m_heartBeat->setInterval(20000); // 20 second m_heartBeat->setSingleShot(false); connect(m_heartBeat, SIGNAL(timeout()), SLOT(SendHeartBeat())); }