This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit 275a22a6b2469119cbdaaa76ee7d00804864b773 Author: Josh Lukens <jlukens@botch.com> Date: Wed Mar 5 08:50:01 2014 +0100 Provide support for dynamic authentication IDs. This is a requirement for using the broker client against brokers that use some sort of OTP authentication mechanism. (Fixes: #446). --- debian/changelog | 4 ++++ httpbrokerclient.cpp | 30 ++++++++++++++++++------------ httpbrokerclient.h | 1 + 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/debian/changelog b/debian/changelog index a11310b..7d89bd9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -23,6 +23,10 @@ x2goclient (4.0.2.0-0x2go1) UNRELEASED; urgency=low header to "application/x-www-form-urlencoded" for HTTP post requests. (Fixes: #440, #138). - Fix copy+paste errors in QNetworkAccessManager code. + - Provide support for dynamic authentication IDs. This is + a requirement for using the broker client against brokers + that use some sort of OTP authentication mechanism. + (Fixes: #446). [ Mike Gabriel ] * New upstream version (4.0.2.0): diff --git a/httpbrokerclient.cpp b/httpbrokerclient.cpp index ec86593..a066240 100644 --- a/httpbrokerclient.cpp +++ b/httpbrokerclient.cpp @@ -46,6 +46,7 @@ HttpBrokerClient::HttpBrokerClient ( ONMainWindow* wnd, ConfigFile* cfg ) QUrl lurl ( config->brokerurl ); if(lurl.userName().length()>0) config->brokerUser=lurl.userName(); + nextAuthId=config->brokerUserId; if(config->brokerurl.indexOf("ssh://")==0) { @@ -241,7 +242,7 @@ void HttpBrokerClient::slotSshUserAuthError(QString error) void HttpBrokerClient::getUserSessions() { QString brokerUser=config->brokerUser; - x2goDebug<<"called getUserSessions: brokeruser: "<<brokerUser<<" authid: "<<config->brokerUserId; + x2goDebug<<"called getUserSessions: brokeruser: "<<brokerUser<<" authid: "<<nextAuthId; if(mainWindow->getUsePGPCard()) brokerUser=mainWindow->getCardLogin(); config->sessiondata=QString::null; @@ -252,7 +253,7 @@ void HttpBrokerClient::getUserSessions() "task=listsessions&"<< "user="<<brokerUser<<"&"<< "password="<<config->brokerPass<<"&"<< - "authid="<<config->brokerUserId; + "authid="<<nextAuthId; x2goDebug << "sending request: "<< req.toUtf8(); QNetworkRequest request(QUrl(config->brokerurl)); @@ -266,8 +267,8 @@ void HttpBrokerClient::getUserSessions() createSshConnection(); return; } - if (config->brokerUserId.length() > 0) { - sshConnection->executeCommand ( config->sshBrokerBin+" --user "+ brokerUser +" --authid "+config->brokerUserId+ " --task listsessions", + if (nextAuthId.length() > 0) { + sshConnection->executeCommand ( config->sshBrokerBin+" --user "+ brokerUser +" --authid "+nextAuthId+ " --task listsessions", this, SLOT ( slotListSessions ( bool, QString,int ) )); } else { sshConnection->executeCommand ( config->sshBrokerBin+" --user "+ brokerUser +" --task listsessions", @@ -291,7 +292,7 @@ void HttpBrokerClient::selectUserSession(const QString& session) "sid="<<session<<"&"<< "user="<<brokerUser<<"&"<< "password="<<config->brokerPass<<"&"<< - "authid="<<config->brokerUserId; + "authid="<<nextAuthId; x2goDebug << "sending request: "<< req.toUtf8(); QNetworkRequest request(QUrl(config->brokerurl)); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); @@ -300,8 +301,8 @@ void HttpBrokerClient::selectUserSession(const QString& session) } else { - if (config->brokerUserId.length() > 0) { - sshConnection->executeCommand ( config->sshBrokerBin+" --user "+ brokerUser +" --authid "+config->brokerUserId+ " --task selectsession --sid \\\""+session+"\\\"", + if (nextAuthId.length() > 0) { + sshConnection->executeCommand ( config->sshBrokerBin+" --user "+ brokerUser +" --authid "+nextAuthId+ " --task selectsession --sid \\\""+session+"\\\"", this,SLOT ( slotSelectSession(bool,QString,int))); } else { sshConnection->executeCommand ( config->sshBrokerBin+" --user "+ brokerUser +" --task selectsession --sid \\\""+session+"\\\"", @@ -326,7 +327,7 @@ void HttpBrokerClient::changePassword(QString newPass) "newpass="<<newPass<<"&"<< "user="<<brokerUser<<"&"<< "password="<<config->brokerPass<<"&"<< - "authid="<<config->brokerUserId; + "authid="<<nextAuthId; x2goDebug << "sending request: "<< req.toUtf8(); QNetworkRequest request(QUrl(config->brokerurl)); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); @@ -334,8 +335,8 @@ void HttpBrokerClient::changePassword(QString newPass) } else { - if (config->brokerUserId.length() > 0) { - sshConnection->executeCommand ( config->sshBrokerBin+" --user "+ brokerUser +" --authid "+config->brokerUserId+ " --task setpass --newpass "+newPass, this, + if (nextAuthId.length() > 0) { + sshConnection->executeCommand ( config->sshBrokerBin+" --user "+ brokerUser +" --authid "+nextAuthId+ " --task setpass --newpass "+newPass, this, SLOT ( slotPassChanged(bool,QString,int))); } else { sshConnection->executeCommand ( config->sshBrokerBin+" --user "+ brokerUser +" --task setpass --newpass "+newPass, this, @@ -359,8 +360,8 @@ void HttpBrokerClient::testConnection() } else { - if (config->brokerUserId.length() > 0) { - sshConnection->executeCommand(config->sshBrokerBin+" --authid "+config->brokerUserId+ " --task testcon", + if (nextAuthId.length() > 0) { + sshConnection->executeCommand(config->sshBrokerBin+" --authid "+nextAuthId+ " --task testcon", this, SLOT ( slotSelectSession(bool,QString,int))); } else { sshConnection->executeCommand(config->sshBrokerBin+" --task testcon", @@ -400,6 +401,11 @@ bool HttpBrokerClient::checkAccess(QString answer ) return false; } config->brokerAuthenticated=true; + int authBegin=answer.indexOf("AUTHID:"); + if (authBegin!=-1) + { + nextAuthId=answer.mid(authBegin+7, answer.indexOf("\n",authBegin)-authBegin-7); + } return true; } diff --git a/httpbrokerclient.h b/httpbrokerclient.h index 8a772df..2d668f8 100644 --- a/httpbrokerclient.h +++ b/httpbrokerclient.h @@ -52,6 +52,7 @@ private: QNetworkReply* selSessRequest; QNetworkReply* chPassRequest; QNetworkReply* testConRequest; + QString nextAuthId; QString newBrokerPass; ConfigFile* config; ONMainWindow* mainWindow; -- Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goclient.git