[X2go-Commits] x2goserver.git - backport-lenny (branch) updated: 3.1.1.3-14-g81fcf0e

X2Go dev team git-admin at x2go.org
Tue Jul 17 15:01:33 CEST 2012


The branch, backport-lenny has been updated
       via  81fcf0e6d2604e6465222e3305014b7e4377b777 (commit)
       via  1bbfded0225f0790c727cbf2e13e41aa19bee92d (commit)
       via  90f7a40a659b98d62f936890aa7c786ea914cc44 (commit)
       via  c13d693dfd13f19bac13ad430b2165b2e6322f2a (commit)
       via  33fc7739485510ff8fbc28e16aa038c99eac93b2 (commit)
       via  e305a0a9cc943453a2e3508926967dc6b38bd525 (commit)
       via  e1d66fc8929ff79495414e48068192a65c7d072d (commit)
       via  44cbc5037875d6f5755abfd39271ab1c41347228 (commit)
       via  f1f73d203353f5d5f29c156a0298a2de927602a4 (commit)
       via  4b25144ff4a9b71347e04e841c0b7dee3eb5f86d (commit)
       via  5c11e7e4e870b057bccba4c87d2e42209d5e899a (commit)
       via  1368c7b4026cf2c8b0c81c890179eaa8bfc39f58 (commit)
       via  2ca1e9eb6500ebceb0a37df33bbd785bc7b91f1b (commit)
       via  00a58a2e62e849fa85e2a996957bdd6a371c17d4 (commit)
       via  b625d7b3c3bcc55d632360377424a0101765abb6 (commit)
       via  84027cfd24dfdbba3b1eb602728a3baf6cd810df (commit)
       via  0c300e8537a7049872ff468802d50dc783c67995 (commit)
       via  c9e29f65b5f2d176db850832d0f801576279f711 (commit)
       via  197c283ddac5dad3d438b28bdb8404aea610d3b8 (commit)
       via  ffd7b50051f441dd63ed724216c67ff657cbf99b (commit)
       via  85cbd8a06b78ed13d9ad2a3de47b4d854ae9e5d7 (commit)
       via  49688c37bb09861fee632a40130278e312f6216b (commit)
       via  612f5ecbe31f42cbeb5148d9126660e09bbc7adb (commit)
       via  dc092a92bb23b613d76c6357022fc04c30acd213 (commit)
       via  f9d2dc4b501f959472d20899732bd25d8f269c9a (commit)
       via  2e471b45ddf6a9cd7dca06d3b0f276ef35a3788a (commit)
       via  266caa371a9fa8b393a0cf3ae7c5126531f95cc0 (commit)
       via  256fe8a5e2f9211367ecaf0e5a40cf7fee334d42 (commit)
       via  9a49f7672ec2bbde2b70c891fc5d005782efd7b6 (commit)
       via  5de98c2ed290873f044368348d310522ccda3004 (commit)
       via  c27e35304f21a73a85d7bc1c4191fed696d4c0a0 (commit)
       via  b022803cb5b4dc10c740c52bd5845f9a52b7d9b9 (commit)
       via  ccdd4364d44b187c1f5cd24b4f1c2aa487110cac (commit)
       via  3fa5425554f3c40e1d4a2717f575c406f471c1a3 (commit)
       via  1af7be02935673fbe6afe3f4ba75d3ae65f6f62e (commit)
       via  b81c5c9784ac0a999d2183b275e0a52300a90184 (commit)
       via  147d22c44167b9b2d4afbdaf17262555a7af713b (commit)
       via  ea355064c9a388987117c8765501be55061e47c9 (commit)
       via  389c5d45a7b379904537016979b7232151484824 (commit)
       via  e07883826b637ad0d6d82db3d515d22b6e8d1481 (commit)
       via  22d7413c1ee6133326095ed344e0c47a391c4deb (commit)
       via  36cae2ee8140e7afc3103ceb6e22e17af97f465b (commit)
       via  3b0fc54b49b2e3dc5617e4fc2ce7ddaa0c29faa4 (commit)
       via  077700a44d18794fce590395fbc4b84eb818f1f4 (commit)
       via  c13ffe1cb2c39edfacab52bc62e278469da19c9e (commit)
       via  91c4bb8568bb649fcef89484b19a556453b57e04 (commit)
       via  90878489a1334d9d840556e0b2e69a47425c1658 (commit)
       via  5fc6add53c7495f331f9e381324c34b1ffd21d75 (commit)
       via  3d7ab5ee559139653ad299bdb6779c313f3861cc (commit)
       via  5fc633c06d3c39bf77c95afde55ed3c6236cde0c (commit)
       via  eddd060e73c5011585af52f8fdb74c63f3993e12 (commit)
       via  3106896d148a55969c98be317595e8911191a163 (commit)
       via  863da3df9fece11be38ec5ce145850913e349873 (commit)
       via  266606a478e62c680d8124eb5750eb0b2a36960a (commit)
       via  d11ed3f11aa6c1b4264f8b4bcf7eedf7e9d3bada (commit)
      from  9e953070b370529ff92a5304c890619d9d9a5f80 (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 81fcf0e6d2604e6465222e3305014b7e4377b777
Merge: 9e953070b370529ff92a5304c890619d9d9a5f80 1bbfded0225f0790c727cbf2e13e41aa19bee92d
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Tue Jul 17 14:59:49 2012 +0200

    Merge branch 'build-main' into backport-lenny
    
    Conflicts (resolved by Mike Gabriel):
    	debian/changelog
    	x2goserver/bin/x2goumount-session

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

Summary of changes:
 debian/changelog                                   |   84 ++++++++++++++++++--
 debian/control                                     |    2 +-
 debian/x2goserver-pyhoca.docs                      |    2 +-
 debian/x2goserver-pyhoca.install                   |    4 +-
 debian/x2goserver-pyhoca.manpages                  |    2 +-
 debian/x2goserver.init                             |    4 +-
 debian/x2goserver.preinst                          |    4 +-
 x2goserver-compat/Makefile                         |    8 +-
 x2goserver-compat/VERSION.x2goserver-compat        |    2 +-
 x2goserver-extensions/Makefile                     |    8 +-
 .../VERSION.x2goserver-extensions                  |    2 +-
 x2goserver-fmbindings/Makefile                     |    8 +-
 .../VERSION.x2goserver-fmbindings                  |    2 +-
 x2goserver-printing/Makefile                       |    8 +-
 x2goserver-printing/VERSION.x2goserver-printing    |    2 +-
 x2goserver-printing/bin/x2goprint                  |    4 +-
 x2goserver-pyhoca/Makefile                         |   44 +++++-----
 x2goserver-pyhoca/VERSION.x2goserver-pyhoca        |    2 +-
 .../bin}/.placeholder                              |    0
 .../man/man8}/.placeholder                         |    0
 .../share/x2gofeature.d/x2goserver-pyhoca.features |    1 -
 x2goserver-xsession/Makefile                       |   11 +--
 x2goserver-xsession/VERSION.x2goserver-xsession    |    2 +-
 x2goserver/Makefile                                |   10 +-
 x2goserver/VERSION.x2goserver                      |    2 +-
 x2goserver/bin/x2gocmdexitmessage                  |    9 ++-
 x2goserver/bin/x2gomountdirs                       |   12 ++--
 x2goserver/bin/x2goresume-session                  |   21 ++++-
 x2goserver/bin/x2goruncommand                      |   75 +++++++++++++++++-
 .../bin/x2gosetkeyboard                            |   38 ++++++++-
 x2goserver/bin/x2gostartagent                      |   39 +++++++---
 x2goserver/bin/x2goumount-session                  |   27 +++++-
 x2goserver/lib/x2godbwrapper.pm                    |   21 +++++-
 x2goserver/lib/x2gosqlitewrapper.pl                |   14 +++
 .../man/man8/x2gosetkeyboard.8                     |    0
 x2goserver/sbin/x2gocleansessions                  |    7 +-
 x2goserver/sbin/x2golistsessions_root              |    2 +-
 x2goserver/share/x2gofeature.d/x2goserver.features |    2 +
 38 files changed, 366 insertions(+), 119 deletions(-)
 copy {x2goserver-extensions/lib/extensions/fail-resume.d => x2goserver-pyhoca/bin}/.placeholder (100%)
 copy {x2goserver-extensions/lib/extensions/fail-resume.d => x2goserver-pyhoca/man/man8}/.placeholder (100%)
 rename {x2goserver-pyhoca => x2goserver}/bin/x2gosetkeyboard (66%)
 rename {x2goserver-pyhoca => x2goserver}/man/man8/x2gosetkeyboard.8 (100%)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 2befc49..5b60e03 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,12 +1,51 @@
-x2goserver (3.1.1.1-0~x2go+bpo+lenny1) UNRELEASED; urgency=low
+x2goserver (3.1.1.3-0~x2go+bpo+lenny1) UNRELEASED; urgency=low
 
-  * Backport current status of x2goserver (unreleased 3.1.1.1) to
+  * Backport current status of x2goserver (unreleased 3.1.1.3) to
     Debian lenny.
   * No DBI method sqlite_busy_timeout available on Debian lenny.
   
  -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Thu, 05 Apr 2012 15:37:39 +0200
 
