This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit 1bd49018334c1bc6f13569982ea93f19e56e41eb Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Mon Mar 3 11:52:41 2014 +0100 Revert "Switch to QNetworkAccessManager." This reverts commit d02396443b667e3c2217aebc257ca515bcf2e402. --- debian/changelog | 4 -- httpbrokerclient.cpp | 113 +++++++++++++++++++++++++------------------------- httpbrokerclient.h | 23 +++++----- 3 files changed, 66 insertions(+), 74 deletions(-) diff --git a/debian/changelog b/debian/changelog index 896cde6..42c5799 100644 --- a/debian/changelog +++ b/debian/changelog @@ -13,10 +13,6 @@ x2goclient (4.0.2.0-0x2go1) UNRELEASED; urgency=low - Don't show GUI dialog for --version, --help, etc, if started from terminal on linux and mac. - If no user in session config, display system username in pass form. - - [ Josh Lukens ] - * New upstream version (4.0.2.0): - - Switch to QNetworkAccessManager. [ Mike Gabriel ] * debian/control: diff --git a/httpbrokerclient.cpp b/httpbrokerclient.cpp index fca59b4..4ca8e5d 100644 --- a/httpbrokerclient.cpp +++ b/httpbrokerclient.cpp @@ -16,11 +16,8 @@ ***************************************************************************/ #include "httpbrokerclient.h" -#include <QNetworkAccessManager> #include <QUrl> -#include <QNetworkRequest> -#include <QNetworkReply> -#include <QUuid> +#include <QHttp> #include <QTextStream> #include <QFile> #include <QDir> @@ -37,7 +34,6 @@ #include <QTemporaryFile> #include <QInputDialog> - HttpBrokerClient::HttpBrokerClient ( ONMainWindow* wnd, ConfigFile* cfg ) { config=cfg; @@ -60,19 +56,30 @@ HttpBrokerClient::HttpBrokerClient ( ONMainWindow* wnd, ConfigFile* cfg ) { sshBroker=false; - if ((config->brokerCaCertFile.length() >0) && (QFile::exists(config->brokerCaCertFile))) { - QSslSocket::addDefaultCaCertificates(config->brokerCaCertFile, QSsl::Pem); - x2goDebug<<"Custom CA certificate file loaded into HTTPS broker client: "<<config->brokerCaCertFile; - } + http=new QHttp ( this ); - http=new QNetworkAccessManager ( this ); - x2goDebug<<"Setting up connection to broker: "<<config->brokerurl; + if ( config->brokerurl.indexOf ( "https://" ) ==0 ) { + if ((config->brokerCaCertFile.length() >0) && (QFile::exists(config->brokerCaCertFile))) { - connect ( http, SIGNAL ( sslErrors ( QNetworkReply*, const QList<QSslError>& ) ),this, - SLOT ( slotSslErrors ( QNetworkReply*, const QList<QSslError>& ) ) ); + sslSocket = new QSslSocket(this); + connect ( sslSocket, SIGNAL ( sslErrors ( const QList<QSslError>& ) ),this, + SLOT ( slotSslErrors ( const QList<QSslError>& ) ) ); + http->setSocket(sslSocket); + sslSocket->addCaCertificates(config->brokerCaCertFile, QSsl::Pem); + x2goDebug<<"Custom CA certificate file loaded into HTTPS broker client: "<<config->brokerCaCertFile; - connect ( http,SIGNAL ( finished (QNetworkReply*) ),this, - SLOT ( slotRequestFinished (QNetworkReply*) ) ); + } else { + connect ( http, SIGNAL ( sslErrors ( const QList<QSslError>& ) ),this, + SLOT ( slotSslErrors ( const QList<QSslError>& ) ) ); + } + http->setHost ( lurl.host(),QHttp::ConnectionModeHttps, + lurl.port ( 443 ) ); + } else { + http->setHost ( lurl.host(),QHttp::ConnectionModeHttp, + lurl.port ( 80 ) ); + } + connect ( http,SIGNAL ( requestFinished ( int,bool ) ),this, + SLOT ( slotRequestFinished ( int,bool ) ) ); } } @@ -241,7 +248,6 @@ void HttpBrokerClient::slotSshUserAuthError(QString error) void HttpBrokerClient::getUserSessions() { QString brokerUser=config->brokerUser; - x2goDebug<<"called getUserSessions: brokeruser: "<<brokerUser<<" authid: "<<config->brokerUserId; if(mainWindow->getUsePGPCard()) brokerUser=mainWindow->getCardLogin(); config->sessiondata=QString::null; @@ -253,11 +259,10 @@ void HttpBrokerClient::getUserSessions() "user="<<brokerUser<<"&"<< "password="<<config->brokerPass<<"&"<< "authid="<<config->brokerUserId; - - x2goDebug << "sending request: "<< req.toUtf8(); - QNetworkRequest request(QUrl(config->brokerurl)); - request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); - sessionsRequest=http->post (request, req.toUtf8() ); + QUrl lurl ( config->brokerurl ); + httpSessionAnswer.close(); + httpSessionAnswer.setData ( 0,0 ); + sessionsRequest=http->post ( lurl.path(),req.toUtf8(),&httpSessionAnswer ); } else { @@ -278,7 +283,6 @@ void HttpBrokerClient::getUserSessions() void HttpBrokerClient::selectUserSession(const QString& session) { - x2goDebug<<"called selectUserSessions"; QString brokerUser=config->brokerUser; if(mainWindow->getUsePGPCard()) brokerUser=mainWindow->getCardLogin(); @@ -292,11 +296,10 @@ void HttpBrokerClient::selectUserSession(const QString& session) "user="<<brokerUser<<"&"<< "password="<<config->brokerPass<<"&"<< "authid="<<config->brokerUserId; - x2goDebug << "sending request: "<< req.toUtf8(); - QNetworkRequest request(QUrl(config->brokerurl)); - request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); - sessionsRequest=http->post (request, req.toUtf8() ); - + QUrl lurl ( config->brokerurl ); + httpSessionAnswer.close(); + httpSessionAnswer.setData ( 0,0 ); + selSessRequest=http->post ( lurl.path(),req.toUtf8(),&httpSessionAnswer ); } else { @@ -327,10 +330,10 @@ void HttpBrokerClient::changePassword(QString newPass) "user="<<brokerUser<<"&"<< "password="<<config->brokerPass<<"&"<< "authid="<<config->brokerUserId; - x2goDebug << "sending request: "<< req.toUtf8(); - QNetworkRequest request(QUrl(config->brokerurl)); - request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); - sessionsRequest=http->post (request, req.toUtf8() ); + QUrl lurl ( config->brokerurl ); + httpSessionAnswer.close(); + httpSessionAnswer.setData ( 0,0 ); + chPassRequest=http->post ( lurl.path(),req.toUtf8(),&httpSessionAnswer ); } else { @@ -346,16 +349,16 @@ void HttpBrokerClient::changePassword(QString newPass) void HttpBrokerClient::testConnection() { - x2goDebug<<"called testConnection"; if(!sshBroker) { QString req; QTextStream ( &req ) << "task=testcon"; - x2goDebug << "sending request: "<< req.toUtf8(); - QNetworkRequest request(QUrl(config->brokerurl)); - request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); - sessionsRequest=http->post (request, req.toUtf8() ); + QUrl lurl ( config->brokerurl ); + httpSessionAnswer.close(); + httpSessionAnswer.setData ( 0,0 ); + requestTime.start(); + testConRequest=http->post ( lurl.path(),req.toUtf8(),&httpSessionAnswer ); } else { @@ -389,7 +392,6 @@ void HttpBrokerClient::createIniFile(const QString& raw_content) bool HttpBrokerClient::checkAccess(QString answer ) { - x2goDebug<<"called checkAccess - answer was: "<<answer; if (answer.indexOf("Access granted")==-1) { QMessageBox::critical ( @@ -406,7 +408,6 @@ bool HttpBrokerClient::checkAccess(QString answer ) void HttpBrokerClient::slotConnectionTest(bool success, QString answer, int) { - x2goDebug<<"called slotConnectionTest"; if(!success) { x2goDebug<<answer; @@ -418,8 +419,8 @@ void HttpBrokerClient::slotConnectionTest(bool success, QString answer, int) return; if(!sshBroker) { - x2goDebug<<"elapsed: "<<requestTime.elapsed()<<"received:"<<answer.size()<<endl; - emit connectionTime(requestTime.elapsed(),answer.size()); + x2goDebug<<"elapsed: "<<requestTime.elapsed()<<"received:"<<httpSessionAnswer.size()<<endl; + emit connectionTime(requestTime.elapsed(),httpSessionAnswer.size()); } return; @@ -470,38 +471,36 @@ void HttpBrokerClient::slotSelectSession(bool success, QString answer, int) } -void HttpBrokerClient::slotRequestFinished ( QNetworkReply* reply ) +void HttpBrokerClient::slotRequestFinished ( int id, bool error ) { - if(reply->error() != QNetworkReply::NoError) +// x2goDebug<<"http request "<<id<<", finished with: "<<error; + + if ( error ) { - x2goDebug<<"Broker HTTP request failed with error: "<<reply->errorString(); - QMessageBox::critical(0,tr("Error"),reply->errorString()); + x2goDebug<<http->errorString(); + QMessageBox::critical(0,tr("Error"),http->errorString()); emit fatalHttpError(); return; } - QString answer ( reply->readAll() ); - x2goDebug<<"A http request returned. Result was: "<<answer; - if (reply == testConRequest) + QString answer ( httpSessionAnswer.data() ); + x2goDebug<<"cmd request answer: "<<answer; + if (id==testConRequest) { slotConnectionTest(true,answer,0); } - if (reply == sessionsRequest) + if (id == sessionsRequest) { slotListSessions(true, answer,0); } - if (reply == selSessRequest) + if (id == selSessRequest) { slotSelectSession(true,answer,0); } - if (reply == chPassRequest) + if ( id == chPassRequest) { slotPassChanged(true,answer,0); } - - // We receive ownership of the reply object - // and therefore need to handle deletion. - reply->deleteLater(); } void HttpBrokerClient::parseSession(QString sinfo) @@ -538,7 +537,7 @@ void HttpBrokerClient::parseSession(QString sinfo) } -void HttpBrokerClient::slotSslErrors ( QNetworkReply* netReply, const QList<QSslError> & errors ) +void HttpBrokerClient::slotSslErrors ( const QList<QSslError> & errors ) { QStringList err; QSslCertificate cert; @@ -565,7 +564,7 @@ void HttpBrokerClient::slotSslErrors ( QNetworkReply* netReply, const QList<QSsl QSslCertificate mcert ( &fl ); if ( mcert==cert ) { - netReply->ignoreSslErrors(); + http->ignoreSslErrors(); requestTime.restart(); return; } @@ -636,7 +635,7 @@ void HttpBrokerClient::slotSslErrors ( QNetworkReply* netReply, const QList<QSsl fl.open ( QIODevice::WriteOnly | QIODevice::Text ); QTextStream ( &fl ) <<cert.toPem(); fl.close(); - netReply->ignoreSslErrors(); + http->ignoreSslErrors(); x2goDebug<<"store certificate in "<<homeDir+"/.x2go/ssl/exceptions/"+ lurl.host() +"/"+fname; requestTime.restart(); diff --git a/httpbrokerclient.h b/httpbrokerclient.h index 8a772df..4ea4a3d 100644 --- a/httpbrokerclient.h +++ b/httpbrokerclient.h @@ -18,10 +18,6 @@ #ifndef HTTPBROKERCLIENT_H #define HTTPBROKERCLIENT_H #include "x2goclientconfig.h" -#include <QNetworkAccessManager> -#include <QUrl> -#include <QNetworkRequest> -#include <QNetworkReply> #include <QSslError> #include <QBuffer> #include <QObject> @@ -31,7 +27,7 @@ /** @author Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> */ -class QNetworkAccessManager; +class QHttp; struct ConfigFile; class ONMainWindow; @@ -45,13 +41,14 @@ public: void changePassword(QString newPass); void testConnection(); private: - QNetworkAccessManager* http; - QNetworkRequest* netRequest; + QBuffer httpCmdAnswer; + QBuffer httpSessionAnswer; + QHttp* http; QSslSocket* sslSocket; - QNetworkReply* sessionsRequest; - QNetworkReply* selSessRequest; - QNetworkReply* chPassRequest; - QNetworkReply* testConRequest; + int sessionsRequest; + int selSessRequest; + int chPassRequest; + int testConRequest; QString newBrokerPass; ConfigFile* config; ONMainWindow* mainWindow; @@ -65,8 +62,8 @@ private: bool checkAccess(QString answer); private slots: - void slotRequestFinished ( QNetworkReply* reply ); - void slotSslErrors ( QNetworkReply* netReply, const QList<QSslError> & errors ) ; + void slotRequestFinished ( int id, bool error ); + void slotSslErrors ( const QList<QSslError> & errors ) ; QString getHexVal ( const QByteArray& ba ); void slotSshConnectionError ( QString message, QString lastSessionError ); void slotSshServerAuthError ( int error, QString sshMessage, SshMasterConnection* connection ); -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git