void SettingsEditorForm::connectToHost(QString addr, int port) { if(_socket != nullptr) { _socket->close(); _socket->deleteLater(); } _socket = new QSslSocket(this); connect( _socket, SIGNAL(error(QAbstractSocket::SocketError)), this,SLOT(onSocketError(QAbstractSocket::SocketError))); connect( _socket, SIGNAL(peerVerifyError(QSslError)), this, SLOT(onPeerVerifyError(QSslError)) ); connect( _socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(onSslErrors(QList<QSslError>))); connect( _socket, SIGNAL(connected()),this,SLOT(onConnected())); connect( _socket, SIGNAL(readyRead()), this, SLOT(onReadyRead())); _socket->setLocalCertificate( "./certs/manager.crt" ); _socket->setPrivateKey( "./certs/manager.key"); _socket->setProtocol(QSsl::SecureProtocols); _socket->setCaCertificates(QSslCertificate::fromPath("./certs/trusted.pem")); _socket->connectToHostEncrypted( addr, port, "SettingsServer"); if(!_socket->waitForEncrypted(1000)) { LoggerDialog::get()->Error("SettingsEditorForm::connectToHost","Wait for encrypted failed!"); _socket->close(); ui->pushButton_connect->setText("Connect"); } }
DeviceAgent::DeviceAgent(QObject *parent): QSslSocket(parent) { connect(this,SIGNAL(readyRead()),this,SLOT(onDataComing())); connect(this, SIGNAL(disconnected()), this, SLOT(onDeviceDisconnected())); connect(this, SIGNAL(encrypted()), this, SLOT(onEncrypted())); connect(this, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(onSslErrors(QList<QSslError>))); m_dataPos = 0; }
QFacebookReply::QFacebookReply(QNetworkReply *reply, QObject *parent) : QObject(parent), m_reply(reply), m_data(QVariant()) { if (m_reply) { connect(m_reply, SIGNAL(uploadProgress(qint64,qint64)), this, SIGNAL(uploadProgress(qint64,qint64))); connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onError(QNetworkReply::NetworkError))); connect(m_reply, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(onSslErrors(QList<QSslError>))); connect(m_reply, SIGNAL(finished()), this, SLOT(onParseData())); } }
void LoginDialog::loginFailed(const ApiError& error) { switch (error.type()) { case ApiError::SSL_ERROR: onSslErrors(error.sslReply(), error.sslErrors()); break; case ApiError::NETWORK_ERROR: onNetworkError(error.networkError(), error.networkErrorString()); break; case ApiError::HTTP_ERROR: onHttpError(error.httpErrorCode()); default: // impossible break; } }
void ReplyFetcher::start(QNetworkAccessManager *nam, QNetworkRequest request, QByteArray postData) { httpStatusCode_= 0; errorText_.clear(); receivedData_.clear(); success_ = true; // not in finished() signal handler, it might be not called according to the docs // besides, I've added timeout feature lastNetworkTime_ = QDateTime::currentMSecsSinceEpoch(); ticker_->start(1000); if(postData.isNull()) { reply = QSharedPointer<QNetworkReply>(nam->get(request), &QObject::deleteLater); } else { reply = QSharedPointer<QNetworkReply>(nam->post(request, postData), &QObject::deleteLater); } connect(reply.data(), SIGNAL(finished()), this, SLOT(onFinished())); connect(reply.data(), SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onError())); connect(reply.data(), SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(onSslErrors(QList<QSslError>))); connect(reply.data(), SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(onDownloadProgress(qint64,qint64))); }
SpotifyIO::SpotifyIO(QObject *parent) : QObject(parent) { nam = new QNetworkAccessManager(this); ws = new QWebSocket(origin, QWebSocketProtocol::VersionLatest, this); mediaPlayer = new MediaPlayer(this); QObject::connect(ws, SIGNAL(connected()), this, SLOT(onConnected())); QObject::connect(ws, SIGNAL(disconnected()), this, SLOT(onDisconnected())); QObject::connect(ws, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(onStateChanged(QAbstractSocket::SocketState))); QObject::connect(ws, SIGNAL(textMessageReceived(QString)), this, SLOT(onTextMessageReceived(QString))); QObject::connect(ws, SIGNAL(binaryMessageReceived(QByteArray)), this, SLOT(onBinaryMessageReceived(QByteArray))); QObject::connect(ws, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onError(QAbstractSocket::SocketError))); QObject::connect(ws, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(onSslErrors(QList<QSslError>))); heartbeat = new QTimer(this); heartbeat->setInterval(3 * 60 * 1000); QObject::connect(heartbeat, SIGNAL(timeout()), this, SLOT(onHeartbeat())); _state = DisconnectedState; Q_EMIT stateChanged(); }