-x2goserver (3.1.1.1-0~x2go1) UNRELEASED; urgency=low
+x2goserver (3.1.1.3-0~x2go1) unstable; urgency=low
+
+  [ Jan Engelhardt ]
+  * New upstream version (3.1.1.3):
+    - Do not block /etc/X11/Xresources with a directory (in Makefile).
+    - Avoid using archaic tools during free port detection.
+    - Avoid using ls in Makefiles.
+
+  [ Mike Gabriel ]
+  * New upstream version (3.1.1.3):
+    - Fix broken X2Go client-side printing. Adapt x2goprint to new spool job
+      directory.
+  * /debian/x2goserver.init:
+    + Orthography fix: X2Go instead of x2go.
+
+ -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Tue, 03 Jul 2012 10:00:32 +0200
+
+x2goserver (3.1.1.2-0~x2go1) unstable; urgency=low
+
+  [ Mike Gabriel ]
+  * New upstream version (3.1.1.2):
+    - Place session.log into /tmp directory, make x2gocleansessions and
+      x2golistsessions_root work even if home directories are mounted
+      via NFSv4+Krb5 and not accessible by root. 
+    - Use -fPIE gcc (position independed executable) for building
+      x2gosqlitewrapper.c (as suggested by Jan Engelhardt).
+    - Clean up session.log tmp directory if empty.
+    - Move all X2Go tmp folders (mount points) to /tmp/.x2go-<user>.
+      Make sure all tmp folders get removed if not used any more. Drop
+      symlink ~/media if no client-side folders are mounted into a
+      session.
+    - Fix crashes of x2gocleansessions due to faulty syslog calls.
+    - Drop redundant hostname calls in x2gocleansessions.
+    - Launch x2goagent with $NX_TEMP=/tmp, otherwise it will fail to
+      create the X11 Unix domain sockets.
+
+ -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Fri, 29 Jun 2012 17:44:57 +0200
+
+x2goserver (3.1.1.1-0~x2go1) unstable; urgency=low
+>>>>>>> build-main
 
   [ Mike Gabriel ]
   * New upstream version (3.1.1.1):
@@ -14,8 +53,37 @@ x2goserver (3.1.1.1-0~x2go1) UNRELEASED; urgency=low
     - Handle whitespace in folder names appropriately.
     - Allow .desktop file parameter Terminal=... to pass through to X2Go
       client-side.
+<<<<<<< HEAD
 
  -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Wed, 04 Apr 2012 11:44:14 +0200
+=======
+    - Avoid error messages in x2gocmdexistmessage if cmdoutput file could
+      not be found.
+    - Provide nx-X11 libraries for applications launched via x2goruncommand.
+    - Add feature X2GO_SERVERSIDE_DESKTOPCOMMANDS. Let client provide a generic
+      desktop shell command (GNOME, UNITRY, KDE, etc.) which then gets
+      translated into an executable command by x2goruncommand.
+    - Detect desktop session mode to use for Ubuntu precise and later.
+    - Complete UNITY/GNOME support for Ubuntu/Debian.
+    - Use ,,-nolisten tcp'' option when evoking x2goagent from within
+      x2gostartagent.
+    - Export NX_ROOT=$HOME/.x2go in x2gostartagent. Makes the keyboard file
+      in X2Go session cache directory.
+    - Add support for client-side keyboard detection. Moved script
+      x2gosetkeyboard from x2goserver-pyhoca into x2goserver package.
+    - Make x2gosetkeyboard set the client-side keyboard on session start and
+      resume if usekbd is set to True and the keyboard type is set ,,auto''.
+    - Reset keyboard settings to pc104/us before setting client-side keyboard
+      parameters.
+    - For finished sessions purge all mount points that still hover in the
+      DB's mounts table.
+    - Make sure we run fusermount from within a directory that the user has read
+      access to.
+  * Depend on x2goagent (>= 2:3.5.0.12), make sure that x2goagent has the patch
+    105_nxagent_export-remote-keyboard-config.full.patch included.
+
+ -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Thu, 21 Jun 2012 14:16:08 +0200
+>>>>>>> build-main
 
 x2goserver (3.1.1.0-0~x2go1) unstable; urgency=low
 
@@ -31,10 +99,10 @@ x2goserver (3.1.1.0-0~x2go1) unstable; urgency=low
       supported X2Go features.
     - Update date and version number in man pages.
     - Fix race condition between session.log of x2goagent and
-      x2gocleansessions. If x2goagent is now fast enough with appending
-      the new session state to the session.log file, the x2gocleansessions
-      script will mark the session as suspended during the session
-      resuming process.
+      x2gocleansessions. The old situation was: in cases that x2goagent
+      was not fast enough with appending the new session state to the
+      session.log file, the x2gocleansessions script marked the session
+      as suspended during the session resuming process.
     - Wait one second for x2goagent to write to session.log before updating
       the session state from 'S' to 'R' in the X2Go session database.
     - Add X2Go server script x2gogetstatus.
