[X2Go-Dev] [X2Go-Commits] [x2goclient] 01/01: Client now sends "login" parameter to the broker when executing task "selectsession". Before client just sent a username on the broker and it was imposiible to find out user name on X2Go server, which is not always the same as broker username. This won't break a compatibility with previous broker as they just will ignore this parameter.

Mike Gabriel mike.gabriel at das-netzwerkteam.de
Wed Nov 28 16:13:32 CET 2018


Hi Alex,

please explain the reasoning behind this API change in the SSH broker call.

This commit currently breaks SSH brokerage in X2Go Session Broker and  
I would like to fix it.

So, what do you intend with the additional --login option? How is the  
broker supposed to react?

Mike

On  Mi 05 Sep 2018 14:25:44 CEST, git-admin wrote:

> This is an automated email from the git hooks/post-receive script.
>
> x2go pushed a commit to branch master
> in repository x2goclient.
>
> commit e7e74df029a1bd7d86a03c7f72f5b555eb6c5b0e
> Author: Oleksandr Shneyder <o.shneyder at phoca-gmbh.de>
> Date:   Wed Sep 5 14:25:33 2018 +0200
>
>     Client now sends "login" parameter to the broker when executing  
> task "selectsession". Before client just sent a username on the  
> broker and it was imposiible to find out user name on X2Go server,  
> which is not always the same as broker username. This won't break a  
> compatibility with previous broker as they just will ignore this  
> parameter.
> ---
>  debian/changelog         |  5 +++++
>  src/httpbrokerclient.cpp | 23 +++++++++++++++--------
>  src/httpbrokerclient.h   |  2 +-
>  src/onmainwindow.cpp     |  2 +-
>  4 files changed, 22 insertions(+), 10 deletions(-)
>
> diff --git a/debian/changelog b/debian/changelog
> index dc01147..0a43c2d 100644
> --- a/debian/changelog
> +++ b/debian/changelog
> @@ -17,6 +17,11 @@ x2goclient (4.1.2.2-0x2go1) UNRELEASED; urgency=medium
>      - Broker can send to client command to suspend or terminate the  
> session as an
>        answer to the client event message. For this broker should  
> send to client
>        SUSPEND ID or TERMINATE ID.
> +    - Client now sends "login" parameter to the broker when executing task
> +      "selectsession". Before client just sent a username on the  
> broker and it was
> +      imposiible to find out user name on X2Go server, which is not  
> always the
> +      same as broker username. This won't break a compatibility  
> with previous
> +      broker as they just will ignore this parameter.
>
>    [ Mihai Moldovan ]
>    * New upstream version (4.1.2.2):
> diff --git a/src/httpbrokerclient.cpp b/src/httpbrokerclient.cpp
> index 6110866..02a69c9 100644
> --- a/src/httpbrokerclient.cpp
> +++ b/src/httpbrokerclient.cpp
> @@ -313,9 +313,9 @@ void HttpBrokerClient::getUserSessions()
>      }
>  }
>
> -void HttpBrokerClient::selectUserSession(const QString& session)
> +void HttpBrokerClient::selectUserSession(const QString& session,  
> const QString& loginName)
>  {
> -    x2goDebug<<"Called selectUserSession for session "<<session<<".";
> +    x2goDebug<<"Called selectUserSession for session "<<session<<",  
> "<<"loginName "<<loginName;
>      QString brokerUser=config->brokerUser;
>      if(mainWindow->getUsePGPCard())
>          brokerUser=mainWindow->getCardLogin();
> @@ -329,6 +329,10 @@ void HttpBrokerClient::selectUserSession(const  
> QString& session)
>                                
> "user="<<QUrl::toPercentEncoding(brokerUser)<<"&"<<
>                                
> "password="<<QUrl::toPercentEncoding(config->brokerPass)<<"&"<<
>                               "authid="<<nextAuthId;
> +        if(loginName.length()>0)
> +        {
> +            QTextStream ( &req )  
> <<"&login="<<QUrl::toPercentEncoding(loginName);
> +        }
>          x2goDebug << "Sending request: "<< req.toUtf8();
>          QNetworkRequest request(QUrl(config->brokerurl));
>          request.setHeader(QNetworkRequest::ContentTypeHeader,  
> "application/x-www-form-urlencoded");
> @@ -337,13 +341,16 @@ void HttpBrokerClient::selectUserSession(const  
> QString& session)
>      }
>      else
>      {
> -        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+"\"",
> -                                            this,SLOT (  
> slotSelectSession(bool,QString,int)));
> +        QString sshCmd=config->sshBrokerBin+" --user "+ brokerUser  
> + " --task selectsession --sid \""+session+"\"";
> +        if(nextAuthId.length() > 0)
> +        {
> +            sshCmd+=" --authid "+nextAuthId;
> +        }
> +        if(loginName.length() > 0)
> +        {
> +            sshCmd+=" --login " + loginName;
>          }
> +        sshConnection->executeCommand (sshCmd, this,SLOT (  
> slotSelectSession(bool,QString,int)));
>      }
>
>  }
> diff --git a/src/httpbrokerclient.h b/src/httpbrokerclient.h
> index 24f52f3..73ae2ef 100644
> --- a/src/httpbrokerclient.h
> +++ b/src/httpbrokerclient.h
> @@ -41,7 +41,7 @@ class HttpBrokerClient: public QObject
>  public:
>      HttpBrokerClient ( ONMainWindow* wnd, ConfigFile* cfg );
>      ~HttpBrokerClient();
> -    void selectUserSession(const QString& session );
> +    void selectUserSession(const QString& session, const QString&  
> loginName);
>      void changePassword(QString newPass);
>      void testConnection();
>      void closeSSHInteractionDialog();
> diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp
> index 8aa5078..52e765c 100644
> --- a/src/onmainwindow.cpp
> +++ b/src/onmainwindow.cpp
> @@ -3325,7 +3325,7 @@ void ONMainWindow::slotSessEnter()
>              return;
>          }
>  #endif
> -        broker->selectUserSession(sessionExplorer->getLastSession()->id());
> +         
> broker->selectUserSession(sessionExplorer->getLastSession()->id(),login->text());
>          config.session=sessionExplorer->getLastSession()->id();
>          setStatStatus ( tr ( "Connecting to broker" ) );
>          stInfo->insertPlainText ( "broker url: "+config.brokerurl );
>
> --
> Alioth's  
> /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on  
> /srv/git/code.x2go.org/x2goclient.git
> _______________________________________________
> x2go-commits mailing list
> x2go-commits at lists.x2go.org
> https://lists.x2go.org/listinfo/x2go-commits


-- 

DAS-NETZWERKTEAM
mike gabriel, herweg 7, 24357 fleckeby
mobile: +49 (1520) 1976 148
landline: +49 (4354) 8390 139

GnuPG Fingerprint: 9BFB AEE8 6C0A A5FF BF22  0782 9AF4 6B30 2577 1B31
mail: mike.gabriel at das-netzwerkteam.de, http://das-netzwerkteam.de

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 851 bytes
Desc: Digitale PGP-Signatur
URL: <http://lists.x2go.org/pipermail/x2go-dev/attachments/20181128/1c69d2da/attachment.sig>


More information about the x2go-dev mailing list