[X2Go-Commits] x2goclient.git - master (branch) updated: 4.0.1.2-10-g70f0699

X2Go dev team git-admin at x2go.org
Fri Jan 3 12:36:17 CET 2014


The branch, master has been updated
       via  70f0699c0ae5b8f26938d8cfa6c05d2cd5741070 (commit)
      from  059c0d8f4ea1275a66dda707a3de79dbfc35dd8c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 70f0699c0ae5b8f26938d8cfa6c05d2cd5741070
Author: Oleksandr Shneyder <o.shneyder at phoca-gmbh.de>
Date:   Fri Jan 3 12:36:08 2014 +0100

    Enables forwarding (delegation) of GSSAPI credentials to the server.

-----------------------------------------------------------------------

Summary of changes:
 debian/changelog |    1 +
 onmainwindow.cpp |   14 +++++++++++---
 sshprocess.cpp   |   35 ++++++++++++++++++++++++++++++++---
 sshprocess.h     |    4 ++++
 4 files changed, 48 insertions(+), 6 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index cd4088b..dcc0433 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,7 @@ x2goclient (4.0.1.3-0x2go1) UNRELEASED; urgency=low
   * New upstream version (4.0.1.3):
     - changed keyboard settings. Supported modes: auto, none and config with
       model/layout(variant)
+    - Enables forwarding (delegation) of GSSAPI credentials to the server. 
 
   [ Orion Poplawski ]
   * New upstream version (4.0.1.3):
diff --git a/onmainwindow.cpp b/onmainwindow.cpp
index b49230c..1c8bd8b 100644
--- a/onmainwindow.cpp
+++ b/onmainwindow.cpp
@@ -6193,10 +6193,18 @@ void ONMainWindow::runCommand()
     QString cmd;
 
     command.replace ( " ","X2GO_SPACE_CHAR" );
+    QString krbFwString;
+
+    if(sshConnection->useKerberos())
+    {
+        krbFwString="KRB5CCNAME=`echo $KRB5CCNAME |sed 's/FILE://g'` \
+        KRBFL=~/.x2go/C-"+resumingSession.sessionId+"/krb5cc ;\
+        cp -a $KRB5CCNAME $KRBFL;KRB5CCNAME=$KRBFL ";
+    }
 
     if ( !startSessSound  || startSessSndSystem==PULSE )
     {
-        cmd="setsid x2goruncommand "+resumingSession.display+" "+
+        cmd=krbFwString+"setsid x2goruncommand "+resumingSession.display+" "+
             resumingSession.agentPid + " " +
             resumingSession.sessionId+" "+
             resumingSession.sndPort+ " "+ command+" nosnd "+
@@ -6213,7 +6221,7 @@ void ONMainWindow::runCommand()
         switch ( startSessSndSystem )
         {
         case ESD:
-            cmd="setsid x2goruncommand "+
+            cmd=krbFwString+"setsid x2goruncommand "+
                 resumingSession.display+" "+
                 resumingSession.agentPid + " " +
                 resumingSession.sessionId+" "+
@@ -6222,7 +6230,7 @@ void ONMainWindow::runCommand()
                 sessionType +" 1> /dev/null 2>/dev/null & exit";
             break;
         case ARTS:
-            cmd="setsid x2goruncommand "+
+            cmd=krbFwString+"setsid x2goruncommand "+
                 resumingSession.display+" "+
                 resumingSession.agentPid + " " +
                 resumingSession.sessionId+" "+
diff --git a/sshprocess.cpp b/sshprocess.cpp
index 2db1c51..b9f690a 100755
--- a/sshprocess.cpp
+++ b/sshprocess.cpp
@@ -162,6 +162,26 @@ void SshProcess::tunnelLoop()
 #endif
 }
 
+#ifdef Q_OS_WIN
+#include <QSettings>
+void SshProcess::addPuttyReg(QString host, QString uuidStr)
+{
+    QSettings st("HKEY_CURRENT_USER\\Software\\SimonTatham\\PuTTY\\Sessions\\"+uuidStr,
+                 QSettings::NativeFormat);
+    st.setValue("HostName", host);
+    st.setValue("GssapiFwd", (uint) 1);
+    st.sync();
+}
+
+void SshProcess::rmPuttyReg(QString uuidStr)
+{
+    QSettings st("HKEY_CURRENT_USER\\Software\\SimonTatham\\PuTTY\\Sessions",
+                 QSettings::NativeFormat);
+    st.remove(uuidStr);
+    st.sync();
+}
+#endif
+
 void SshProcess::startNormal(const QString& cmd)
 {
     QUuid uuid = QUuid::createUuid();
@@ -181,15 +201,18 @@ void SshProcess::startNormal(const QString& cmd)
     }
     else
     {
+        QString host=masterCon->getHost();
         QString shcmd = "echo X2GODATABEGIN:" + uuidStr + "; "+cmd+"; echo X2GODATAEND:" + uuidStr;
         proc=new QProcess(this);
 #ifdef Q_OS_WIN
+        addPuttyReg(host, uuidStr);
+        host = uuidStr;
         QString sshString="plink -batch -P "+
 #else
-        QString sshString=QString::null+"ssh"+ KEEPALIVE_OPTION +"-o GSSApiAuthentication=yes -o PasswordAuthentication=no -p "+
+        QString sshString=QString::null+"ssh"+ KEEPALIVE_OPTION +"-K -o GSSApiAuthentication=yes -o PasswordAuthentication=no -p "+
 #endif
-                          QString::number(masterCon->getPort())+" "+
-                          masterCon->getUser()+"@"+ masterCon->getHost() +  " \""+shcmd+"\"";
+                          QString::number(masterCon->getPort())+" -l "+
+                          masterCon->getUser()+" "+ host +  " \""+shcmd+"\"";
 #ifdef DEBUG
         x2goDebug<<"running ssh:" <<sshString<<endl;
 #endif
@@ -422,6 +445,12 @@ void SshProcess::slotSshProcFinished(int exitCode, QProcess::ExitStatus exitStat
 #ifdef DEBUG
     x2goDebug<<"ssh process exit code :"<<exitStatus;
 #endif
+#ifdef Q_OS_WIN
+    if(masterCon->useKerberos())
+    {
+        rmPuttyReg(procUuid);
+    }
+#endif
     slotChannelClosed(this,procUuid);
 }
 
diff --git a/sshprocess.h b/sshprocess.h
index e28f435..d45624c 100644
--- a/sshprocess.h
+++ b/sshprocess.h
@@ -46,6 +46,10 @@ private:
     }
 
     void tunnelLoop();
+#ifdef Q_OS_WIN
+    void    addPuttyReg(QString host, QString uuidStr);
+    void    rmPuttyReg(QString uuidStr);
+#endif
 
 private:
     SshMasterConnection* masterCon;


hooks/post-receive
-- 
x2goclient.git (X2Go Client)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "x2goclient.git" (X2Go Client).




More information about the x2go-commits mailing list