@@ -53,7 +121,7 @@ x2goserver (3.1.1.0-0~x2go1) unstable; urgency=low
     - Support for "published applications".
       Sponsored by Stefan Baur (http://www.baur-itcs.de).
 
- -- Oleksandr Shneyder <oleksandr.shneyder at treuchtlingen.de>  Thu, 08 Mar 2012 13:24:10 +0100
+ -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Wed, 04 Apr 2012 11:41:02 +0200
 
 x2goserver (3.1.0.1-0~x2go1) unstable; urgency=low
 
diff --git a/debian/control b/debian/control
index 8423d6f..48958a5 100644
--- a/debian/control
+++ b/debian/control
@@ -17,7 +17,7 @@ Architecture: any
 Depends:
  ${shlibs:Depends},
  ${misc:Depends},
- x2goagent,
+ x2goagent (>= 2:3.5.0.12),
  lsof,
  openssh-client,
  openssh-server,
diff --git a/debian/x2goserver-pyhoca.docs b/debian/x2goserver-pyhoca.docs
index 6652b35..3a19506 100644
--- a/debian/x2goserver-pyhoca.docs
+++ b/debian/x2goserver-pyhoca.docs
@@ -1 +1 @@
-x2goserver-pyhoca/.build_man2html/html
+#x2goserver-pyhoca/.build_man2html/html
diff --git a/debian/x2goserver-pyhoca.install b/debian/x2goserver-pyhoca.install
index 7ba0b60..69985ca 100644
--- a/debian/x2goserver-pyhoca.install
+++ b/debian/x2goserver-pyhoca.install
@@ -1,3 +1,3 @@
-x2goserver-pyhoca/bin/x2go*      /usr/bin/
+#x2goserver-pyhoca/bin/x2go*      /usr/bin/
 x2goserver-pyhoca/VERSION.x2goserver-pyhoca      /usr/share/x2go/versions/
-x2goserver-pyhoca/share/x2gofeature.d/*              /usr/share/x2go/x2gofeature.d/
+#x2goserver-pyhoca/share/x2gofeature.d/*              /usr/share/x2go/x2gofeature.d/
diff --git a/debian/x2goserver-pyhoca.manpages b/debian/x2goserver-pyhoca.manpages
index 845a36c..6f35882 100644
--- a/debian/x2goserver-pyhoca.manpages
+++ b/debian/x2goserver-pyhoca.manpages
@@ -1 +1 @@
-x2goserver-pyhoca/man/man8/*
\ No newline at end of file
+#x2goserver-pyhoca/man/man8/*
\ No newline at end of file
diff --git a/debian/x2goserver.init b/debian/x2goserver.init
index be3631c..b56a4cb 100644
--- a/debian/x2goserver.init
+++ b/debian/x2goserver.init
@@ -12,7 +12,7 @@ PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
 case "$1" in
 	start)
-		echo "Cleaning up stale x2go sessions."
+		echo "Cleaning up stale X2Go sessions."
 		/usr/sbin/x2gocleansessions
 	;;
 	stop)
@@ -22,7 +22,7 @@ case "$1" in
 	reload|force-reload|restart)
 		# kill x2gocleansessions, ignore on failure
 		killall x2gocleansessions || true
-		echo "Cleaning up stale x2go sessions."
+		echo "Cleaning up stale X2Go sessions."
 		/usr/sbin/x2gocleansessions
 	;;
 	*)
diff --git a/debian/x2goserver.preinst b/debian/x2goserver.preinst
index 117bb2c..fdff7bf 100755
--- a/debian/x2goserver.preinst
+++ b/debian/x2goserver.preinst
@@ -23,8 +23,8 @@ case "$1" in
 		# cleanup old x2goserver installations
 		rm -Rfv /var/db/x2go/
 		if getent group x2gousers >/dev/null; then 
-			echo "The ,,x2gousers'' is no longer used by x2go and can be"
-			echo "removed as soon as no users are members of this group"
+			echo "The group ,,x2gousers'' is no longer used by X2Go and can be"
+			echo "removed as soon as no users are members of this group anymore."
 		fi
 		;;
 	abort-upgrade)
diff --git a/x2goserver-compat/Makefile b/x2goserver-compat/Makefile
index 6bdc94c..d8a3c95 100755
--- a/x2goserver-compat/Makefile
+++ b/x2goserver-compat/Makefile
@@ -19,10 +19,10 @@ BINDIR=$(PREFIX)/bin
 MANDIR=$(PREFIX)/share/man
 SHAREDIR=$(PREFIX)/share/x2go
 
-BIN_SCRIPTS=$(shell cd bin && ls)
-#SBIN_SCRIPTS=$(shell cd sbin && ls)
-#LIB_FILES=$(shell cd lib && ls)
-FEATURE_SCRIPTS=$(shell cd share/x2gofeature.d && ls *.features)
+BIN_SCRIPTS=$(shell cd bin && echo *)
+#SBIN_SCRIPTS=$(shell cd sbin && echo *)
+#LIB_FILES=$(shell cd lib && echo *)
+FEATURE_SCRIPTS=$(shell cd share/x2gofeature.d && echo *.features)
 
 man_pages = `cd man && find * -type f`
 
diff --git a/x2goserver-compat/VERSION.x2goserver-compat b/x2goserver-compat/VERSION.x2goserver-compat
index b8f4d84..c7271d2 100644
--- a/x2goserver-compat/VERSION.x2goserver-compat
+++ b/x2goserver-compat/VERSION.x2goserver-compat
@@ -1 +1 @@
-3.1.1.0
\ No newline at end of file
+3.1.1.3
\ No newline at end of file
diff --git a/x2goserver-extensions/Makefile b/x2goserver-extensions/Makefile
index d3bbbb6..13cf560 100755
--- a/x2goserver-extensions/Makefile
+++ b/x2goserver-extensions/Makefile
@@ -19,10 +19,10 @@ LIBDIR=$(PREFIX)/lib/x2go
 MANDIR=$(PREFIX)/share/man
 SHAREDIR=$(PREFIX)/share/x2go
 
-BIN_SCRIPTS=$(shell cd bin && ls)
-#SBIN_SCRIPTS=$(shell cd sbin && ls)
-#LIB_FILES=$(shell cd lib && ls)
-FEATURE_SCRIPTS=$(shell cd share/x2gofeature.d && ls *.features .placeholder)
+BIN_SCRIPTS=$(shell cd bin && echo *)
+#SBIN_SCRIPTS=$(shell cd sbin && echo *)
+#LIB_FILES=$(shell cd lib && echo *)
+FEATURE_SCRIPTS=$(shell cd share/x2gofeature.d && echo *.features .placeholder)
 
 man_pages = `cd man && find * -type f`
 
diff --git a/x2goserver-extensions/VERSION.x2goserver-extensions b/x2goserver-extensions/VERSION.x2goserver-extensions
index b8f4d84..c7271d2 100644
--- a/x2goserver-extensions/VERSION.x2goserver-extensions
+++ b/x2goserver-extensions/VERSION.x2goserver-extensions
@@ -1 +1 @@
-3.1.1.0
\ No newline at end of file
+3.1.1.3
\ No newline at end of file
diff --git a/x2goserver-fmbindings/Makefile b/x2goserver-fmbindings/Makefile
index a9d8da5..8661e83 100755
--- a/x2goserver-fmbindings/Makefile
+++ b/x2goserver-fmbindings/Makefile
@@ -19,10 +19,10 @@ LIBDIR=$(PREFIX)/lib/x2go
 MANDIR=$(PREFIX)/share/man
 SHAREDIR=$(PREFIX)/share/x2go
 
-BIN_SCRIPTS=$(shell cd bin && ls)
-#SBIN_SCRIPTS=$(shell cd sbin && ls)
-#LIB_FILES=$(shell cd lib && ls)
-FEATURE_SCRIPTS=$(shell cd share/x2go/x2gofeature.d && ls *.features)
+BIN_SCRIPTS=$(shell cd bin && echo *)
+#SBIN_SCRIPTS=$(shell cd sbin && echo *)
+#LIB_FILES=$(shell cd lib && echo *)
+FEATURE_SCRIPTS=$(shell cd share/x2go/x2gofeature.d && echo *.features)
 
 man_pages = `cd man && find * -type f`
 
diff --git a/x2goserver-fmbindings/VERSION.x2goserver-fmbindings b/x2goserver-fmbindings/VERSION.x2goserver-fmbindings
index 78df7c8..c7271d2 100644
--- a/x2goserver-fmbindings/VERSION.x2goserver-fmbindings
+++ b/x2goserver-fmbindings/VERSION.x2goserver-fmbindings
@@ -1 +1 @@
-3.1.1.0
+3.1.1.3
\ No newline at end of file
diff --git a/x2goserver-printing/Makefile b/x2goserver-printing/Makefile
index 28ee92a..1c956f4 100755
--- a/x2goserver-printing/Makefile
+++ b/x2goserver-printing/Makefile
@@ -19,10 +19,10 @@ BINDIR=$(PREFIX)/bin
 MANDIR=$(PREFIX)/share/man
 SHAREDIR=$(PREFIX)/share/x2go
 
-BIN_SCRIPTS=$(shell cd bin && ls)
-#SBIN_SCRIPTS=$(shell cd sbin && ls)
-#LIB_FILES=$(shell cd lib && ls)
-FEATURE_SCRIPTS=$(shell cd share/x2gofeature.d && ls *.features)
+BIN_SCRIPTS=$(shell cd bin && echo *)
+#SBIN_SCRIPTS=$(shell cd sbin && echo *)
+#LIB_FILES=$(shell cd lib && echo *)
+FEATURE_SCRIPTS=$(shell cd share/x2gofeature.d && echo *.features)
 
 man_pages = `cd man && find * -type f`
 
diff --git a/x2goserver-printing/VERSION.x2goserver-printing b/x2goserver-printing/VERSION.x2goserver-printing
index b8f4d84..c7271d2 100644
--- a/x2goserver-printing/VERSION.x2goserver-printing
+++ b/x2goserver-printing/VERSION.x2goserver-printing
@@ -1 +1 @@
-3.1.1.0
\ No newline at end of file
+3.1.1.3
\ No newline at end of file
diff --git a/x2goserver-printing/bin/x2goprint b/x2goserver-printing/bin/x2goprint
index 113e5f6..e3f3f8f 100755
--- a/x2goserver-printing/bin/x2goprint
+++ b/x2goserver-printing/bin/x2goprint
@@ -92,8 +92,8 @@ syslog('notice', "x2goprint is processing $printdir/$pdfFile with print job titl
 # with user privileges
 ($tm,$tm,$uid,$gid,$tm,$tm,$tm,$homedir)=getpwnam($user);
 
-my $spoolbase="/tmp/spool_$user";
-my $spooldir="$spoolbase/$session";
+my $spoolbase="/tmp/.x2go-$user/spool";
+my $spooldir="$spoolbase/C-$session";
 my $spooltmp="$spoolbase/tmp";
 mkpath($spooltmp);
 chown $uid, $gid, "$spooltmp";
diff --git a/x2goserver-pyhoca/Makefile b/x2goserver-pyhoca/Makefile
index 8fc06fa..95ab06d 100755
--- a/x2goserver-pyhoca/Makefile
+++ b/x2goserver-pyhoca/Makefile
@@ -19,10 +19,10 @@ LIBDIR=$(PREFIX)/lib/x2go
 MANDIR=$(PREFIX)/share/man
 SHAREDIR=$(PREFIX)/share/x2go
 
-BIN_SCRIPTS=$(shell cd bin && ls)
-#SBIN_SCRIPTS=$(shell cd sbin && ls)
-#LIB_FILES=$(shell cd lib && ls)
-FEATURE_SCRIPTS=$(shell cd share/x2gofeature.d && ls *.features)
+BIN_SCRIPTS=$(shell cd bin && echo *)
+#SBIN_SCRIPTS=$(shell cd sbin && echo *)
+#LIB_FILES=$(shell cd lib && echo *)
+FEATURE_SCRIPTS=$(shell cd share/x2gofeature.d && echo *.features)
 
 man_pages = `cd man && find * -type f`
 
@@ -39,25 +39,25 @@ build-indep: build_man2html
 build-arch:
 
 build_man2html:
-	mkdir -p $(MAN2HTML_DEST)
-	for man_page in $(man_pages); do mkdir -p `dirname $(MAN2HTML_DEST)/$$man_page`; done
-	for man_page in $(man_pages); do $(MAN2HTML_BIN) $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done
+#	mkdir -p $(MAN2HTML_DEST)
+#	for man_page in $(man_pages); do mkdir -p `dirname $(MAN2HTML_DEST)/$$man_page`; done
+#	for man_page in $(man_pages); do $(MAN2HTML_BIN) $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done
 
 clean: clean_man2html
 
 clean_man2html:
-	rm -rf `dirname $(MAN2HTML_DEST)`
+#	rm -rf `dirname $(MAN2HTML_DEST)`
 
 install: install_scripts install_config install_man install_version
 
 install_scripts:
-	$(INSTALL_DIR) $(DESTDIR)$(BINDIR)
+#	$(INSTALL_DIR) $(DESTDIR)$(BINDIR)
 #	$(INSTALL_DIR) $(DESTDIR)$(SBINDIR)
-	$(INSTALL_DIR) $(DESTDIR)$(SHAREDIR)
-	$(INSTALL_DIR) $(DESTDIR)$(SHAREDIR)/x2gofeature.d
-	$(INSTALL_PROGRAM) bin/*                $(DESTDIR)$(BINDIR)/
+#	$(INSTALL_DIR) $(DESTDIR)$(SHAREDIR)
+#	$(INSTALL_DIR) $(DESTDIR)$(SHAREDIR)/x2gofeature.d
+#	$(INSTALL_PROGRAM) bin/*                $(DESTDIR)$(BINDIR)/
 #	$(INSTALL_PROGRAM) sbin/*               $(DESTDIR)$(SBINDIR)/
-	$(INSTALL_PROGRAM) share/x2gofeature.d/*.features $(DESTDIR)$(SHAREDIR)/x2gofeature.d/
+#	$(INSTALL_PROGRAM) share/x2gofeature.d/*.features $(DESTDIR)$(SHAREDIR)/x2gofeature.d/
 
 install_config:
 #	$(INSTALL_DIR) $(DESTDIR)$(ETCDIR)
@@ -67,10 +67,10 @@ install_config:
 #	$(INSTALL_FILE) etc/x2gosql/sql         $(DESTDIR)$(ETCDIR)/x2gosql
 
 install_man:
-	$(INSTALL_DIR) $(DESTDIR)$(MANDIR)
-	$(INSTALL_DIR) $(DESTDIR)$(MANDIR)/man8
-	$(INSTALL_FILE) man/man8/*.8           $(DESTDIR)$(MANDIR)/man8
-	gzip -f $(DESTDIR)$(MANDIR)/man8/x2go*.8
+#	$(INSTALL_DIR) $(DESTDIR)$(MANDIR)
+#	$(INSTALL_DIR) $(DESTDIR)$(MANDIR)/man8
+#	$(INSTALL_FILE) man/man8/*.8           $(DESTDIR)$(MANDIR)/man8
+#	gzip -f $(DESTDIR)$(MANDIR)/man8/x2go*.8
 
 install_version:
 	$(INSTALL_DIR) $(DESTDIR)$(SHAREDIR)
@@ -80,10 +80,10 @@ install_version:
 uninstall: uninstall_scripts uninstall_config uninstall_man uninstall_version
 
 uninstall_scripts:
-	for file in $(BIN_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(BINDIR)/$$file; done
+#	for file in $(BIN_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(BINDIR)/$$file; done
 #	for file in $(SBIN_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(SBINDIR)/$$file; done
 #	for file in $(LIB_FILES); do $(RM_FILE) $(DESTDIR)$(LIBDIR)/$$file; done
-	for file in $(FEATURE_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(SHAREDIR)/x2gofeature.d/$$file; done
+#	for file in $(FEATURE_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(SHAREDIR)/x2gofeature.d/$$file; done
 
 uninstall_config:
 #	$(RM_FILE) $(DESTDIR)$(ETCDIR)/x2goserver.conf
@@ -93,9 +93,9 @@ uninstall_config:
 #	$(RM_DIR)  $(DESTDIR)$(ETCDIR)/x2gosql || true
 
 uninstall_man:
-	for file in $(BIN_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(MANDIR)/man8/$$file.8.gz; done
-	for file in $(SBIN_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(MANDIR)/man8/$$file.8.gz; done
-	$(RM_DIR)  $(DESTDIR)$(MANDIR) || true
+#	for file in $(BIN_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(MANDIR)/man8/$$file.8.gz; done
+#	for file in $(SBIN_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(MANDIR)/man8/$$file.8.gz; done
+#	$(RM_DIR)  $(DESTDIR)$(MANDIR) || true
 
 uninstall_version:
 	$(RM_FILE) $(DESTDIR)$(SHAREDIR)/versions/VERSION.x2goserver-pyhoca
diff --git a/x2goserver-pyhoca/VERSION.x2goserver-pyhoca b/x2goserver-pyhoca/VERSION.x2goserver-pyhoca
index b8f4d84..c7271d2 100644
--- a/x2goserver-pyhoca/VERSION.x2goserver-pyhoca
+++ b/x2goserver-pyhoca/VERSION.x2goserver-pyhoca
@@ -1 +1 @@
-3.1.1.0
\ No newline at end of file
+3.1.1.3
\ No newline at end of file
diff --git a/x2goserver-extensions/lib/extensions/fail-resume.d/.placeholder b/x2goserver-pyhoca/bin/.placeholder
similarity index 100%
copy from x2goserver-extensions/lib/extensions/fail-resume.d/.placeholder
copy to x2goserver-pyhoca/bin/.placeholder
diff --git a/x2goserver-extensions/lib/extensions/fail-resume.d/.placeholder b/x2goserver-pyhoca/man/man8/.placeholder
similarity index 100%
copy from x2goserver-extensions/lib/extensions/fail-resume.d/.placeholder
copy to x2goserver-pyhoca/man/man8/.placeholder
diff --git a/x2goserver-pyhoca/share/x2gofeature.d/x2goserver-pyhoca.features b/x2goserver-pyhoca/share/x2gofeature.d/x2goserver-pyhoca.features
index 1737ad8..2411c0e 100755
--- a/x2goserver-pyhoca/share/x2gofeature.d/x2goserver-pyhoca.features
+++ b/x2goserver-pyhoca/share/x2gofeature.d/x2goserver-pyhoca.features
@@ -29,7 +29,6 @@ X2GO_FEATURE=$1
 # check for X2Go server core features
 case "$X2GO_FEATURE" in
 
-    "X2GO_SET_KEYBOARD") echo "ok"; exit 0;;
     *) exit -1;;
 
 esac
diff --git a/x2goserver-xsession/Makefile b/x2goserver-xsession/Makefile
index 7a56c87..50c2818 100755
--- a/x2goserver-xsession/Makefile
+++ b/x2goserver-xsession/Makefile
@@ -20,11 +20,11 @@ ETCDIR=/etc/x2go
 MANDIR=$(PREFIX)/share/man
 SHAREDIR=$(PREFIX)/share/x2go
 
-#BIN_SCRIPTS=$(shell cd bin && ls)
-#SBIN_SCRIPTS=$(shell cd sbin && ls)
-#LIB_FILES=$(shell cd lib && ls)
-ETC_FILES=$(shell cd etc && ls)
-FEATURE_SCRIPTS=$(shell cd share/x2gofeature.d && ls *.features)
+#BIN_SCRIPTS=$(shell cd bin && echo *)
+#SBIN_SCRIPTS=$(shell cd sbin && echo *)
+#LIB_FILES=$(shell cd lib && echo *)
+ETC_FILES=$(shell cd etc && echo *)
+FEATURE_SCRIPTS=$(shell cd share/x2gofeature.d && echo *.features)
 
 #man_pages = `cd man && find * -type f`
 
@@ -64,7 +64,6 @@ install_scripts:
 install_config:
 	$(INSTALL_DIR) $(DESTDIR)$(ETCDIR)
 #       provide target dirs for X11 related symlinks
-	mkdir -p $(DESTDIR)/etc/X11/Xresources
 	mkdir -p $(DESTDIR)/etc/X11/Xsession.d
 	touch $(DESTDIR)/etc/X11/Xsession.options
 	$(INSTALL_FILE) etc/Xsession                    $(DESTDIR)$(ETCDIR)/
diff --git a/x2goserver-xsession/VERSION.x2goserver-xsession b/x2goserver-xsession/VERSION.x2goserver-xsession
index b8f4d84..c7271d2 100644
--- a/x2goserver-xsession/VERSION.x2goserver-xsession
+++ b/x2goserver-xsession/VERSION.x2goserver-xsession
@@ -1 +1 @@
-3.1.1.0
\ No newline at end of file
+3.1.1.3
\ No newline at end of file
diff --git a/x2goserver/Makefile b/x2goserver/Makefile
index c90f1c9..115c929 100755
--- a/x2goserver/Makefile
+++ b/x2goserver/Makefile
@@ -19,10 +19,10 @@ LIBDIR=$(PREFIX)/lib/x2go
 MANDIR=$(PREFIX)/share/man
 SHAREDIR=$(PREFIX)/share/x2go
 
-BIN_SCRIPTS=$(shell cd bin && ls)
-SBIN_SCRIPTS=$(shell cd sbin && ls)
-LIB_FILES=$(shell cd lib && ls)
-FEATURE_SCRIPTS=$(shell cd share/x2gofeature.d && ls *.features)
+BIN_SCRIPTS=$(shell cd bin && echo *)
+SBIN_SCRIPTS=$(shell cd sbin && echo *)
+LIB_FILES=$(shell cd lib && echo *)
+FEATURE_SCRIPTS=$(shell cd share/x2gofeature.d && echo *.features)
 
 man_pages = `cd man && find * -type f`
 
@@ -37,7 +37,7 @@ build: build-arch build-indep
 build-arch: build_setgidwrappers
 
 build_setgidwrappers:
-	gcc -o x2gosqlitewrapper x2gosqlitewrapper.c
+	gcc -fPIE -o x2gosqlitewrapper x2gosqlitewrapper.c
 
 build-indep: build_man2html
 
diff --git a/x2goserver/VERSION.x2goserver b/x2goserver/VERSION.x2goserver
index b8f4d84..c7271d2 100644
--- a/x2goserver/VERSION.x2goserver
+++ b/x2goserver/VERSION.x2goserver
@@ -1 +1 @@
-3.1.1.0
\ No newline at end of file
+3.1.1.3
\ No newline at end of file
diff --git a/x2goserver/bin/x2gocmdexitmessage b/x2goserver/bin/x2gocmdexitmessage
index e8002ee..a17bb9f 100755
--- a/x2goserver/bin/x2gocmdexitmessage
+++ b/x2goserver/bin/x2gocmdexitmessage
@@ -25,7 +25,10 @@ X2GO_ROOT=${HOME}/.x2go
 MESSAGE_FILE=$X2GO_ROOT/C-$1/cmdoutput
 
 $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@"
-$X2GO_LIB_PATH/x2gosyslog "$0" "debug" "command output starts with: $(head -n5 $MESSAGE_FILE | sed s/\n/ /g)"
 
-# return command output of the command that was issued by x2goruncommand
-cat "$MESSAGE_FILE"
+test -f "$MESSAGE_FILE" && {
+       $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "command output starts with: $(head -n5 $MESSAGE_FILE | sed 's/\n/ /g')"
+
+       # return command output of the command that was issued by x2goruncommand
+       cat "$MESSAGE_FILE"
+}
diff --git a/x2goserver/bin/x2gomountdirs b/x2goserver/bin/x2gomountdirs
index 88948e3..d4249ad 100755
--- a/x2goserver/bin/x2gomountdirs
+++ b/x2goserver/bin/x2gomountdirs
@@ -33,7 +33,7 @@ setlogmask( LOG_UPTO(x2gologlevel()) );
 
 syslog('info', "x2gomountdirs has been called with options: @ARGV");
 
-my $tmp_dir = $ENV{'TMP'} || '/tmp';
+my $tmp_dir = '/tmp';
 
 my $type=shift;
 my $session=shift;
@@ -100,12 +100,12 @@ close(F);
 chmod(0600,"$key");
 chmod(0600,"$key.ident");
 
-my $mdir="$tmp_dir/$ENV{'USER'}_media";
+my $mdir="$tmp_dir/.x2go-$ENV{'USER'}/media";
 my $ldir="$ENV{'HOME'}/media";
 my $spooldir_lnk="$ENV{'HOME'}/.x2go/C-$session/spool";
-my $spooldir="$tmp_dir/spool_$ENV{'USER'}";
+my $spooldir="$tmp_dir/.x2go-$ENV{'USER'}/spool";
 my $mimeboxdir_lnk="$ENV{'HOME'}/.x2go/C-$session/mimebox";
-my $mimeboxdir="$tmp_dir/mimebox_$ENV{'USER'}";
+my $mimeboxdir="$tmp_dir/.x2go-$ENV{'USER'}/mimebox";
 
 if (! -e $mdir)
 {
@@ -139,7 +139,7 @@ if (! -e $spooldir)
 }
 chmod(0700,$spooldir);
 
-$spooldir="$spooldir/$session";
+$spooldir="$spooldir/C-$session";
 if (! -e $spooldir)
 {
 	mkdir($spooldir);
@@ -152,7 +152,7 @@ if (! -e $mimeboxdir)
 }
 chmod(0700,$mimeboxdir);
 
-$mimeboxdir="$mimeboxdir/$session";
+$mimeboxdir="$mimeboxdir/C-$session";
 if (! -e $mimeboxdir)
 {
 	mkdir($mimeboxdir);
diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session
index 50cb638..cddbf05 100755
--- a/x2goserver/bin/x2goresume-session
+++ b/x2goserver/bin/x2goresume-session
@@ -64,8 +64,12 @@ SERVER=`echo "$SESSIONINFO" | awk -F, {'print $4'}`
 
 $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "old ports: $GR_PORT, $SOUND_PORT, $FS_PORT"
 
-#Get all used in system ports from netstat output
-SYSTEM_PORTS=`netstat -nt -all | awk '{ n=split($0,lines,"\n"); for(i=1;i<=n;i++){split (lines[i],words," ");delim=split(words[4],ports,":"); if(delim>1)printf ("|%s|\n",ports[delim])} }'`
+#Get all used in system ports from ss output
+ss=$(PATH="$PATH:/usr/sbin:/sbin" type -P ss);
+USED_PORTS=$(
+	"$ss" -lnt |
+	perl -lne 'print$d{$2}="|$2|"if/^(\S+\s+){2}\S+:(\d+)/&&!exists$d{$2}';
+);
 
 #check if saved in DB ports free
 if grep -q "|${GR_PORT}|" <<<$SYSTEM_PORTS ; then
@@ -128,8 +132,7 @@ LISTSTR=`echo "$OPTIONS" | awk -F, {'print $17'}`
 KTSTR=`echo "$KTSTR" | sed "s/\//\\\\\\\\\//"`
 X2GO_KBD_TYPE=`echo "$X2GO_KBD_TYPE" | sed "s/\//\\\\\\\\\//"`
 
-if [ "$X2GO_SET_KBD" == "0" ]
-then
+if [ "$X2GO_SET_KBD" == "0" ] || [ "$X2GO_KBD_TYPE" == "auto" ]; then
 	X2GO_KBD_TYPE="null\/null"
 fi
 
@@ -152,6 +155,9 @@ echo "$NEWOPTIONS" >"${SESSION_DIR}/options"
 # run x2goserver-extensions for pre-resume
 x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" pre-resume || true
 
+# clear old keyboard file
+rm -Rf $SESSION_DIR/keyboard
+
 kill -HUP $X2GO_AGENT_PID &>/dev/null && {
 	$X2GO_LIB_PATH/x2gosyslog "$0" "notice" "client $X2GO_CLIENT has successfully resumed session with ID $SESSION_NAME"
 
@@ -171,6 +177,13 @@ kill -HUP $X2GO_AGENT_PID &>/dev/null && {
 	#done
 	(sleep 1; $X2GO_LIB_PATH/x2goresume  "$X2GO_CLIENT" "$SESSION_NAME"  "$GR_PORT" "$SOUND_PORT" "$FS_PORT" > /dev/null;)
 
+	# set client-side keyboard model, type, variant, etc.
+	if [ "$X2GO_SET_KBD" != "0" ] && [ "$X2GO_KBD_TYPE" == "auto" ]; then
+		X2GO_DISPLAY=$(echo $SESSION_NAME | cut -d"-" -f2)
+		export DISPLAY=:$X2GO_DISPLAY.0
+		x2gosetkeyboard "$SESSION_NAME" >/dev/null 2>/dev/null &
+	fi
+
 	# resume x2godesktopsharing, if it has been in use before the session got suspended
 	x2gofeature X2GO_DESKTOPSHARING &>/dev/null && x2goresume-desktopsharing "$SESSION_NAME" || true
 
diff --git a/x2goserver/bin/x2goruncommand b/x2goserver/bin/x2goruncommand
index 2f70633..6e62709 100755
--- a/x2goserver/bin/x2goruncommand
+++ b/x2goserver/bin/x2goruncommand
@@ -35,6 +35,7 @@ export DISPLAY
 export X2GO_AGENT_PID
 export X2GO_SESSION
 cmd=`echo $cmd |sed 's/X2GO_SPACE_CHAR/ /g'`
+args=''
 
 X2GO_ROOT="${HOME}/.x2go"
 MESSAGE_FILE="$X2GO_ROOT/C-$X2GO_SESSION/cmdoutput"
@@ -52,7 +53,9 @@ export QT_GRAPHICSSYSTEM=native
 IMEXIT="false"
 
 NX_XINERAMA_LIBS=/usr/lib/nx/X11/Xinerama
-test -n "$LD_LIBRARY_PATH" && LD_LIBRARY_PATH=$NX_XINERAMA_LIBS:$LD_LIBRARY_PATH || LD_LIBRARY_PATH="$NX_XINERAMA_LIBS"
+NX_LIBS=/usr/lib/nx/X11
+test -n "$LD_LIBRARY_PATH" && LD_LIBRARY_PATH=$NX_XINERAMA_LIBS:$NX_LIBS:$LD_LIBRARY_PATH || LD_LIBRARY_PATH="$NX_XINERAMA_LIBS:$NX_LIBS"
+$X2GO_LIB_PATH/x2gosyslog "$0" "debug" "exporting LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
 export LD_LIBRARY_PATH
 
 if [ "$sndsys" == "esd" ]; then
@@ -61,6 +64,67 @@ elif [ "$sndsys" == "arts" ]; then
 	export ARTS_SERVER=localhost:$4
 fi
 
+# detect Ubuntu version via /etc/lsb-release (not supported by Debian)
+if [ -e "/etc/lsb-release" ]; then
+	source /etc/lsb-release
+fi
+
+# let x2goruncommand choose what command to use for a given desktop shell name (GNOME, UNITY, KDE, XFCE4, LXDE, TRINITY)
+
+# NOTES on GNOME startup behaviour in different distributions
+# ===========================================================
+
+# Debian launches GNOME3 (in accelerated mode) when calling gnome-session
+
+# Ubuntu launches Unity (in accelerated mode) when calling gnome-session.
+# To make the GNOME variants start up properly on Debian/Ubuntu we have to make the following differentiations
+
+# before and with Ubuntu 10.10 (maverick): GNOME -> gnome-session (would start GNOME2)
+# Ubuntu 11.04 (natty): GNOME -> gnome-session --session=2d-gnome, UNITY -> gnome-session --session=2d-ubuntu (GNOME3 based desktop shells)
+# Ubuntu 11.10 (oneiric) or later: GNOME -> gnome-session --session=gnome-fallback, UNITY -> gnome-session --session=ubuntu-2d (GNOME3 based desktop shells)
+
+# before and with Debian squeeze: GNOME -> gnome-session (would start GNOME2)
+# Debian wheezy: GNOME -> gnome-session --session=gnome-fallback, UNITY: not available (GNOME3 based desktop shells)
+
+if [ "$cmd" == "GNOME" ] || [ "$cmd" == "gnome-session" ]; then
+
+	cmd="/usr/bin/gnome-session"
+	if [ "$DISTRIB_ID" == "Ubuntu" ] && echo "$DISTRIB_CODENAME" | egrep "^[a-m].*" >/dev/null; then
+		export DESKTOP_SESSION="gnome"
+	elif [ "$DISTRIB_ID" == "Ubuntu" ] && echo "$DISTRIB_CODENAME" | egrep "^n.*" >/dev/null; then
+		export DESKTOP_SESSION="2d-gnome"
+		args=" --session=$DESKTOP_SESSION"
+	elif [ "$DISTRIB_ID" == "Ubuntu" ] && echo "$DISTRIB_CODENAME" | egrep -v "^[a-n].*" >/dev/null; then
+		export DESKTOP_SESSION="gnome-fallback"
+		args=" --session=$DESKTOP_SESSION"
+	elif cat /etc/debian_version | egrep "^(squeeze|6\.).*" >/dev/null; then
+		export DESKTOP_SESSION="gnome"
+	elif cat /etc/debian_version | egrep "^(wheezy|7\.).*" >/dev/null; then
+		export DESKTOP_SESSION="gnome-fallback"
+		args=" --session=$DESKTOP_SESSION"
+	fi
+
+elif ([ "$cmd" == "UNITY" ] || [ "$cmd" == "unity" ]); then
+	cmd="/usr/bin/gnome-session"
+	if [ "$DISTRIB_ID" == "Ubuntu" ] && echo "$DISTRIB_CODENAME" | egrep -v "^[a-n].*" >/dev/null; then
+		export DESKTOP_SESSION="ubuntu-2d"
+		args=" --session=$DESKTOP_SESSION"
+	elif [ "$DISTRIB_ID" == "Ubuntu" ] && echo "$DISTRIB_CODENAME" | egrep -v "^n.*" >/dev/null; then
+		export DESKTOP_SESSION="2d-ubuntu"
+		args=" --session=$DESKTOP_SESSION"
+	fi
+	# on earlier Ubuntu versions or with non-Ubuntu Distros the ,,UNITY'' command in X2Go will launch the GNOME2 desktop shell
+
+elif [ "$cmd" == "KDE" ]; then
+	cmd="/usr/bin/startkde"
+elif [ "$cmd" == "XFCE4" ]; then
+	cmd="/usr/bin/xfce4-session"
+elif [ "$cmd" == "LXDE" ]; then
+	cmd="/usr/bin/startlxde"
+elif [ "$cmd" == "TRINITY" ]; then
+	cmd="/usr/bin/starttrinity"
+fi
+
 if [ "$cmd" == "WWWBROWSER" ]; then
 	if [ -e "/usr/bin/firefox" ]; then
 		cmd="/usr/bin/firefox"
@@ -136,12 +200,15 @@ sucessful_run=false
 if [ "$EXEC" != "" ] && [ -x $EXEC ]; then
 	$X2GO_LIB_PATH/x2gosyslog "$0" "debug" "running command $EXEC"
 
+	x2gosetkeyboard >/dev/null 2>/dev/null &
+
 	x2gofeature X2GO_XSESSION &>/dev/null && [ "x$X2GO_SESS_TYPE" = "xD" ] && {
-		STARTUP=$cmd
+		STARTUP="$cmd$args"
 		$X2GO_LIB_PATH/x2gosyslog "$0" "notice" "launching session with Xsession-x2go mechanism, using STARTUP=\"$STARTUP\""
 		STARTUP="$STARTUP" /etc/x2go/Xsession
 	} || {
-		$cmd
+		$X2GO_LIB_PATH/x2gosyslog "$0" "debug" "executing command \"$cmd$args\"..."
+		$cmd$args
 	}
 
 	#### some applications can quit immediately, we will wait here as long as x2goagent exists
@@ -179,5 +246,5 @@ test -r /etc/x2go/x2go_logout && . /etc/x2go/x2go_logout
 
 # clean up session dir if not in debug mode and if session has been successful
 if [ "$($X2GO_LIB_PATH/x2gologlevel)" != "7" ] && [ "x$successful_run" = "xtrue" ]; then
-	(sleep 10; rm -Rf "$HOME/.x2go/C-$X2GO_SESSION")&
+	(sleep 10; rm -Rf "${HOME}/.x2go/C-${X2GO_SESSION}"; rm -f "/tmp/.x2go-${USER}/session-C-${X2GO_SESSION}.log"; rmdir --ignore-fail-on-non-empty "/tmp/.x2go-${USER}"; )&
 fi
diff --git a/x2goserver-pyhoca/bin/x2gosetkeyboard b/x2goserver/bin/x2gosetkeyboard
similarity index 66%
rename from x2goserver-pyhoca/bin/x2gosetkeyboard
rename to x2goserver/bin/x2gosetkeyboard
index 481d01a..949af5e 100755
--- a/x2goserver-pyhoca/bin/x2gosetkeyboard
+++ b/x2goserver/bin/x2gosetkeyboard
@@ -17,23 +17,41 @@
 # Free Software Foundation, Inc.,
 # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 #
+# Copyright (C) 2011-2012  Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
 # Copyright (C) 2011-2012  Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
 # Copyright (C) 2011-2012  Heinz-Markus Graesing <heinz-m.graesing at obviously-nice.de>
 
-set -e
-
 X2GO_LIB_PATH=`echo -n \$(x2gobasepath)/lib/x2go`
 
 $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@"
 
+SESSION_NAME=${1:-$X2GO_SESSION}
+
 # set up paths
 X2GO_SESSION_ROOT=${HOME}/.x2go
-X2GO_SESSION_DIR=${X2GO_SESSION_ROOT}/C-${X2GO_SESSION}
+X2GO_SESSION_DIR=${X2GO_SESSION_ROOT}/C-${SESSION_NAME}
 
 # client keyboard configuration
 X2GO_CLIENT_KBD_FILE=${X2GO_SESSION_DIR}/keyboard
 
-test -f ${X2GO_CLIENT_KBD_FILE} || exit 0
+# if there is a directory at the location of the keyboard file, we consider this as blocking this script
+if [ -d ${X2GO_CLIENT_KBD_FILE} ]; then
+	$X2GO_LIB_PATH/x2gosyslog "$0" "info" "${X2GO_CLIENT_KBD_FILE} is blocked, not setting keyboard parameters from client-side settings"
+	rm -Rf ${X2GO_CLIENT_KBD_FILE}
+	exit 0
+fi
+
+# wait for the keyboard file to appear
+i=0
+while ! [ -f ${X2GO_CLIENT_KBD_FILE} ] && [ $i -lt 30 ]; do
+	$X2GO_LIB_PATH/x2gosyslog "$0" "info" "Waiting for ${X2GO_CLIENT_KBD_FILE} to appear"
+	sleep 1
+	i=$((i+1))
+done
+if  ! [ -f ${X2GO_CLIENT_KBD_FILE} ]; then
+	$X2GO_LIB_PATH/x2gosyslog "$0" "warning" "${X2GO_CLIENT_KBD_FILE} did not appear within 30s after agent startup"
+	exit 0
+fi
 
 read_keyboard_file() {
 
@@ -46,19 +64,29 @@ read_keyboard_file() {
 
 }
 
+reset_keymap() {
+	setxkbmap -layout us -option "" -model pc104
+}
+
 update_keymap() {
 
+	if [ "$XKB_RULES" = "evdev" ]; then
+		XKB_RULES="xfree86"
+	fi
 	# prepare for setxkbmap call
 	[ -n "$XKB_RULES" ] && XKB_RULES="-rules $XKB_RULES"
 	[ -n "$XKB_MODEL" ] && XKB_MODEL="-model $XKB_MODEL"
 	[ -n "$XKB_LAYOUT" ] && XKB_LAYOUT="-layout $XKB_LAYOUT"
 	[ -n "$XKB_VARIANT" ] && XKB_VARIANT="-variant $XKB_VARIANT"
-	[ -n "$XKB_OPTIONS" ] && XKB_OPTIONS="-options $XKB_OPTIONS"
+	[ -n "$XKB_OPTIONS" ] && XKB_OPTIONS="-option $XKB_OPTIONS"
 
 	# update keyboard map
 	setxkbmap $XKB_RULES $XKB_MODEL $XKB_LAYOUT $XKB_VARIANT $XKB_OPTIONS
 }
 
 ### main ###
+$X2GO_LIB_PATH/x2gosyslog "$0" "notice" "Setting X keyboard according to ${X2GO_CLIENT_KBD_FILE}"
 read_keyboard_file
+reset_keymap
 update_keymap
+
diff --git a/x2goserver/bin/x2gostartagent b/x2goserver/bin/x2gostartagent
index 739a0c2..abf1422 100755
--- a/x2goserver/bin/x2gostartagent
+++ b/x2goserver/bin/x2gostartagent
@@ -28,6 +28,8 @@ X2GO_PORT=49 #First port for X2GO=50
 SSH_PORT=30000 #First ssh port 30001
 
 X2GO_ROOT="${HOME}/.x2go"
+export NX_ROOT=$X2GO_ROOT
+
 REMOTE=localhost
 
 X2GO_CLIENT=`echo "$SSH_CLIENT" | awk '{print $1}'`
@@ -122,9 +124,13 @@ fi
 
 USED_DISPLAYS=`$X2GO_LIB_PATH/x2gogetdisplays $HOSTNAME`
 
-#Get all used in system ports from X2Go database and netstat output
-USED_PORTS=`$X2GO_LIB_PATH/x2gogetports $HOSTNAME ; netstat -nt -all | awk '{ n=split($0,lines,"\n"); for(i=1;i<=n;i++){split (lines[i],words," ");delim=split(words[4],ports,":"); if(delim>1)printf ("|%s|\n",ports[delim])} }'`
-
+#Get all used in system ports from X2Go database and ss output
+ss=$(PATH="$PATH:/usr/sbin:/sbin" type -P ss);
+USED_PORTS=$(
+	"$X2GO_LIB_PATH/x2gogetports" "$HOSTNAME";
+	"$ss" -lnt |
+	perl -lne 'print$d{$2}="|$2|"if/^(\S+\s+){2}\S+:(\d+)/&&!exists$d{$2}';
+);
 
 while [ "$OUTPUT"  != "inserted" ]; do
 	X2GO_PORT=$(($X2GO_PORT + 1))
@@ -188,6 +194,14 @@ fi
 
 SESSION_DIR="${X2GO_ROOT}/C-${SESSION_NAME}"
 
+# do not use $TMP or $TEMP here, the session.log file location has to be accessible by root
+SESSION_LOG="/tmp/.x2go-${USER}/session-C-${SESSION_NAME}.log"
+mkdir -p $(dirname "${SESSION_LOG}")
+chmod -f 0700 $(dirname "${SESSION_LOG}")
+touch "${SESSION_LOG}"
+chmod -f 0600 "${SESSION_LOG}"
+ln -s "${SESSION_DIR}/session.log" "${SESSION_LOG}"
+
 if [ ! -d "$X2GO_ROOT" ]; then
 	mkdir "$X2GO_ROOT"
 fi
@@ -212,11 +226,10 @@ xauth -f "$XAUTHORITY" add "${HOSTNAME}/unix:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "$
 xauth -f "$XAUTHORITY" add "${HOSTNAME}:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "${X2GO_COOKIE}"
 
 
-if [ "$X2GO_SET_KBD" == "0" ]
-then
-    X2GO_HOST="nx/nx,link=${X2GO_LINK},pack=${X2GO_PACK},limit=0,root=${SESSION_DIR},cache=8M,images=32M,type=${X2GO_TYPE},id=${SESSION_NAME},cookie=$X2GO_COOKIE,errors=${SESSION_DIR}/session.log,kbtype=null/null,geometry=${X2GO_GEOMETRY},resize=${X2GO_RESIZE},fullscreen=${X2GO_FULLSCREEN},accept=${REMOTE},listen=${GR_PORT},client=linux,menu=0"
+if [ "$X2GO_SET_KBD" == "0" ] || [ "$X2GO_KBD_TYPE" == "auto" ];then
+    X2GO_HOST="nx/nx,link=${X2GO_LINK},pack=${X2GO_PACK},limit=0,root=${SESSION_DIR},cache=8M,images=32M,type=${X2GO_TYPE},id=${SESSION_NAME},cookie=$X2GO_COOKIE,errors=${SESSION_LOG},kbtype=null/null,geometry=${X2GO_GEOMETRY},resize=${X2GO_RESIZE},fullscreen=${X2GO_FULLSCREEN},accept=${REMOTE},listen=${GR_PORT},client=linux,menu=0"
 else
-    X2GO_HOST="nx/nx,link=${X2GO_LINK},pack=${X2GO_PACK},limit=0,root=${SESSION_DIR},cache=8M,images=32M,type=${X2GO_TYPE},id=${SESSION_NAME},cookie=$X2GO_COOKIE,errors=${SESSION_DIR}/session.log,kbtype=${X2GO_KBD_TYPE},geometry=${X2GO_GEOMETRY},resize=${X2GO_RESIZE},fullscreen=${X2GO_FULLSCREEN},accept=${REMOTE},listen=${GR_PORT},client=linux,menu=0"
+    X2GO_HOST="nx/nx,link=${X2GO_LINK},pack=${X2GO_PACK},limit=0,root=${SESSION_DIR},cache=8M,images=32M,type=${X2GO_TYPE},id=${SESSION_NAME},cookie=$X2GO_COOKIE,errors=${SESSION_LOG},kbtype=${X2GO_KBD_TYPE},geometry=${X2GO_GEOMETRY},resize=${X2GO_RESIZE},fullscreen=${X2GO_FULLSCREEN},accept=${REMOTE},listen=${GR_PORT},client=linux,menu=0"
 fi
 
 
@@ -246,12 +259,13 @@ x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSI
 SESSION_WINDOW_TITLE="X2GO-${SESSION_NAME}"
 
 if  [ "$X2GO_STYPE" == "S" ]; then
-	x2goagent $X2GODPIOPTION_ -$SESSION_TYPE -auth "$XAUTHORITY" -shadow $SHADOW_DESKTOP -shadowmode $SHADOW_MODE -geometry ${X2GO_GEOMETRY} -name "${SESSION_WINDOW_TITLE}"  "${NX_AGENT}" 2>"${SESSION_DIR}/session.log" &
+	# set NX_TEMP to /tmp, make sure x2goagent starts when pam_tmpdir.so is in use
+	NX_TEMP=/tmp x2goagent -nolisten tcp $X2GODPIOPTION_ -$SESSION_TYPE -auth "$XAUTHORITY" -shadow $SHADOW_DESKTOP -shadowmode $SHADOW_MODE -geometry ${X2GO_GEOMETRY} -name "${SESSION_WINDOW_TITLE}"  "${NX_AGENT}" 2>"${SESSION_LOG}" &
 else
-	x2goagent $X2GODPIOPTION_ $XDMCPOPT -$SESSION_TYPE $NOEXITPARAM -auth "$XAUTHORITY" -geometry ${X2GO_GEOMETRY} -name "${SESSION_WINDOW_TITLE}"  "${NX_AGENT}" 2>"${SESSION_DIR}/session.log" &
+	# set NX_TEMP to /tmp, make sure x2goagent starts when pam_tmpdir.so is in use
+	NX_TEMP=/tmp x2goagent -nolisten tcp $X2GODPIOPTION_ $XDMCPOPT -$SESSION_TYPE $NOEXITPARAM -auth "$XAUTHORITY" -geometry ${X2GO_GEOMETRY} -name "${SESSION_WINDOW_TITLE}"  "${NX_AGENT}" 2>"${SESSION_LOG}" &
 fi
 
-
 X2GO_AGENT_PID=$!
 X2GO_AGENT_RETVAL=$?
 test $X2GO_AGENT_RETVAL && {
@@ -272,6 +286,11 @@ X2GO_SND_PORT=1024
 
 $X2GO_LIB_PATH/x2gocreatesession "$X2GO_COOKIE" "$X2GO_AGENT_PID" "$X2GO_CLIENT" "$GR_PORT" "$SOUND_PORT" "$FS_PORT" "$SESSION_NAME" > /dev/null
 
+if [ "$X2GO_SET_KBD" == "0" ] || [ "$X2GO_KBD_TYPE" != "auto" ]; then
+	$X2GO_LIB_PATH/x2gosyslog "$0" "info" "blocking creation of agent's keyboard file ${SESSION_DIR}/keyboard as requested by session startup command"
+	mkdir -p ${SESSION_DIR}/keyboard
+fi
+
 echo $X2GO_PORT
 echo $X2GO_COOKIE
 echo $X2GO_AGENT_PID
diff --git a/x2goserver/bin/x2goumount-session b/x2goserver/bin/x2goumount-session
index f79a733..22cfefb 100755
--- a/x2goserver/bin/x2goumount-session
+++ b/x2goserver/bin/x2goumount-session
@@ -34,13 +34,17 @@ setlogmask( LOG_UPTO(x2gologlevel()) );
 
 syslog('info', "x2goumount-session has been called with options: @ARGV");
 
-my $tmp_dir = $ENV{'TMP'} || '/tmp';
+my $tmp_dir = '/tmp';
 
 my $session=shift;
 my $only_path=shift;
 my $uname=$ENV{'USER'};
 my $serv=hostname;
 
+my $mdir="$tmp_dir/.x2go-$ENV{'USER'}/media";
+my $spooldir="$tmp_dir/.x2go-$ENV{'USER'}/spool";
+my $mimeboxdir="$tmp_dir/.x2go-$ENV{'USER'}/mimebox";
+
 if ($only_path)
 {
 	$only_path=~s/\/ramdrive\/mnt\///;
@@ -56,9 +60,8 @@ if ($only_path)
 	$only_path=~ s/\\040/_/g;
 
 	### FIXME: handle CDROM and Removable Media mounts here, as well!!!
-
-	$only_path="$tmp_dir/$ENV{'USER'}_media/disk/$only_path";
-	#                                       ^^^^
+	$only_path="$tmp_dir/.x2go-$ENV{'USER'}/media/disk/$only_path";
+	#                                             ^^^^
 	syslog('debug',"x2goumount-session unmounting $only_path only");
 }
 
@@ -124,7 +127,7 @@ for ($i=0;$i<@outp;$i++)
 break:
 	if ($found)
 	{
-		if (system( "fusermount -u @line[1]" ) == 0)
+		if (system( "cd $tmp_dir && fusermount -u @line[1] && cd - >/dev/null" ) == 0)
 		{
 			syslog('notice', "successfully unmounted @line[1]");
 			$found=0;
@@ -193,6 +196,20 @@ break:
 cont:
 }
 
+# try to eliminate parent directory of mountpoints
+rmdir ("$mdir/disk");
+rmdir ("$mdir/cd");
+rmdir ("$mdir/rm");
+rmdir ("$mdir");
+if (( ! -d "$mdir" ) && ( -l "$ENV{'HOME'}/media" ))
+{
+	system("rm -f $ENV{'HOME'}/media");
+}
+rmdir ("$spooldir/C-$session");
+rmdir ("$spooldir");
+rmdir ("$mimeboxdir/C-$session");
+rmdir ("$mimeboxdir");
+
 # closing syslog 
 closelog;
 
diff --git a/x2goserver/lib/x2godbwrapper.pm b/x2goserver/lib/x2godbwrapper.pm
index 2690544..f290b71 100644
--- a/x2goserver/lib/x2godbwrapper.pm
+++ b/x2goserver/lib/x2godbwrapper.pm
@@ -88,11 +88,12 @@ use base 'Exporter';
 our @EXPORT=('db_listsessions','db_listsessions_all', 'db_getservers', 'db_getagent', 'db_resume', 'db_changestatus', 'db_getstatus', 
              'db_getdisplays', 'db_insertsession', 'db_getports', 'db_insertport', 'db_rmport', 'db_createsession', 'db_insertmount', 
              'db_getmounts', 'db_deletemount', 'db_getdisplay', 'dbsys_getmounts', 'dbsys_listsessionsroot', 
-             'dbsys_listsessionsroot_all', 'dbsys_rmsessionsroot');
+             'dbsys_listsessionsroot_all', 'dbsys_rmsessionsroot', 'dbsys_deletemounts');
 
 sub dbsys_rmsessionsroot
 {
 	my $sid=shift or die "argument \"session_id\" missed";
+	dbsys_deletemounts($sid);
 	if($backend eq 'postgres')
 	{
 		my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", 
@@ -109,6 +110,24 @@ sub dbsys_rmsessionsroot
 	}
 }
 
+sub dbsys_deletemounts
+{
+        my $sid=shift or die "argument \"session_id\" missed";
+        if ($backend eq 'postgres')
+        {
+                my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_;
+                my $sth=$dbh->prepare("delete from mounts where session_id='$sid'");
+                $sth->execute();
+                $sth->finish();
+                $dbh->disconnect();
+        }
+        if ($backend eq 'sqlite')
+        {
+                `$x2go_lib_path/x2gosqlitewrapper deletemounts $sid`;
+        }
+        syslog('debug', "dbsys_deletemounts called, session ID: $sid");
+}
+
 sub dbsys_listsessionsroot
 {
 	my $server=shift or die "argument \"server\" missed";
diff --git a/x2goserver/lib/x2gosqlitewrapper.pl b/x2goserver/lib/x2gosqlitewrapper.pl
index 94e4785..50b5e88 100755
--- a/x2goserver/lib/x2gosqlitewrapper.pl
+++ b/x2goserver/lib/x2gosqlitewrapper.pl
@@ -153,6 +153,20 @@ elsif($cmd eq  "deletemount")
 	$sth->finish();
 }
 
+elsif($cmd eq  "deletemounts")
+{
+        my $sid=shift or die "argument \"session_id\" missed";
+        check_user($sid);
+        my $sth=$dbh->prepare("delete from mounts where session_id=?");
+        $sth->execute($sid);
+        if ($sth->err())
+        {
+                syslog('error', "deletemounts (SQLite3 session db backend) failed with exitcode: $sth->err()");
+                die();
+        }
+        $sth->finish();
+}
+
 elsif($cmd eq  "insertmount")
 {
 	my $sid=shift or die "argument \"session_id\" missed";
diff --git a/x2goserver-pyhoca/man/man8/x2gosetkeyboard.8 b/x2goserver/man/man8/x2gosetkeyboard.8
similarity index 100%
rename from x2goserver-pyhoca/man/man8/x2gosetkeyboard.8
rename to x2goserver/man/man8/x2gosetkeyboard.8
diff --git a/x2goserver/sbin/x2gocleansessions b/x2goserver/sbin/x2gocleansessions
index 6e21482..aaed31d 100755
--- a/x2goserver/sbin/x2gocleansessions
+++ b/x2goserver/sbin/x2gocleansessions
@@ -55,7 +55,7 @@ sub check_stat
 {
 	my $sess=shift;
 	my $user=shift;
-	my $log="~$user/.x2go/C-$sess/session.log";
+	my $log="/tmp/.x2go-${user}/session-C-${sess}.log";
 	my $text=`tail -1 $log 2>/dev/null`;
 	if ($text =~ m/Session suspended/)
 	{
@@ -93,7 +93,6 @@ elsif ($pid == 0 )
 
 	while(sleep 5)
 	{
-		$serv=`hostname`;
 		my $outp=`$x2go_lib_path/x2golistsessions_sql $serv 2>/dev/null`;
 		my @outp=split("\n","$outp");
 		for (my $i=0;$i<@outp;$i++)
@@ -119,8 +118,8 @@ elsif ($pid == 0 )
 					if (!check_stat(@sinfo[1], at sinfo[11]))
 					{
 						system("su @sinfo[11] -c  \"$x2go_lib_path/x2gochangestatus 'S' @sinfo[1] \" > /dev/null");
-						syslog("@sinfo[1] is suspended, changing status from @sinfo[4] to S");
-						syslog("@sinfo[1]: unmounting all shares");
+						syslog('debug', "@sinfo[1] is suspended, changing status from @sinfo[4] to S");
+						syslog('debug', "@sinfo[1]: unmounting all shares");
 						system( "su @sinfo[11] -c \"export HOSTNAME && x2goumount-session @sinfo[1]\" 2> /dev/null");
 					}
 				}
diff --git a/x2goserver/sbin/x2golistsessions_root b/x2goserver/sbin/x2golistsessions_root
index dddcae3..71fc5dd 100755
--- a/x2goserver/sbin/x2golistsessions_root
+++ b/x2goserver/sbin/x2golistsessions_root
@@ -34,7 +34,7 @@ sub check_stat
 {
 	my $sess=shift;
 	my $user=shift;
-	my $log="~$user/.x2go/C-$sess/session.log";
+	my $log="/tmp/.x2go-${user}/session-C-${sess}.log";
 	my $text=`tail -1 $log 2>/dev/null`;
 	if ($text =~ m/Session suspended/)
 	{
diff --git a/x2goserver/share/x2gofeature.d/x2goserver.features b/x2goserver/share/x2gofeature.d/x2goserver.features
index 70313d2..db4aaf2 100755
--- a/x2goserver/share/x2gofeature.d/x2goserver.features
+++ b/x2goserver/share/x2gofeature.d/x2goserver.features
@@ -34,6 +34,8 @@ case "$X2GO_FEATURE" in
     "X2GO_UMOUNTSESSION_ALL") echo "ok"; exit 0;;
     "X2GO_UMOUNTSESSION_ONLYPATH") echo "ok"; exit 0;;
     "X2GO_PUBLISHED_APPLICATIONS") echo "ok"; exit 0;;
+    "X2GO_SERVERSIDE_DESKTOPCOMMANDS") echo "ok"; exit 0;;
+    "X2GO_SET_KEYBOARD") echo "ok"; exit 0;;
     *) exit -1;;
 
 esac


hooks/post-receive
-- 
x2goserver.git (X2Go Server)

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 "x2goserver.git" (X2Go Server).




More information about the x2go-commits mailing list