The branch, build-main has been updated via 988da7922e3dc848d49c42ad2b6cff8fb2783297 (commit) via 763775ea379d06d28340bf9f9ae55e1242044692 (commit) via c7c08d58deb17843064a18749af07124b13a4cf5 (commit) via c9abfa3b2b358c183e06b78e725ebb7d5b5e0750 (commit) via 1974cdcefbe9e30bb78c3e9eff74d863062d1cf7 (commit) via 9c0321a3a7ebe21afba303397cdaec61f44b5fef (commit) via 25339e0d943a7592b1fe776d2ec08be6d9a723e2 (commit) via 183e55caf0729743747154bedb87776dc51fb6b1 (commit) via b1de1ed47501af09628afbdb15fff8130afdfe7a (commit) via 839ab4f783081aecf5667588c791f7ef5986568c (commit) via add1c479ab49cda6325f89ba1cbc45d57f8a1685 (commit) via d1a5d757ef2e45912f2f58162a6e6c39fa482d13 (commit) via 6d06ba1e3e965314e6a8753b11e69aeb45f8b5ad (commit) via 65b0817cef86ea0ee0085d539571bd4e689c6055 (commit) via e298bd19efb2fc0b1e7d1ec256332f8d9871d2fd (commit) via b4684ddfafa899ff10de734b9b0957dcd38909c2 (commit) via 305f7e897420aa9b0e151ffd37b7e1dd62def9e8 (commit) via adabd159ef48fad1bb827c76c17a2604d30ec4b5 (commit) via cefc9b0522ff5a9c5b996263961c94d8b5a56e62 (commit) via cc498e94b2e95ac0c4ef92a01732906065b25e8d (commit) via 3650aefe3e6399040a0fff6ccf5d174ab1d3b65d (commit) via 9da2c4d6265d79db87121bb529901759f3c2af4f (commit) via db9fa7f16780b11876c1b66399be76929feaea03 (commit) via 0253416b5e4b2e90b0a142b9219c3e808def41d8 (commit) via 4f8e5f05cf758b6b7d98cc563da553b05b443cd2 (commit) via b1536548a685d8fc96640a42fdea53e5281a9072 (commit) via 51771f645ffa60d561e156847dbc79cce6b41d4d (commit) via c557ccdfbfac96bfa63e14d522999a20a7b2c57a (commit) via b5a057b8b849d74bae0a1aabc16989ca594a5b6a (commit) via c4a1ea405879b07d351b6c10da02bb891c02c45b (commit) via 53a830ca3b3ecde7acab042323f00c988756c47d (commit) via ce30528b3b0ba6252e6617a835fd0909274a9759 (commit) via 9d58cdf8b93ba5f041bb643d6b28214493cc8353 (commit) via 3a1746539fe58fb31aab0eb6862647d279890edf (commit) via 745b2b21be2df3a91bf8c0870054cbc2138b37e1 (commit) via 53ce826d7ea804ca27c03e382571bdf5f54ed974 (commit) via b9ece48b618177723721afd452e506bfe521adc5 (commit) via 2cffebd0aab22890d25a3f7539068c95087e9a2e (commit) via 8ac7d8934719d90fcd35769836c02c3e3a54f85b (commit) via 9c621a42b9143d9cfa7f481d3b909693fc6564b2 (commit) via 414d6c5d3fc471d5ede367620801d9268bb5c372 (commit) via 63556d25c3a86f187d16b0e44a5beef76a27bc84 (commit) via dc0e5721b977a248c2b1e0b7e26b4549ed996d92 (commit) from 858d1df7444b742015c0a140b1cc0be26945351a (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 988da7922e3dc848d49c42ad2b6cff8fb2783297 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Feb 22 14:37:50 2012 +0100 release 3.1.0.0 ----------------------------------------------------------------------- Summary of changes: Makefile | 6 + Makefile.docupload | 2 +- debian/changelog | 53 +++++++++ debian/control | 29 +++++ debian/po/POTFILES.in | 1 + debian/po/de.po | 48 ++++++++ debian/po/templates.pot | 41 +++++++ debian/templates | 9 ++ ...-extensions.dirs => x2goserver-fmbindings.dirs} | 0 debian/x2goserver-fmbindings.install | 3 + debian/x2goserver-fmbindings.manpages | 1 + ...rver.preinst => x2goserver-fmbindings.postinst} | 26 ++--- ...rinting.postrm => x2goserver-fmbindings.postrm} | 32 +++--- debian/x2goserver.config | 16 +++ debian/x2goserver.docs | 1 + debian/x2goserver.postinst | 3 + x2goserver-compat/Makefile | 2 +- x2goserver-compat/VERSION.x2goserver-compat | 2 +- x2goserver-compat/man/man8/x2gosuspend-agent.8 | 2 +- x2goserver-compat/man/man8/x2gosuspend.8 | 2 +- x2goserver-compat/man/man8/x2goterminate.8 | 2 +- x2goserver-extensions/Makefile | 2 +- .../VERSION.x2goserver-extensions | 2 +- .../bin/x2goserver-run-extensions | 6 +- .../man/man8/x2goserver-run-extensions.8 | 2 +- .../Makefile | 23 +---- .../VERSION.x2goserver-fmbindings | 1 + .../bin/x2gofm | 15 ++-- x2goserver-fmbindings/man/man8/x2gofm.8 | 26 +++++ .../share/applications/x2gofm.desktop | 9 ++ .../share/mime/packages/sshfs-x2go.xml | 21 ++++ .../x2gofeature.d/x2goserver-fmbindings.features | 10 +- x2goserver-printing/Makefile | 2 +- x2goserver-printing/VERSION.x2goserver-printing | 2 +- x2goserver-printing/man/man8/x2goprint.8 | 2 +- x2goserver-pyhoca/Makefile | 2 +- x2goserver-pyhoca/VERSION.x2goserver-pyhoca | 2 +- x2goserver-pyhoca/bin/x2gosetkeyboard | 10 +- x2goserver-pyhoca/man/man8/x2gosetkeyboard.8 | 2 +- x2goserver-xsession/Makefile | 2 +- x2goserver-xsession/VERSION.x2goserver-xsession | 2 +- x2goserver/Makefile | 2 +- x2goserver/VERSION.x2goserver | 2 +- x2goserver/bin/x2gocmdexitmessage | 2 +- x2goserver/bin/x2gofeature | 2 +- x2goserver/bin/x2gomountdirs | 54 ++++++---- x2goserver/bin/x2goresume-session | 113 +++++++++++++++---- x2goserver/bin/x2goruncommand | 28 +++--- x2goserver/bin/x2gostartagent | 105 +++++++++--------- x2goserver/bin/x2gosuspend-session | 22 ++-- x2goserver/bin/x2goterminate-session | 22 ++-- x2goserver/bin/x2goumount-session | 53 ++++++---- x2goserver/bin/x2goversion | 4 +- x2goserver/doc/README.upgrade-pgsql-database | 42 +++++++ x2goserver/lib/x2godbwrapper.pm | 56 +++++++--- x2goserver/lib/x2goresume | 5 +- x2goserver/lib/{x2goinsertport => x2gormport} | 3 +- x2goserver/lib/x2gosqlitewrapper.pl | 24 ++++- x2goserver/man/man8/x2gobasepath.8 | 2 +- x2goserver/man/man8/x2gocleansessions.8 | 2 +- x2goserver/man/man8/x2gocmdexitmessage.8 | 2 +- x2goserver/man/man8/x2godbadmin.8 | 2 +- x2goserver/man/man8/x2gofeature.8 | 2 +- x2goserver/man/man8/x2gogetservers.8 | 25 +++++ x2goserver/man/man8/x2golistdesktops.8 | 4 +- x2goserver/man/man8/x2golistmounts.8 | 2 +- x2goserver/man/man8/x2golistsessions.8 | 2 +- x2goserver/man/man8/x2golistsessions_root.8 | 2 +- x2goserver/man/man8/x2gomountdirs.8 | 2 +- x2goserver/man/man8/x2goresume-session.8 | 2 +- x2goserver/man/man8/x2goruncommand.8 | 2 +- x2goserver/man/man8/x2gosessionlimit.8 | 2 +- x2goserver/man/man8/x2goshowblocks.8 | 2 +- x2goserver/man/man8/x2gostartagent.8 | 2 +- x2goserver/man/man8/x2gosuspend-session.8 | 2 +- x2goserver/man/man8/x2goterminate-session.8 | 2 +- x2goserver/man/man8/x2goumount-session.8 | 2 +- x2goserver/man/man8/x2goversion.8 | 2 +- x2goserver/sbin/x2gocleansessions | 5 +- x2goserver/sbin/x2godbadmin | 4 +- x2goserver/share/x2go/versions/VERSION.x2goserver | 1 - 81 files changed, 741 insertions(+), 297 deletions(-) create mode 100644 debian/po/POTFILES.in create mode 100644 debian/po/de.po create mode 100644 debian/po/templates.pot create mode 100644 debian/templates copy debian/{x2goserver-extensions.dirs => x2goserver-fmbindings.dirs} (100%) create mode 100644 debian/x2goserver-fmbindings.install create mode 100644 debian/x2goserver-fmbindings.manpages copy debian/{x2goserver.preinst => x2goserver-fmbindings.postinst} (66%) copy debian/{x2goserver-printing.postrm => x2goserver-fmbindings.postrm} (59%) create mode 100755 debian/x2goserver.config copy {x2goserver-pyhoca => x2goserver-fmbindings}/Makefile (62%) create mode 100644 x2goserver-fmbindings/VERSION.x2goserver-fmbindings copy x2goserver/bin/x2gobasepath => x2goserver-fmbindings/bin/x2gofm (75%) create mode 100644 x2goserver-fmbindings/man/man8/x2gofm.8 create mode 100644 x2goserver-fmbindings/share/applications/x2gofm.desktop create mode 100644 x2goserver-fmbindings/share/mime/packages/sshfs-x2go.xml copy x2goserver-xsession/share/x2gofeature.d/x2goserver-xsession.features => x2goserver-fmbindings/share/x2go/x2gofeature.d/x2goserver-fmbindings.features (74%) create mode 100644 x2goserver/doc/README.upgrade-pgsql-database copy x2goserver/lib/{x2goinsertport => x2gormport} (95%) create mode 100644 x2goserver/man/man8/x2gogetservers.8 delete mode 120000 x2goserver/share/x2go/versions/VERSION.x2goserver The diff of changes is: diff --git a/Makefile b/Makefile index 77ae676..da9d5db 100755 --- a/Makefile +++ b/Makefile @@ -11,6 +11,7 @@ build_man2html: $(MAKE) -C x2goserver-compat $@ $(MAKE) -C x2goserver-extensions $@ $(MAKE) -C x2goserver-xsession $@ + $(MAKE) -C x2goserver-fmbindings $@ $(MAKE) -C x2goserver-pyhoca $@ clean: @@ -19,6 +20,7 @@ clean: $(MAKE) -C x2goserver-compat $@ $(MAKE) -C x2goserver-extensions $@ $(MAKE) -C x2goserver-xsession $@ + $(MAKE) -C x2goserver-fmbindings $@ $(MAKE) -C x2goserver-pyhoca $@ build-arch: @@ -27,6 +29,7 @@ build-arch: $(MAKE) -C x2goserver-compat $@ $(MAKE) -C x2goserver-extensions $@ $(MAKE) -C x2goserver-xsession $@ + $(MAKE) -C x2goserver-fmbindings $@ $(MAKE) -C x2goserver-pyhoca $@ build-indep: @@ -35,6 +38,7 @@ build-indep: $(MAKE) -C x2goserver-compat $@ $(MAKE) -C x2goserver-extensions $@ $(MAKE) -C x2goserver-xsession $@ + $(MAKE) -C x2goserver-fmbindings $@ $(MAKE) -C x2goserver-pyhoca $@ install: @@ -43,6 +47,7 @@ install: $(MAKE) -C x2goserver-compat $@ $(MAKE) -C x2goserver-extensions $@ $(MAKE) -C x2goserver-xsession $@ + $(MAKE) -C x2goserver-fmbindings $@ $(MAKE) -C x2goserver-pyhoca $@ uninstall: @@ -51,4 +56,5 @@ uninstall: $(MAKE) -C x2goserver-compat $@ $(MAKE) -C x2goserver-extensions $@ $(MAKE) -C x2goserver-xsession $@ + $(MAKE) -C x2goserver-fmbindings $@ $(MAKE) -C x2goserver-pyhoca $@ diff --git a/Makefile.docupload b/Makefile.docupload index 70dfc1c..8c9e770 100644 --- a/Makefile.docupload +++ b/Makefile.docupload @@ -15,7 +15,7 @@ all: doc doc: clean docbuild docupload docbuild: - make -f Makefile build_man2html + ${MAKE} -f Makefile build_man2html docupload: ssh -l${DOC_USER} ${DOC_HOST} "{ mkdir -p ${DOC_PATCH_x2goserver}; rm -Rfv ${DOC_PATCH_x2goserver}/*; }" diff --git a/debian/changelog b/debian/changelog index b11ad14..84f0a9c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,56 @@ +x2goserver (3.1.0.0-0~x2go1) unstable; urgency=low + + [ Oleksandr Shneyder ] + * New upstream version (3.1.0.0): + - remove ports used by X2Go session from database after session was finished + if postgres backend is used. + - before resuming X2Go session check if reserved ports still available + in other case find new free ports, save them in database and send to + x2goclient + - run netstat -tl --all to find free ports for graphic, sound and sshfs + tunnels in x2gostartagent and x2goresume-session + + [ Milan Knížek ] + * New upstream version (3.1.0.0): + - Fix removal of desktop link on x2goumount-session if local folder of a + Windows client gets unmounted. + - Remove redundant -S option from x2goagent start-up command line. + - Use -f $XAUTHORITY with xauth calls. + + [ Sören Plönnigs ] + * New upstream version (3.1.0.0): + - Only run kdialog/zenity from x2goumount-session if either of them exists + in the system's $PATH. + + [ Jan Engelhardt ] + * New upstream version (3.1.0.0): + - Use /cgi-bin/man/ path in web'ified man pages. + - Use ,,${MAKE}'' instead of ,,make'' in Makefile. + + [ Mike Gabriel ] + * New upstream version (3.1.0.0): + - Provide new package x2goserver-fmbindings. Derived from a package draft + provided by Milan Knížek (Thanks!). + - Do not create desktop icons for rootless (i.e. non-desktop) sessions. + - Allow other $XAUTHORITY values than the default ($HOME/.Xauthority). + - For x2gomountdirs / x2goumount-session allow other TMP paths than + /tmp. Use ENV{'TMP'} instead, unless it is empty. Then use /tmp. + - Place quotations where appropriate into shell scripts. + - Fix call to x2goterminate-desktopsharing in x2goruncommand. + - Tolerate user names containing "-" characters (SQLite DB backend). + - Make sure x2gocleansessions close _all_ open file handles after + forking as a daemon. + - Add copyright header for x2gofm script. + - Add man page for x2gogetservers script. + - Add man page for x2gofm wrapper script. + - Update date and release version in man pages. + * Let x2goserver package suggest x2goserver-fmbindings. + * Add package upgrade warning for installation using PostgreSQL. The + upgrade warning refers to README.upgrade-pgsql-database. + * x2goserver-fmbindings does not have to depend on ${shlibs:Depends}. + + -- Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Wed, 22 Feb 2012 14:37:34 +0100 + x2goserver (3.0.99.10-0~x2go1) unstable; urgency=low [ Mike Gabriel ] diff --git a/debian/control b/debian/control index 0a51bcd..a8578fe 100644 --- a/debian/control +++ b/debian/control @@ -43,6 +43,7 @@ Suggests: x2goserver-printing (= ${source:Version}), x2goserver-compat (= ${source:Version}), x2goserver-xsession (= ${source:Version}), + x2goserver-fmbindings (= ${source:Version}), x2goserver-pyhoca (= ${source:Version}) Breaks: x2goserver-one, @@ -167,6 +168,33 @@ Description: X2Go server daemon scripts (Xsession runner) startups and many more Xsession related features on X2Go session login automagically. +Package: x2goserver-fmbindings +Architecture: all +Depends: + ${misc:Depends}, + x2goserver (>= ${source:Version}), x2goserver (<< ${source:Version}.1~), + desktop-file-utils, + xdg-utils +Description: Generic (freedesktop-based) file manager bindings for X2Go + X2Go is a server based computing environment with + - session resuming + - low bandwith support + - LDAP support + - client side mass storage mounting support + - audio support + - authentication by smartcard and USB stick + . + x2goserver-fmbindings contains generic MIME type information + for X2Go's local folder sharing. It can be used with all + freedesktop.org compliant desktop shells. + . + However, this package will be superseded by other, more specific + destkop binding components, if installed and being used with the + corresponding desktop shell: + - under LXDE by x2golxdebindings + - under GNOME by x2gognomebindings + - under KDE4 by plasma-widget-x2go + Package: x2goserver-pyhoca Architecture: all Depends: @@ -189,3 +217,4 @@ Description: X2Go server daemon scripts (add-ons for pyhoca client) Functionalities this package adds: - renaming of session window titles - setting detailled X keyboard parameters + diff --git a/debian/po/POTFILES.in b/debian/po/POTFILES.in new file mode 100644 index 0000000..cef83a3 --- /dev/null +++ b/debian/po/POTFILES.in @@ -0,0 +1 @@ +[type: gettext/rfc822deb] templates diff --git a/debian/po/de.po b/debian/po/de.po new file mode 100644 index 0000000..11de240 --- /dev/null +++ b/debian/po/de.po @@ -0,0 +1,48 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: x2goserver@packages.debian.org\n" +"POT-Creation-Date: 2012-02-22 13:45+0100\n" +"PO-Revision-Date: 2012-02-22 13:52+0100\n" +"Last-Translator: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: text +#. Description +#: ../templates:1001 +msgid "X2Go Server / PostgreSQL Upgrade" +msgstr "X2Go Server / PostgreSQL Upgrade" + +#. Type: text +#. Description +#: ../templates:1001 +msgid "You have configured X2Go Server with PostgreSQL as session DB backend and you are upgrading x2goserver from a version minor to 3.1.0.0." +msgstr "Ihr X2Go Server nutzt eine PostgreSQL Datenbank, um X2Go Sitzungsdaten zu verwalten, und Sie aktualisieren gerade das Paket x2goserver von einer Version kleiner als 3.1.0.0." + +#. Type: text +#. Description +#: ../templates:1001 +#| msgid "" +#| "Please follow these PostgreSQL DB upgrade instructions before you " +#| "continue using your X2Go Server: /usr/share/doc/x2goserver/README.upgrade-" +#| "pgsql-database" +msgid "Please follow these PostgreSQL DB upgrade instructions before you continue using your X2Go Server: /usr/share/doc/x2goserver/README.upgrade-pgsql-database.gz" +msgstr "Bitte befolgen Sie daher die PostgreSQL-Aktualisierungshinweise bevor sie mit der Weiternutzung Ihres X2Go Servers fortfahren: /usr/share/doc/x2goserver/README.upgrade-pgsl-database.gz" + diff --git a/debian/po/templates.pot b/debian/po/templates.pot new file mode 100644 index 0000000..657ffb4 --- /dev/null +++ b/debian/po/templates.pot @@ -0,0 +1,41 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: x2goserver@packages.debian.org\n" +"POT-Creation-Date: 2012-02-22 13:45+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: text +#. Description +#: ../templates:1001 +msgid "X2Go Server / PostgreSQL Upgrade" +msgstr "" + +#. Type: text +#. Description +#: ../templates:1001 +msgid "" +"You have configured X2Go Server with PostgreSQL as session DB backend and " +"you are upgrading x2goserver from a version minor to 3.1.0.0." +msgstr "" + +#. Type: text +#. Description +#: ../templates:1001 +msgid "" +"Please follow these PostgreSQL DB upgrade instructions before you continue " +"using your X2Go Server: /usr/share/doc/x2goserver/README.upgrade-pgsql-" +"database.gz" +msgstr "" diff --git a/debian/templates b/debian/templates new file mode 100644 index 0000000..db48433 --- /dev/null +++ b/debian/templates @@ -0,0 +1,9 @@ +Template: x2goserver/postgresql-upgrade-3_1_0_0 +Type: text +_Description: X2Go Server / PostgreSQL Upgrade + You have configured X2Go Server with PostgreSQL as session DB backend and + you are upgrading x2goserver from a version minor to 3.1.0.0. + . + Please follow these PostgreSQL DB upgrade instructions before you continue + using your X2Go Server: + /usr/share/doc/x2goserver/README.upgrade-pgsql-database.gz diff --git a/debian/x2goserver-extensions.dirs b/debian/x2goserver-fmbindings.dirs similarity index 100% copy from debian/x2goserver-extensions.dirs copy to debian/x2goserver-fmbindings.dirs diff --git a/debian/x2goserver-fmbindings.install b/debian/x2goserver-fmbindings.install new file mode 100644 index 0000000..aeb426e --- /dev/null +++ b/debian/x2goserver-fmbindings.install @@ -0,0 +1,3 @@ +x2goserver-fmbindings/VERSION.x2goserver-fmbindings usr/share/x2go/versions/ +x2goserver-fmbindings/share/* usr/share/ +x2goserver-fmbindings/bin/* usr/bin/ diff --git a/debian/x2goserver-fmbindings.manpages b/debian/x2goserver-fmbindings.manpages new file mode 100644 index 0000000..ec148a6 --- /dev/null +++ b/debian/x2goserver-fmbindings.manpages @@ -0,0 +1 @@ +x2goserver-fmbindings/man/man8/* \ No newline at end of file diff --git a/debian/x2goserver.preinst b/debian/x2goserver-fmbindings.postinst similarity index 66% copy from debian/x2goserver.preinst copy to debian/x2goserver-fmbindings.postinst index 117bb2c..cbe42ae 100755 --- a/debian/x2goserver.preinst +++ b/debian/x2goserver-fmbindings.postinst @@ -1,5 +1,5 @@ #!/bin/sh -# preinst script for x2goserver +# postinst script for x2gognomebindings # # see: dh_installdeb(1) @@ -19,20 +19,18 @@ set -e case "$1" in - install|upgrade) - # 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" - fi - ;; - abort-upgrade) - ;; + configure) + update-desktop-database + update-mime-database /usr/share/mime + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + *) - echo "preinst called with unknown argument \`$1'" >&2 + echo "postinst called with unknown argument \`$1'" >&2 exit 1 - ;; + ;; esac # dh_installdeb will replace this with shell code automatically @@ -41,5 +39,3 @@ esac #DEBHELPER# exit 0 - - diff --git a/debian/x2goserver-printing.postrm b/debian/x2goserver-fmbindings.postrm similarity index 59% copy from debian/x2goserver-printing.postrm copy to debian/x2goserver-fmbindings.postrm index 16b0f1e..4c31ba2 100755 --- a/debian/x2goserver-printing.postrm +++ b/debian/x2goserver-fmbindings.postrm @@ -1,7 +1,10 @@ -#! /bin/sh -# postrm script for x2goserver-printing +#!/bin/sh +# postrm script for x2gognomebindings # # see: dh_installdeb(1) + +set -e + # summary of how this script can be called: # * <postrm> `remove' # * <postrm> `purge' @@ -10,23 +13,22 @@ # * <new-postrm> `abort-install' # * <new-postrm> `abort-install' <old-version> # * <new-postrm> `abort-upgrade' <old-version> -# * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version> -# for details, see /usr/share/doc/packaging-manual/ - -set -e +# * <disappearer's-postrm> `disappear' <overwriter> +# <overwriter-version> +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package case "$1" in - purge) - getent passwd x2goprint >/dev/null && deluser x2goprint - getent group x2goprint >/dev/null && delgroup x2goprint - ;; - remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) - ;; + purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + update-desktop-database + update-mime-database /usr/share/mime + ;; + *) echo "postrm called with unknown argument \`$1'" >&2 - exit 0 - ;; + exit 1 + ;; esac # dh_installdeb will replace this with shell code automatically @@ -34,4 +36,4 @@ esac #DEBHELPER# -exit 0 \ No newline at end of file +exit 0 diff --git a/debian/x2goserver.config b/debian/x2goserver.config new file mode 100755 index 0000000..b7012da --- /dev/null +++ b/debian/x2goserver.config @@ -0,0 +1,16 @@ +#!/bin/sh -e + +# Source debconf library. +. /usr/share/debconf/confmodule + +LASTVERSION=$2 + +if dpkg --compare-versions "$LASTVERSION" lt "3.1.0.0" && \ + [ -e /etc/x2go/x2gosql/sql ] && \ + egrep "^backend=postgres.*" /etc/x2go/x2gosql/sql >/dev/null; then + + db_input critical x2goserver/postgresql-upgrade-3_1_0_0 || true + db_go + +fi + diff --git a/debian/x2goserver.docs b/debian/x2goserver.docs index 6c7d3af..869c67e 100644 --- a/debian/x2goserver.docs +++ b/debian/x2goserver.docs @@ -1 +1,2 @@ x2goserver/.build_man2html/html +x2goserver/doc/* diff --git a/debian/x2goserver.postinst b/debian/x2goserver.postinst index 68d83d7..f1582a8 100755 --- a/debian/x2goserver.postinst +++ b/debian/x2goserver.postinst @@ -5,6 +5,9 @@ set -e +# Source debconf library. +. /usr/share/debconf/confmodule + # summary of how this script can be called: # * <postinst> `configure' <most-recently-configured-version> # * <old-postinst> `abort-upgrade' <new version> diff --git a/x2goserver-compat/Makefile b/x2goserver-compat/Makefile index 576f9ce..6bdc94c 100755 --- a/x2goserver-compat/Makefile +++ b/x2goserver-compat/Makefile @@ -41,7 +41,7 @@ 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) -r $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done + for man_page in $(man_pages); do $(MAN2HTML_BIN) $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done clean: clean_man2html diff --git a/x2goserver-compat/VERSION.x2goserver-compat b/x2goserver-compat/VERSION.x2goserver-compat index 026a698..075493a 100644 --- a/x2goserver-compat/VERSION.x2goserver-compat +++ b/x2goserver-compat/VERSION.x2goserver-compat @@ -1 +1 @@ -3.0.99.10 \ No newline at end of file +3.1.0.0 \ No newline at end of file diff --git a/x2goserver-compat/man/man8/x2gosuspend-agent.8 b/x2goserver-compat/man/man8/x2gosuspend-agent.8 index 4eb6564..0256909 100644 --- a/x2goserver-compat/man/man8/x2gosuspend-agent.8 +++ b/x2goserver-compat/man/man8/x2gosuspend-agent.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2gosuspend-agent 1 "18 May 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2gosuspend-agent 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool (compat)" .SH NAME x2gosuspend-agent \- X2Go Server Script (deprecated, shipped for compatibility with old clients) .SH SYNOPSIS diff --git a/x2goserver-compat/man/man8/x2gosuspend.8 b/x2goserver-compat/man/man8/x2gosuspend.8 index ebb0cac..e7aa661 100644 --- a/x2goserver-compat/man/man8/x2gosuspend.8 +++ b/x2goserver-compat/man/man8/x2gosuspend.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2gosuspend 1 "18 May 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2gosuspend 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool (compat)" .SH NAME x2gosuspend \- X2Go Server Script (deprecated, shipped for compatibility with old clients) .SH SYNOPSIS diff --git a/x2goserver-compat/man/man8/x2goterminate.8 b/x2goserver-compat/man/man8/x2goterminate.8 index 8e170a0..5af4784 100644 --- a/x2goserver-compat/man/man8/x2goterminate.8 +++ b/x2goserver-compat/man/man8/x2goterminate.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2goterminate 1 "18 May 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2goterminate 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool (compat)" .SH NAME x2goterminate \- X2Go Server Script (deprecated, shipped for compatibility with old clients) .SH SYNOPSIS diff --git a/x2goserver-extensions/Makefile b/x2goserver-extensions/Makefile index 02a9525..2fe807c 100755 --- a/x2goserver-extensions/Makefile +++ b/x2goserver-extensions/Makefile @@ -41,7 +41,7 @@ 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) -r $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done + for man_page in $(man_pages); do $(MAN2HTML_BIN) $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done clean: clean_man2html diff --git a/x2goserver-extensions/VERSION.x2goserver-extensions b/x2goserver-extensions/VERSION.x2goserver-extensions index 026a698..075493a 100644 --- a/x2goserver-extensions/VERSION.x2goserver-extensions +++ b/x2goserver-extensions/VERSION.x2goserver-extensions @@ -1 +1 @@ -3.0.99.10 \ No newline at end of file +3.1.0.0 \ No newline at end of file diff --git a/x2goserver-extensions/bin/x2goserver-run-extensions b/x2goserver-extensions/bin/x2goserver-run-extensions index 3df2066..c7b671c 100755 --- a/x2goserver-extensions/bin/x2goserver-run-extensions +++ b/x2goserver-extensions/bin/x2goserver-run-extensions @@ -27,13 +27,13 @@ X2GO_LIB_PATH=`echo -n \$(x2gobasepath)/lib/x2go` $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@" -X2GO_SESSION=$1 -X2GO_MODALITY=$2 +X2GO_SESSION="$1" +X2GO_MODALITY="$2" # scan extensions and execute them find /usr/lib/x2go/extensions/${X2GO_MODALITY}.d/ -maxdepth 1 -mindepth 1 | egrep "/[0-9]{3}_[[:alnum:]]+" | sort | while read x2go_extension; do $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "executing $x2go_extension with option $X2GO_SESSION" - $x2go_extension $X2GO_SESSION &>/dev/null && { + $x2go_extension "$X2GO_SESSION" &>/dev/null && { $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$x2go_extension$(basename $0) for session $X2GO_SESSION has finished sucessfully" } || { $X2GO_LIB_PATH/x2gosyslog "$0" "warn" "$x2go_extension$(basename $0) for session $X2GO_SESSION returned a non-zero exit code, continuing..." diff --git a/x2goserver-extensions/man/man8/x2goserver-run-extensions.8 b/x2goserver-extensions/man/man8/x2goserver-run-extensions.8 index c0fb50b..d63cf6f 100644 --- a/x2goserver-extensions/man/man8/x2goserver-run-extensions.8 +++ b/x2goserver-extensions/man/man8/x2goserver-run-extensions.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2goserver-run-extensions 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2goserver-run-extensions 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2goserver-run-extensions \- Run X2Go Server Extensions .SH SYNOPSIS diff --git a/x2goserver-pyhoca/Makefile b/x2goserver-fmbindings/Makefile similarity index 62% copy from x2goserver-pyhoca/Makefile copy to x2goserver-fmbindings/Makefile index aa6a562..bd9aa69 100755 --- a/x2goserver-pyhoca/Makefile +++ b/x2goserver-fmbindings/Makefile @@ -41,7 +41,7 @@ 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) -r $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done + for man_page in $(man_pages); do $(MAN2HTML_BIN) $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done clean: clean_man2html @@ -51,20 +51,11 @@ clean_man2html: install: install_scripts install_config install_man install_version install_scripts: - $(INSTALL_DIR) $(DESTDIR)$(BINDIR) -# $(INSTALL_DIR) $(DESTDIR)$(SBINDIR) $(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_config: -# $(INSTALL_DIR) $(DESTDIR)$(ETCDIR) -# $(INSTALL_DIR) $(DESTDIR)$(ETCDIR)/x2gosql -# $(INSTALL_DIR) $(DESTDIR)$(ETCDIR)/x2gosql/passwords -# $(INSTALL_FILE) etc/x2goserver.conf $(DESTDIR)$(ETCDIR)/ -# $(INSTALL_FILE) etc/x2gosql/sql $(DESTDIR)$(ETCDIR)/x2gosql install_man: $(INSTALL_DIR) $(DESTDIR)$(MANDIR) @@ -75,22 +66,14 @@ install_man: install_version: $(INSTALL_DIR) $(DESTDIR)$(SHAREDIR) $(INSTALL_DIR) $(DESTDIR)$(SHAREDIR)/versions - $(INSTALL_FILE) VERSION.x2goserver-pyhoca $(DESTDIR)$(SHAREDIR)/versions/VERSION.x2goserver-pyhoca + $(INSTALL_FILE) VERSION.x2goserver-extensions $(DESTDIR)$(SHAREDIR)/versions/VERSION.x2goserver-extensions 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 $(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 uninstall_config: -# $(RM_FILE) $(DESTDIR)$(ETCDIR)/x2goserver.conf -# $(RM_FILE) $(DESTDIR)$(ETCDIR)/x2gosql/sql -# $(RM_DIR) $(DESTDIR)$(ETCDIR) || true -# $(RM_DIR) $(DESTDIR)$(ETCDIR)/x2gosql/passwords || true -# $(RM_DIR) $(DESTDIR)$(ETCDIR)/x2gosql || true uninstall_man: for file in $(BIN_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(MANDIR)/man8/$$file.8.gz; done @@ -98,5 +81,5 @@ uninstall_man: $(RM_DIR) $(DESTDIR)$(MANDIR) || true uninstall_version: - $(RM_FILE) $(DESTDIR)$(SHAREDIR)/versions/VERSION.x2goserver-pyhoca + $(RM_FILE) $(DESTDIR)$(SHAREDIR)/versions/VERSION.x2goserver-extensions $(RM_DIR) $(DESTDIR)$(SHAREDIR)/versions || true diff --git a/x2goserver-fmbindings/VERSION.x2goserver-fmbindings b/x2goserver-fmbindings/VERSION.x2goserver-fmbindings new file mode 100644 index 0000000..f8d7555 --- /dev/null +++ b/x2goserver-fmbindings/VERSION.x2goserver-fmbindings @@ -0,0 +1 @@ +3.1.0.0 diff --git a/x2goserver/bin/x2gobasepath b/x2goserver-fmbindings/bin/x2gofm similarity index 75% copy from x2goserver/bin/x2gobasepath copy to x2goserver-fmbindings/bin/x2gofm index 35f18bd..9070055 100755 --- a/x2goserver/bin/x2gobasepath +++ b/x2goserver-fmbindings/bin/x2gofm @@ -17,14 +17,13 @@ # Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # -# Copyright (C) 2007-2012 Mike Gabriel <mike.gabriel@das-netzwerkteam.de> +# Copyright (C) 2012 Milan Knížek <knizek.confy@gmail.com> +# Copyright (C) 2012 Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> use strict; -use Cwd; -use Cwd q{abs_path}; -use File::Basename; -my $dir = dirname($0); -my $base_path = abs_path("$dir/.."); - -print "$base_path"; +my $fname=shift; +open(F,"<$fname") or die "can't open $fname"; +my $dir=<F>; +close(F); +system( "xdg-open $dir" ); diff --git a/x2goserver-fmbindings/man/man8/x2gofm.8 b/x2goserver-fmbindings/man/man8/x2gofm.8 new file mode 100644 index 0000000..4f49941 --- /dev/null +++ b/x2goserver-fmbindings/man/man8/x2gofm.8 @@ -0,0 +1,26 @@ +'\" -*- coding: utf-8 -*- +.if \n(.g .ds T< \\FC +.if \n(.g .ds T> \\F[\n[.fam]] +.de URL +\\$2 \(la\\$1\(ra\\$3 +.. +.if \n(.g .mso www.tmac +.TH x2gofm 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server" +.SH NAME +x2gofm \- X2Go wrapper for Browsing X2Go Shared Folders +.SH SYNOPSIS +'nh +.fi +.ad l +x2gofm <shared-folder> + +.SH DESCRIPTION +\fBx2gofm\fR is a component of the generic file manager bindings for X2Go's shared folders. +\fBx2gofm\fR uses XDG (namely x2go-open <dir>) to launch the default file browser on all +client-side folders shared via X2Go. +.PP +The default file browser is defined by the freedesktop.org specification of the running desktop +environment. +.SH AUTHOR +This manual has been written by Mike Gabriel <mike.gabriel@das-netzwerkteam.de> for the X2go project +(http://www.x2go.org). diff --git a/x2goserver-fmbindings/share/applications/x2gofm.desktop b/x2goserver-fmbindings/share/applications/x2gofm.desktop new file mode 100644 index 0000000..d747b1e --- /dev/null +++ b/x2goserver-fmbindings/share/applications/x2gofm.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=x2gofm +MimeType=application/sshfsdisk-x2go;application/sshfscdrom-x2go;application/sshfsremovable-x2go +Exec=x2gofm %f +Type=Application +Terminal=false +NoDisplay=true +Icon=file-manager diff --git a/x2goserver-fmbindings/share/mime/packages/sshfs-x2go.xml b/x2goserver-fmbindings/share/mime/packages/sshfs-x2go.xml new file mode 100644 index 0000000..f6e7a0d --- /dev/null +++ b/x2goserver-fmbindings/share/mime/packages/sshfs-x2go.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> + <mime-type type="application/sshfscdrom-x2go"> + <comment>SSHFS CDROM</comment> + <comment xml:lang="de">SSHFS CDROM</comment> + <glob pattern="* (sshfs-cdrom)"/> + <generic-icon name="folder-remote"/> + </mime-type> + <mime-type type="application/sshfsdisk-x2go"> + <comment>SSHFS Disk</comment> + <comment xml:lang="de">SSHFS Freigabe</comment> + <glob pattern="* (sshfs-disk)"/> + <generic-icon name="folder-remote"/> + </mime-type> + <mime-type type="application/sshfsremovable-x2go"> + <comment>SSHFS Removable</comment> + <comment xml:lang="de">SSHFS Gerät</comment> + <glob pattern="* (sshfs-removable)"/> + <generic-icon name="folder-remote"/> + </mime-type> +</mime-info> diff --git a/x2goserver-xsession/share/x2gofeature.d/x2goserver-xsession.features b/x2goserver-fmbindings/share/x2go/x2gofeature.d/x2goserver-fmbindings.features similarity index 74% copy from x2goserver-xsession/share/x2gofeature.d/x2goserver-xsession.features copy to x2goserver-fmbindings/share/x2go/x2gofeature.d/x2goserver-fmbindings.features index cc20f85..c1d5827 100755 --- a/x2goserver-xsession/share/x2gofeature.d/x2goserver-xsession.features +++ b/x2goserver-fmbindings/share/x2go/x2gofeature.d/x2goserver-fmbindings.features @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2007-2012 X2Go Project - http://wiki.x2go.org +# Copyright (C) 2007-2011 X2go Project - http://wiki.x2go.org # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,8 +17,8 @@ # Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # -# Copyright (C) 2011-2012 Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> -# Copyright (C) 2011-2012 Heinz-Markus Graesing <heinz-m.graesing@obviously-nice.de> +# Copyright (C) 2011 Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> +# Copyright (C) 2011 Heinz-Markus Graesing <heinz-m.graesing@obviously-nice.de> X2GO_LIB_PATH=`echo -n \$(x2gobasepath)/lib/x2go` @@ -26,10 +26,10 @@ $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@" X2GO_FEATURE=$1 -# check for X2Go server core features +# check for X2go server core features case "$X2GO_FEATURE" in - "X2GO_XSESSION") echo "ok"; exit 0;; + "X2GO_FMBINDINGS") echo "ok"; exit 0;; *) exit -1;; esac diff --git a/x2goserver-printing/Makefile b/x2goserver-printing/Makefile index 04f93bf..28ee92a 100755 --- a/x2goserver-printing/Makefile +++ b/x2goserver-printing/Makefile @@ -41,7 +41,7 @@ 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) -r $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done + for man_page in $(man_pages); do $(MAN2HTML_BIN) $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done clean: clean_man2html diff --git a/x2goserver-printing/VERSION.x2goserver-printing b/x2goserver-printing/VERSION.x2goserver-printing index 026a698..075493a 100644 --- a/x2goserver-printing/VERSION.x2goserver-printing +++ b/x2goserver-printing/VERSION.x2goserver-printing @@ -1 +1 @@ -3.0.99.10 \ No newline at end of file +3.1.0.0 \ No newline at end of file diff --git a/x2goserver-printing/man/man8/x2goprint.8 b/x2goserver-printing/man/man8/x2goprint.8 index 11a5e0a..1786dee 100644 --- a/x2goserver-printing/man/man8/x2goprint.8 +++ b/x2goserver-printing/man/man8/x2goprint.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2goprint 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2goprint 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2goprint \- Process X2Go Print Job .SH SYNOPSIS diff --git a/x2goserver-pyhoca/Makefile b/x2goserver-pyhoca/Makefile index aa6a562..8fc06fa 100755 --- a/x2goserver-pyhoca/Makefile +++ b/x2goserver-pyhoca/Makefile @@ -41,7 +41,7 @@ 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) -r $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done + for man_page in $(man_pages); do $(MAN2HTML_BIN) $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done clean: clean_man2html diff --git a/x2goserver-pyhoca/VERSION.x2goserver-pyhoca b/x2goserver-pyhoca/VERSION.x2goserver-pyhoca index 026a698..075493a 100644 --- a/x2goserver-pyhoca/VERSION.x2goserver-pyhoca +++ b/x2goserver-pyhoca/VERSION.x2goserver-pyhoca @@ -1 +1 @@ -3.0.99.10 \ No newline at end of file +3.1.0.0 \ No newline at end of file diff --git a/x2goserver-pyhoca/bin/x2gosetkeyboard b/x2goserver-pyhoca/bin/x2gosetkeyboard index 26a50f8..481d01a 100755 --- a/x2goserver-pyhoca/bin/x2gosetkeyboard +++ b/x2goserver-pyhoca/bin/x2gosetkeyboard @@ -38,11 +38,11 @@ test -f ${X2GO_CLIENT_KBD_FILE} || exit 0 read_keyboard_file() { # retrieve keyboard settings from keyboard file in X2Go session dir - XKB_RULES=$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^rules.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1) - XKB_MODEL=$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^model.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1) - XKB_LAYOUT=$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^layout.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1) - XKB_VARIANT=$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^variant.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1) - XKB_OPTIONS=$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^options.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1) + XKB_RULES="$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^rules.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1)" + XKB_MODEL="$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^model.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1)" + XKB_LAYOUT="$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^layout.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1)" + XKB_VARIANT="$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^variant.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1)" + XKB_OPTIONS="$(cat ${X2GO_CLIENT_KBD_FILE} | egrep "^options.*" | head -n1 | cut -d "=" -f2 | cut -d" " -f1)" } diff --git a/x2goserver-pyhoca/man/man8/x2gosetkeyboard.8 b/x2goserver-pyhoca/man/man8/x2gosetkeyboard.8 index 77c5055..a87d080 100644 --- a/x2goserver-pyhoca/man/man8/x2gosetkeyboard.8 +++ b/x2goserver-pyhoca/man/man8/x2gosetkeyboard.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2gosetkeyboard 8 "31 May 2011" "Version 3.0.99.x" "X2Go Server Tool (Extension)" +.TH x2gosetkeyboard 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool (PyHoca)" .SH NAME x2gosetkeyboard \- Allow server-side Keyboard Setting Updates issued by X2Go Client .SH SYNOPSIS diff --git a/x2goserver-xsession/Makefile b/x2goserver-xsession/Makefile index 741ec99..7a56c87 100755 --- a/x2goserver-xsession/Makefile +++ b/x2goserver-xsession/Makefile @@ -43,7 +43,7 @@ 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) -r $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done +# for man_page in $(man_pages); do $(MAN2HTML_BIN) $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done clean: clean_man2html diff --git a/x2goserver-xsession/VERSION.x2goserver-xsession b/x2goserver-xsession/VERSION.x2goserver-xsession index 026a698..075493a 100644 --- a/x2goserver-xsession/VERSION.x2goserver-xsession +++ b/x2goserver-xsession/VERSION.x2goserver-xsession @@ -1 +1 @@ -3.0.99.10 \ No newline at end of file +3.1.0.0 \ No newline at end of file diff --git a/x2goserver/Makefile b/x2goserver/Makefile index d934497..c90f1c9 100755 --- a/x2goserver/Makefile +++ b/x2goserver/Makefile @@ -44,7 +44,7 @@ build-indep: build_man2html 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) -r $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done + for man_page in $(man_pages); do $(MAN2HTML_BIN) $(MAN2HTML_SRC)/$$man_page > $(MAN2HTML_DEST)/$$man_page.html; done clean: clean_arch clean_man2html diff --git a/x2goserver/VERSION.x2goserver b/x2goserver/VERSION.x2goserver index 026a698..075493a 100644 --- a/x2goserver/VERSION.x2goserver +++ b/x2goserver/VERSION.x2goserver @@ -1 +1 @@ -3.0.99.10 \ No newline at end of file +3.1.0.0 \ No newline at end of file diff --git a/x2goserver/bin/x2gocmdexitmessage b/x2goserver/bin/x2gocmdexitmessage index a8e122b..e8002ee 100755 --- a/x2goserver/bin/x2gocmdexitmessage +++ b/x2goserver/bin/x2gocmdexitmessage @@ -28,4 +28,4 @@ $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 +cat "$MESSAGE_FILE" diff --git a/x2goserver/bin/x2gofeature b/x2goserver/bin/x2gofeature index 997418e..f379070 100755 --- a/x2goserver/bin/x2gofeature +++ b/x2goserver/bin/x2gofeature @@ -30,7 +30,7 @@ $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@" X2GO_FEATURE=$1 # run x2gofeature scripts of X2Go extensions -test -d $X2GO_SHARE_PATH/x2gofeature.d && { +test -d "$X2GO_SHARE_PATH/x2gofeature.d" && { for subscript in $X2GO_SHARE_PATH/x2gofeature.d/*.features; do $subscript $@ && exit 0 done diff --git a/x2goserver/bin/x2gomountdirs b/x2goserver/bin/x2gomountdirs index 0d52a7b..58f3590 100755 --- a/x2goserver/bin/x2gomountdirs +++ b/x2goserver/bin/x2gomountdirs @@ -33,6 +33,8 @@ setlogmask( LOG_UPTO(x2gologlevel()) ); syslog('info', "x2gomountdirs has been called with options: @ARGV"); +my $tmp_dir = $ENV{'TMP'} || '/tmp'; + my $type=shift; my $session=shift; my $user=shift; @@ -98,12 +100,12 @@ close(F); chmod(0600,"$key"); chmod(0600,"$key.ident"); -my $mdir="/tmp/$ENV{'USER'}_media"; +my $mdir="$tmp_dir/$ENV{'USER'}_media"; my $ldir="$ENV{'HOME'}/media"; my $spooldir_lnk="$ENV{'HOME'}/.x2go/C-$session/spool"; -my $spooldir="/tmp/spool_$ENV{'USER'}"; +my $spooldir="$tmp_dir/spool_$ENV{'USER'}"; my $mimeboxdir_lnk="$ENV{'HOME'}/.x2go/C-$session/mimebox"; -my $mimeboxdir="/tmp/mimebox_$ENV{'USER'}"; +my $mimeboxdir="$tmp_dir/mimebox_$ENV{'USER'}"; if (! -e $mdir) { @@ -264,44 +266,52 @@ for (my $i=0;$i<@dirs;$i++) } if (! $printspool && ! $mimeboxspool && ! $useplasmoid ) { + my $fname="$ENV{'HOME'}/Desktop"; - my $current_desktop = ""; - if ($session =~ m/stDGNOME/) + my $current_desktop = "NONE"; + if (($session =~ m/_stDGNOME_dp/) && system("x2gofeature X2GO_GNOMEBINDINGS >/dev/null") == 0) { $current_desktop="-gnome"; } - elsif ($session =~ m/stDLXDE/) + elsif (($session =~ m/_stDLXDE_dp/) && system("x2gofeature X2GO_LXDEBINDINGS >/dev/null") == 0) { $current_desktop="-lxde"; } + elsif (($session =~ m/_stD.*_dp/) && system("x2gofeature X2GO_FMBINDINGS >/dev/null") == 0) + { + $current_desktop=""; + } my $p=@dirs[$i]; $p=~s/\/cygdrive\///g; $p=~s/\//_/g; $fname="$fname/$p"; - if ($type eq "dir") - { - $fname="$fname\ (sshfs-disk$current_desktop)"; - syslog('info', "creating desktop icon for ,,@dirs[$i]'' at ,,$fname'', media type is: client-side folder on harddrive"); - } - else + if ("$current_desktop" ne "NONE") { - if ($fname =~ m/CDROM/) + if ($type eq "dir") { - $fname="$fname\ (sshfs-cdrom$current_desktop)"; - syslog('info', "creating desktop icon for ,,@dirs[$i]'' at ,,$fname'', media type is: optical disc"); + $fname="$fname\ (sshfs-disk$current_desktop)"; + syslog('info', "creating desktop icon for ,,@dirs[$i]'' at ,,$fname'', media type is: client-side folder on harddrive"); } else { - $fname="$fname\ (sshfs-removable$current_desktop)"; - syslog('info', "creating desktop icon for ,,@dirs[$i]'' at ,,$fname'', media type is: removable device"); + if ($fname =~ m/CDROM/) + { + $fname="$fname\ (sshfs-cdrom$current_desktop)"; + syslog('info', "creating desktop icon for ,,@dirs[$i]'' at ,,$fname'', media type is: optical disc"); + } + else + { + $fname="$fname\ (sshfs-removable$current_desktop)"; + syslog('info', "creating desktop icon for ,,@dirs[$i]'' at ,,$fname'', media type is: removable device"); + } + $fname=~s/_ramdrive_mnt_//; } - $fname=~s/_ramdrive_mnt_//; + print "fname: $fname\n"; + open(F,">$fname"); + print F "$mntpath\n$session\n\n\0"; + close(F); } - print "fname: $fname\n"; - open(F,">$fname"); - print F "$mntpath\n$session\n\n\0"; - close(F); } } else diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session index 9023e86..e03751a 100755 --- a/x2goserver/bin/x2goresume-session +++ b/x2goserver/bin/x2goresume-session @@ -20,25 +20,25 @@ # Copyright (C) 2007-2012 Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> # Copyright (C) 2007-2012 Heinz-Markus Graesing <heinz-m.graesing@obviously-nice.de> -SESSION_NAME=$1 -X2GO_GEOMETRY=$2 -X2GO_LINK=$3 -X2GO_PACK=$4 -X2GO_KBD_LAYOUT=$5 -X2GO_KBD_TYPE=$6 -X2GO_SET_KBD=$7 +SESSION_NAME="$1" +X2GO_GEOMETRY="$2" +X2GO_LINK="$3" +X2GO_PACK="$4" +X2GO_KBD_LAYOUT="$5" +X2GO_KBD_TYPE="$6" +X2GO_SET_KBD="$7" X2GO_LIB_PATH=`echo -n \$(x2gobasepath)/lib/x2go` -X2GO_AGENT_PID=`$X2GO_LIB_PATH/x2gogetagent $SESSION_NAME` +X2GO_AGENT_PID=`$X2GO_LIB_PATH/x2gogetagent "$SESSION_NAME"` -X2GO_ROOT=${HOME}/.x2go +X2GO_ROOT="${HOME}/.x2go" X2GO_RESIZE=0 X2GO_FULLSCREEN=0 -NX_XINERAMA_CONF=$X2GO_ROOT/C-$SESSION_NAME/xinerama.conf -if [ -e $NX_XINERAMA_CONF ] +NX_XINERAMA_CONF="$X2GO_ROOT/C-$SESSION_NAME/xinerama.conf" +if [ -e "$NX_XINERAMA_CONF" ] then - rm $NX_XINERAMA_CONF + rm "$NX_XINERAMA_CONF" fi $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@" @@ -54,7 +54,66 @@ then X2GO_FULLSCREEN=1 fi -SESSION_DIR=${X2GO_ROOT}/C-${SESSION_NAME} + +SESSIONINFO=`x2golistsessions | grep "${SESSION_NAME}" | sed "s/|/,/g"` + +GR_PORT=`echo "$SESSIONINFO" | awk -F, {'print $9'}` +SOUND_PORT=`echo "$SESSIONINFO" | awk -F, {'print $10'}` +FS_PORT=`echo "$SESSIONINFO" | awk -F, {'print $14'}` +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])} }'` + +#check if saved in DB ports free +if grep -q "|${GR_PORT}|" <<<$SYSTEM_PORTS ; then + $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "port $GR_PORT is already in use" + $X2GO_LIB_PATH/x2gormport "$HOSTNAME" "$SESSION_NAME" "$GR_PORT" + GR_PORT="" +fi +if grep -q "|${SOUND_PORT}|" <<<$SYSTEM_PORTS ; then + $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "port $SOUND_PORT is already in use" + $X2GO_LIB_PATH/x2gormport "$HOSTNAME" "$SESSION_NAME" "$SOUND_PORT" + SOUND_PORT="" +fi +if grep -q "|${FS_PORT}|" <<<$SYSTEM_PORTS ; then + $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "port "$FS_PORT" is already in use" + $X2GO_LIB_PATH/x2gormport "$HOSTNAME" "$SESSION_NAME" "$FS_PORT" + FS_PORT="" +fi + +SSH_PORT=30000 #First ssh port 30001 + +#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])} }'` + +while [ "$GR_PORT" == "" ] || [ "$SOUND_PORT" == "" ] || [ "$FS_PORT" == "" ]; do + OUTPUT="" + while [ "$OUTPUT" != "inserted" ]; do + SSH_PORT=$(($SSH_PORT + 1)) + + #get free port + SSH_PORT=`echo "for(\\$i=$SSH_PORT;\\$br ne \"true\";\\$i++){ if(\"$USED_PORTS\" =~ m/\\|\\$i\\|/){\\$br=\"false\";}else{\\$br=\"true\";print \\$i;}}"|perl` + + #check if port in /etc/services + SERV=`grep $SSH_PORT /etc/services` + if [ "$SERV" == "" ]; then + OUTPUT=`$X2GO_LIB_PATH/x2goinsertport "$HOSTNAME" "$SESSION_NAME" "$SSH_PORT"` + fi + done + if [ "$GR_PORT" == "" ]; then + GR_PORT="$SSH_PORT" + elif [ "$SOUND_PORT" == "" ]; then + SOUND_PORT="$SSH_PORT" + else + FS_PORT="$SSH_PORT" + fi +done + + +SESSION_DIR="${X2GO_ROOT}/C-${SESSION_NAME}" OPTIONS=`cat ${SESSION_DIR}/options` GSTR=`echo "$OPTIONS" | awk -F, {'print $13'}` @@ -63,9 +122,11 @@ FSTR=`echo "$OPTIONS" | awk -F, {'print $15'}` LSTR=`echo "$OPTIONS" | awk -F, {'print $2'}` PSTR=`echo "$OPTIONS" | awk -F, {'print $3'}` KTSTR=`echo "$OPTIONS" | awk -F, {'print $12'}` +LISTSTR=`echo "$OPTIONS" | awk -F, {'print $17'}` + -KTSTR=`echo $KTSTR | sed "s/\//\\\\\\\\\//"` -X2GO_KBD_TYPE=`echo $X2GO_KBD_TYPE | sed "s/\//\\\\\\\\\//"` +KTSTR=`echo "$KTSTR" | sed "s/\//\\\\\\\\\//"` +X2GO_KBD_TYPE=`echo "$X2GO_KBD_TYPE" | sed "s/\//\\\\\\\\\//"` if [ "$X2GO_SET_KBD" == "0" ] then @@ -77,29 +138,30 @@ NEWOPTIONS=`echo "$OPTIONS" | sed -e "s/$LSTR/link=$X2GO_LINK/"\ -e "s/$KTSTR/kbtype=$X2GO_KBD_TYPE/"\ -e "s/$GSTR/geometry=$X2GO_GEOMETRY/"\ -e "s/$RSTR/resize=$X2GO_RESIZE/"\ + -e "s/$LISTSTR/listen=$GR_PORT/"\ -e "s/$FSTR/fullscreen=$X2GO_FULLSCREEN/"` -X2GO_CLIENT=`echo $SSH_CLIENT | awk '{print $1}'` +X2GO_CLIENT=`echo "$SSH_CLIENT" | awk '{print $1}'` if [ "$X2GO_CLIENT" == "" ] then - X2GO_CLIENT=$HOSTNAME + X2GO_CLIENT="$HOSTNAME" fi -echo "$NEWOPTIONS" >${SESSION_DIR}/options +echo "$NEWOPTIONS" >"${SESSION_DIR}/options" -$X2GO_LIB_PATH/x2goresume $X2GO_CLIENT $SESSION_NAME > /dev/null +$X2GO_LIB_PATH/x2goresume "$X2GO_CLIENT" "$SESSION_NAME" "$GR_PORT" "$SOUND_PORT" "$FS_PORT" > /dev/null # run x2goserver-extensions for pre-resume -x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME pre-resume || true +x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" pre-resume || true kill -HUP $X2GO_AGENT_PID &>/dev/null && { $X2GO_LIB_PATH/x2gosyslog "$0" "notice" "client $X2GO_CLIENT has successfully resumed session with ID $SESSION_NAME" # resume x2godesktopsharing, if it has been in use before the session got suspended - x2gofeature X2GO_DESKTOPSHARING &>/dev/null && x2goresume-desktopsharing $SESSION_NAME || true + x2gofeature X2GO_DESKTOPSHARING &>/dev/null && x2goresume-desktopsharing "$SESSION_NAME" || true # run x2goserver-extensions for post-resume - x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME post-resume || true + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" post-resume || true } || { err_msg="ERROR: failed to resume session with ID $SESSION_NAME" @@ -108,10 +170,13 @@ kill -HUP $X2GO_AGENT_PID &>/dev/null && { # If we reach here it means that the x2goagent process of the session has vanisshed # If this happens than we mark the session as finished... - $X2GO_LIB_PATH/x2gochangestatus 'F' $SESSION_NAME > /dev/null + $X2GO_LIB_PATH/x2gochangestatus 'F' "$SESSION_NAME" > /dev/null # run x2goserver-extensions for fail-resume - x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME fail-resume || true + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" fail-resume || true } +echo "gr_port=$GR_PORT" +echo "sound_port=$SOUND_PORT" +echo "fs_port=$FS_PORT" diff --git a/x2goserver/bin/x2goruncommand b/x2goserver/bin/x2goruncommand index 451ee59..0a664b6 100755 --- a/x2goserver/bin/x2goruncommand +++ b/x2goserver/bin/x2goruncommand @@ -36,11 +36,11 @@ export X2GO_AGENT_PID export X2GO_SESSION cmd=`echo $cmd |sed 's/X2GO_SPACE_CHAR/ /g'` -X2GO_ROOT=${HOME}/.x2go -MESSAGE_FILE=$X2GO_ROOT/C-$X2GO_SESSION/cmdoutput -echo "exec $cmd" >> $MESSAGE_FILE +X2GO_ROOT="${HOME}/.x2go" +MESSAGE_FILE="$X2GO_ROOT/C-$X2GO_SESSION/cmdoutput" +echo "exec $cmd" >> "$MESSAGE_FILE" -NX_XINERAMA_CONF=$X2GO_ROOT/C-$X2GO_SESSION/xinerama.conf +NX_XINERAMA_CONF="$X2GO_ROOT/C-$X2GO_SESSION/xinerama.conf" export NX_XINERAMA_CONF # make Kerberos's ticket cache known inside the X2Go session @@ -52,7 +52,7 @@ 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 +test -n "$LD_LIBRARY_PATH" && LD_LIBRARY_PATH=$NX_XINERAMA_LIBS:$LD_LIBRARY_PATH || LD_LIBRARY_PATH="$NX_XINERAMA_LIBS" export LD_LIBRARY_PATH if [ "$sndsys" == "esd" ]; then @@ -116,14 +116,14 @@ fi EXEC=`which $cmd` -BNAME=`basename $EXEC` +BNAME=`basename "$EXEC"` if [ "$BNAME" == "rdesktop" ] then IMEXIT="true" fi # run x2goserver-extensions for pre-runcommand -x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME pre-runcommand || true +x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" pre-runcommand || true sucessful_run=false if [ "$EXEC" != "" ] && [ -x $EXEC ]; then @@ -148,26 +148,26 @@ if [ "$EXEC" != "" ] && [ -x $EXEC ]; then successful_run=true # run x2goserver-extensions for post-runcommand - x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME post-runcommand || true + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" post-runcommand || true else $X2GO_LIB_PATH/x2gosyslog "$0" "err" "ERROR: command $EXEC failed to execute" - echo "X2GORUNCOMMAND ERR NOEXEC:$cmd" > $MESSAGE_FILE + echo "X2GORUNCOMMAND ERR NOEXEC:$cmd" > "$MESSAGE_FILE" # run x2goserver-extensions for fail-runcommand - x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME fail-runcommand || true + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" fail-runcommand || true fi # stop x2godesktopsharing process gracefully... -x2gofeature X2GO_DESKTOPSHARING >/dev/null && x2godesktopsharing-terminate $X2GO_SESSION || true +x2gofeature X2GO_DESKTOPSHARING >/dev/null && x2goterminate-desktopsharing "$X2GO_SESSION" || true kill -TERM $X2GO_AGENT_PID -$X2GO_LIB_PATH/x2gochangestatus 'F' $X2GO_SESSION > /dev/null +$X2GO_LIB_PATH/x2gochangestatus 'F' "$X2GO_SESSION" > /dev/null export HOSTNAME -x2goumount-session $X2GO_SESSION +x2goumount-session "$X2GO_SESSION" # 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")& fi diff --git a/x2goserver/bin/x2gostartagent b/x2goserver/bin/x2gostartagent index a4952bc..679852e 100755 --- a/x2goserver/bin/x2gostartagent +++ b/x2goserver/bin/x2gostartagent @@ -27,24 +27,26 @@ $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@" X2GO_PORT=49 #First port for X2GO=50 SSH_PORT=30000 #First ssh port 30001 -X2GO_ROOT=${HOME}/.x2go +X2GO_ROOT="${HOME}/.x2go" REMOTE=localhost -X2GO_CLIENT=`echo $SSH_CLIENT | awk '{print $1}'` +X2GO_CLIENT=`echo "$SSH_CLIENT" | awk '{print $1}'` $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "client announced itself as ,,$X2GO_CLIENT''" -X2GO_GEOMETRY=$1; shift -X2GO_LINK=$1; shift -X2GO_PACK=$1; shift -X2GO_TYPE=$1; shift -X2GO_KBD_LAYOUT=$1; shift -X2GO_KBD_TYPE=$1; shift -X2GO_SET_KBD=$1; shift -X2GO_STYPE=$1; shift -X2GO_CMD=$1; shift +X2GO_GEOMETRY="$1"; shift +X2GO_LINK="$1"; shift +X2GO_PACK="$1"; shift +X2GO_TYPE="$1"; shift +X2GO_KBD_LAYOUT="$1"; shift +X2GO_KBD_TYPE="$1"; shift +X2GO_SET_KBD="$1"; shift +X2GO_STYPE="$1"; shift +X2GO_CMD="$1"; shift X2GO_RESIZE=0 X2GO_FULLSCREEN=0 +XAUTHORITY=${XAUTHORITY:-"$HOME/.Xauthority"} + if [ "$X2GO_STYPE" == "S" ]; then SHADOW_MODE=`echo "$X2GO_CMD"|awk '{split($0,a,"XSHAD"); print a[1]}'` @@ -58,7 +60,7 @@ if [ "$X2GO_STYPE" == "S" ]; then $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "shadow session requested: mode $SHADOW_MODE, user: $SHADOW_USER, desktop: $SHADOW_DESKTOP" } || { - SHADREQ_USER=$1; shift + SHADREQ_USER="$1"; shift $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "preparing shadow session request for user $SHADREQ_USER, agent starts for user ${USER}" } @@ -66,18 +68,18 @@ if [ "$X2GO_STYPE" == "S" ]; then $X2GO_LIB_PATH/x2gosyslog "$0" "notice" "user ,,$USER'' requests desktop sharing from user ,,$SHADOW_USER'' for desktop ,,$SHADOW_DESKTOP''" $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "executing command: x2godesktopsharing client $X2GO_CLIENT $X2GO_GEOMETRY $X2GO_LINK $X2GO_PACK $X2GO_TYPE $X2GO_KBD_LAYOUT $X2GO_KBD_TYPE $X2GO_SET_KBD $X2GO_STYPE $X2GO_CMD $USER" - OUTPUT=`x2godesktopsharing client $X2GO_CLIENT $X2GO_GEOMETRY $X2GO_LINK $X2GO_PACK $X2GO_TYPE $X2GO_KBD_LAYOUT $X2GO_KBD_TYPE $X2GO_SET_KBD $X2GO_STYPE $X2GO_CMD $USER` + OUTPUT=`x2godesktopsharing client "$X2GO_CLIENT" "$X2GO_GEOMETRY" "$X2GO_LINK" "$X2GO_PACK" "$X2GO_TYPE" "$X2GO_KBD_LAYOUT" "$X2GO_KBD_TYPE" "$X2GO_SET_KBD" "$X2GO_STYPE" "$X2GO_CMD" "$USER"` $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "command result is: $OUTPUT" if [ "$OUTPUT" == "DENY" ]; then echo "ACCESS DENIED" 1>&2 $X2GO_LIB_PATH/x2gosyslog "$0" "err" "ERROR: user $SHADOW_USER denied desktop sharing session" exit -1 fi - X2GO_COOKIE=`echo $OUTPUT | awk '{print $2}'` - X2GO_PORT=`echo $OUTPUT | awk '{print $1}'` + X2GO_COOKIE=`echo "$OUTPUT" | awk '{print $2}'` + X2GO_PORT=`echo "$OUTPUT" | awk '{print $1}'` $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "received shadow session information: cookie: $X2GO_COOKIE, port: $X2GO_PORT" - xauth add ${HOSTNAME}/unix:${X2GO_PORT} MIT-MAGIC-COOKIE-1 ${X2GO_COOKIE} - xauth add ${HOSTNAME}:${X2GO_PORT} MIT-MAGIC-COOKIE-1 ${X2GO_COOKIE} + xauth -f "$XAUTHORITY" add "${HOSTNAME}/unix:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "${X2GO_COOKIE}" + xauth -f "$XAUTHORITY" add "${HOSTNAME}:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "${X2GO_COOKIE}" echo $X2GO_PORT echo $X2GO_COOKIE @@ -91,14 +93,14 @@ if [ "$X2GO_STYPE" == "S" ]; then fi LIMIT=`x2gosessionlimit` -LWORD=`echo $LIMIT | awk '{print $1}'` +LWORD=`echo "$LIMIT" | awk '{print $1}'` if [ "$LWORD" == "LIMIT" ]; then echo $LIMIT 1>&2 exit -1 fi -export NX_CLIENT=$X2GO_LIB_PATH/x2gosuspend-agent +export NX_CLIENT="$X2GO_LIB_PATH/x2gosuspend-agent" COLORDEPTH=`echo "$X2GO_TYPE"|awk '{split($0,a,"-depth_"); print a[2]}'` @@ -111,11 +113,14 @@ elif [ "$X2GO_STYPE" == "S" ]; then fi if [ "$X2GO_CLIENT" == "" ]; then - X2GO_CLIENT=$HOSTNAME + X2GO_CLIENT="$HOSTNAME" 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])} }'` + while [ "$OUTPUT" != "inserted" ]; do X2GO_PORT=$(($X2GO_PORT + 1)) @@ -125,45 +130,39 @@ while [ "$OUTPUT" != "inserted" ]; do NX_PORT=$(($X2GO_PORT + 6000)) if [ -e "/tmp/.X${X2GO_PORT}-lock" ] || [ -e "/tmp/.X11-unix/X${X2GO_PORT}" ] || - netstat -ntl 2>/dev/null | grep -q ":${NX_PORT} "; then + grep -q "|${NX_PORT}|" <<<$USED_PORTS ; then OUTPUT="XXX" else - SESSION_NAME=${USER}-${X2GO_PORT}-`date +"%s"` + SESSION_NAME="${USER}-${X2GO_PORT}-`date +\"%s\"`" if [ "$COLORDEPTH" != "" ]; then - SESSION_NAME="$SESSION_NAME"_st${SESSION_TYPE}${X2GO_CMD}_dp${COLORDEPTH} + SESSION_NAME="${SESSION_NAME}_st${SESSION_TYPE}${X2GO_CMD}_dp${COLORDEPTH}" SESSION_NAME=`echo "$SESSION_NAME" | sed -e "s/:/PP/g"` fi - OUTPUT=`$X2GO_LIB_PATH/x2goinsertsession $X2GO_PORT $HOSTNAME $SESSION_NAME` + OUTPUT=`$X2GO_LIB_PATH/x2goinsertsession "$X2GO_PORT" "$HOSTNAME" "$SESSION_NAME"` fi done -USED_PORTS=`$X2GO_LIB_PATH/x2gogetports $HOSTNAME` - - while [ "$GR_PORT" == "" ] || [ "$SOUND_PORT" == "" ] || [ "$FS_PORT" == "" ]; do OUTPUT="" while [ "$OUTPUT" != "inserted" ]; do SSH_PORT=$(($SSH_PORT + 1)) - #check if port in /etc/services + #get free port SSH_PORT=`echo "for(\\$i=$SSH_PORT;\\$br ne \"true\";\\$i++){ if(\"$USED_PORTS\" =~ m/\\|\\$i\\|/){\\$br=\"false\";}else{\\$br=\"true\";print \\$i;}}"|perl` + #check if port in /etc/services SERV=`grep $SSH_PORT /etc/services` if [ "$SERV" == "" ]; then - CR=`echo "use IO::Socket; \\$sock = new IO::Socket::INET ( LocalAddr => 'localhost',LocalPort => \"$SSH_PORT\",\ - Proto => 'tcp',Listen => 1,Reuse =>1 ) or die ;print \"OK\";close(\\$sock);"|perl 2>/dev/null` - if [ "$CR" == "OK" ]; then - OUTPUT=`$X2GO_LIB_PATH/x2goinsertport $HOSTNAME $SESSION_NAME $SSH_PORT` - fi + OUTPUT=`$X2GO_LIB_PATH/x2goinsertport "$HOSTNAME" "$SESSION_NAME" "$SSH_PORT"` fi done if [ "$GR_PORT" == "" ]; then - GR_PORT=$SSH_PORT + GR_PORT="$SSH_PORT" elif [ "$SOUND_PORT" == "" ]; then - SOUND_PORT=$SSH_PORT + SOUND_PORT="$SSH_PORT" else - FS_PORT=$SSH_PORT + FS_PORT="$SSH_PORT" fi done @@ -178,23 +177,23 @@ if [ "$X2GO_GEOMETRY" == "fullscreen" ]; then fi if [ "$X2GO_STYPE" == "S" ]; then - X2GO_GEOMETRY=`DISPLAY=$SHADOW_DESKTOP xwininfo -root | grep geometry` + X2GO_GEOMETRY=`DISPLAY="$SHADOW_DESKTOP" xwininfo -root | grep geometry` X2GO_GEOMETRY=`echo "$X2GO_GEOMETRY" | sed -e "s/ //g"` X2GO_GEOMETRY=`echo "$X2GO_GEOMETRY" | sed -e "s/-geometry//"` fi -SESSION_DIR=${X2GO_ROOT}/C-${SESSION_NAME} +SESSION_DIR="${X2GO_ROOT}/C-${SESSION_NAME}" -if [ ! -d $X2GO_ROOT ]; then - mkdir $X2GO_ROOT +if [ ! -d "$X2GO_ROOT" ]; then + mkdir "$X2GO_ROOT" fi -if [ ! -d $X2GO_ROOT/ssh ]; then - mkdir $X2GO_ROOT/ssh +if [ ! -d "$X2GO_ROOT/ssh" ]; then + mkdir "$X2GO_ROOT/ssh" fi -if [ ! -d $SESSION_DIR ]; then - mkdir $SESSION_DIR +if [ ! -d "$SESSION_DIR" ]; then + mkdir "$SESSION_DIR" fi X2GO_COOKIE=`mcookie` @@ -205,8 +204,8 @@ PATH="${PATH}:${X2GO_BIN}/" export PATH -xauth add ${HOSTNAME}/unix:${X2GO_PORT} MIT-MAGIC-COOKIE-1 ${X2GO_COOKIE} -xauth add ${HOSTNAME}:${X2GO_PORT} MIT-MAGIC-COOKIE-1 ${X2GO_COOKIE} +xauth -f "$XAUTHORITY" add "${HOSTNAME}/unix:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "${X2GO_COOKIE}" +xauth -f "$XAUTHORITY" add "${HOSTNAME}:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "${X2GO_COOKIE}" if [ "$X2GO_SET_KBD" == "0" ] @@ -217,7 +216,7 @@ else fi -echo "${X2GO_HOST}:${X2GO_PORT}" >${SESSION_DIR}/options +echo "${X2GO_HOST}:${X2GO_PORT}" >"${SESSION_DIR}/options" NX_AGENT=":${X2GO_PORT}" SAVED_DISPLAY="$DISPLAY" @@ -238,14 +237,14 @@ else fi # run x2goserver-extensions for pre-start -x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME pre-start || true +x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" pre-start || true SESSION_WINDOW_TITLE="X2GO-${SESSION_NAME}" if [ "$X2GO_STYPE" == "S" ]; then - x2goagent $X2GODPIOPTION_ -$SESSION_TYPE -auth ~/.Xauthority -S -shadow $SHADOW_DESKTOP -shadowmode $SHADOW_MODE -geometry ${X2GO_GEOMETRY} -name "${SESSION_WINDOW_TITLE}" ${NX_AGENT} 2>${SESSION_DIR}/session.log & + 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" & else - x2goagent $X2GODPIOPTION_ $XDMCPOPT -$SESSION_TYPE -auth ~/.Xauthority -geometry ${X2GO_GEOMETRY} -name "${SESSION_WINDOW_TITLE}" ${NX_AGENT} 2>${SESSION_DIR}/session.log & + x2goagent $X2GODPIOPTION_ $XDMCPOPT -$SESSION_TYPE -auth "$XAUTHORITY" -geometry ${X2GO_GEOMETRY} -name "${SESSION_WINDOW_TITLE}" "${NX_AGENT}" 2>"${SESSION_DIR}/session.log" & fi @@ -255,19 +254,19 @@ test $X2GO_AGENT_RETVAL && { $X2GO_LIB_PATH/x2gosyslog "$0" "notice" "successfully started X2Go agent session with ID $SESSION_NAME" # run x2goserver-extensions for post-start - x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME post-start || true + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" post-start || true } || { $X2GO_LIB_PATH/x2gosyslog "$0" "err" "ERROR: failed to start X2Go agent session with ID $SESSION_NAME" # run x2goserver-extensions for fail-start - x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME fail-start || true + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" fail-start || true } 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 +$X2GO_LIB_PATH/x2gocreatesession "$X2GO_COOKIE" "$X2GO_AGENT_PID" "$X2GO_CLIENT" "$GR_PORT" "$SOUND_PORT" "$FS_PORT" "$SESSION_NAME" > /dev/null echo $X2GO_PORT echo $X2GO_COOKIE diff --git a/x2goserver/bin/x2gosuspend-session b/x2goserver/bin/x2gosuspend-session index b9eeb7f..f823c69 100755 --- a/x2goserver/bin/x2gosuspend-session +++ b/x2goserver/bin/x2gosuspend-session @@ -21,34 +21,34 @@ # Copyright (C) 2007-2012 Heinz-Markus Graesing <heinz-m.graesing@obviously-nice.de> if [ $# -eq 1 ]; then - SESSION_NAME=$1 + SESSION_NAME="$1" else - SESSION_NAME=$X2GO_SESSION + SESSION_NAME="$X2GO_SESSION" fi X2GO_LIB_PATH=`echo -n \$(x2gobasepath)/lib/x2go` $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@" -X2GO_AGENT_PID=`$X2GO_LIB_PATH/x2gogetagent $SESSION_NAME` +X2GO_AGENT_PID=`$X2GO_LIB_PATH/x2gogetagent "$SESSION_NAME"` X2GO_AGENT_PID=`echo "$X2GO_AGENT_PID"| awk {'print $1'}` # workaround for knotify, keep silent in case no knotify is running killall -HUP knotify &>/dev/null -$X2GO_LIB_PATH/x2gochangestatus 'S' $SESSION_NAME > /dev/null +$X2GO_LIB_PATH/x2gochangestatus 'S' "$SESSION_NAME" > /dev/null # terminate x2godesktopsharing instance and remember that it was running... -x2gofeature X2GO_DESKTOPSHARING &>/dev/null && x2gosuspend-desktopsharing $SESSION_NAME || true +x2gofeature X2GO_DESKTOPSHARING &>/dev/null && x2gosuspend-desktopsharing "$SESSION_NAME" || true # run x2goserver-extensions for pre-suspend -x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME pre-suspend || true +x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" pre-suspend || true kill -HUP $X2GO_AGENT_PID &>/dev/null && { $X2GO_LIB_PATH/x2gosyslog "$0" "notice" "session with ID $SESSION_NAME has been suspended successfully" # run x2goserver-extensions for post-suspend - x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME post-suspend || true + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" post-suspend || true } || { err_msg="ERROR: failed to suspend session with ID $SESSION_NAME" @@ -57,13 +57,13 @@ kill -HUP $X2GO_AGENT_PID &>/dev/null && { # If we reach here it means that the x2goagent process of the session has vanisshed # If this happens than we mark the session as finished... - $X2GO_LIB_PATH/x2gochangestatus 'F' $SESSION_NAME > /dev/null + $X2GO_LIB_PATH/x2gochangestatus 'F' "$SESSION_NAME" > /dev/null # run x2goserver-extensions for fail-suspend - x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME fail-suspend || true + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" fail-suspend || true } -export HOSTNAME -x2goumount-session $SESSION_NAME +export HOSTNAME +x2goumount-session "$SESSION_NAME" diff --git a/x2goserver/bin/x2goterminate-session b/x2goserver/bin/x2goterminate-session index 10df64a..271f714 100755 --- a/x2goserver/bin/x2goterminate-session +++ b/x2goserver/bin/x2goterminate-session @@ -21,31 +21,31 @@ # Copyright (C) 2007-2012 Heinz-Markus Graesing <heinz-m.graesing@obviously-nice.de> if [ $# -eq 1 ]; then - SESSION_NAME=$1 + SESSION_NAME="$1" else - SESSION_NAME=$X2GO_SESSION + SESSION_NAME="$X2GO_SESSION" fi X2GO_LIB_PATH=`echo -n \$(x2gobasepath)/lib/x2go` $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@" -X2GO_AGENT_PID=`$X2GO_LIB_PATH/x2gogetagent $SESSION_NAME` +X2GO_AGENT_PID=`$X2GO_LIB_PATH/x2gogetagent "$SESSION_NAME"` X2GO_AGENT_PID=`echo "$X2GO_AGENT_PID"| awk {'print $1'}` -$X2GO_LIB_PATH/x2gochangestatus 'F' $SESSION_NAME > /dev/null +$X2GO_LIB_PATH/x2gochangestatus 'F' "$SESSION_NAME" > /dev/null # stop x2godesktopsharing process gracefully... -x2gofeature X2GO_DESKTOPSHARING &>/dev/null && x2goterminate-desktopsharing $SESSION_NAME || true +x2gofeature X2GO_DESKTOPSHARING &>/dev/null && x2goterminate-desktopsharing "$SESSION_NAME" || true # run x2goserver-extensions for pre-terminate -x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME pre-terminate || true +x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" pre-terminate || true kill -TERM $X2GO_AGENT_PID &>/dev/null && { - $X2GO_LIB_PATH/x2gosyslog "$0" "notice" "session with ID $SESSION_NAME has been terminated successfully" + $X2GO_LIB_PATH/x2gosyslog "$0" "notice" "session with ID "$SESSION_NAME" has been terminated successfully" # run x2goserver-extensions for post-terminate - x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME post-terminate || true + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" post-terminate || true } || { err_msg="ERROR: failed to terminate session with ID $SESSION_NAME" @@ -56,14 +56,14 @@ kill -TERM $X2GO_AGENT_PID &>/dev/null && { $X2GO_LIB_PATH/x2gosyslog "$0" "err" "$err_msg" # run x2goserver-extensions for fail-terminate - x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME fail-terminate || true + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions "$SESSION_NAME" fail-terminate || true } export HOSTNAME -x2goumount-session $SESSION_NAME +x2goumount-session "$SESSION_NAME" # if we are not running in log level debug (=7) then clean up session dir if [ "$($X2GO_LIB_PATH/x2gologlevel)" != "7" ]; then - (sleep 10; rm -Rf $HOME/.x2go/C-$X2GO_SESSION)& + (sleep 10; rm -Rf "$HOME/.x2go/C-$X2GO_SESSION")& fi diff --git a/x2goserver/bin/x2goumount-session b/x2goserver/bin/x2goumount-session index 46befc8..88bc7fc 100755 --- a/x2goserver/bin/x2goumount-session +++ b/x2goserver/bin/x2goumount-session @@ -34,6 +34,8 @@ setlogmask( LOG_UPTO(x2gologlevel()) ); syslog('info', "x2goumount-session has been called with options: @ARGV"); +my $tmp_dir = $ENV{'TMP'} || '/tmp'; + my $session=shift; my $only_path=shift; my $uname=$ENV{'USER'}; @@ -44,9 +46,9 @@ if ($only_path) $only_path=~s/\/ramdrive\/mnt\///; $only_path=~ s/\//_/g; - ### FIXME: handle CDROM and Removable Media mounts here, as well!!! + ### FIXME: handle CDROM and Removable Media mounts here, as well!!! - $only_path="/tmp/$ENV{'USER'}_media/disk/$only_path"; + $only_path="$tmp_dir/$ENV{'USER'}_media/disk/$only_path"; # ^^^^ syslog('debug',"x2goumount-session unmounting $only_path only"); } @@ -75,7 +77,7 @@ for ($i=0;$i<@outp;$i++) @outp[$i]=~s/ //g; chomp(@outp[$i]); chomp(@outp[$i]); - chomp(@outp[$i]); + chomp(@outp[$i]); my @line=split('\|',"@outp[$i]"); my $path="@line[0]:@line[1]"; if ($only_path) @@ -113,45 +115,54 @@ break: syslog('err', "ERROR: failed to unmount @line[1]"); if ($use_zenity == 0) { - system("kdialog --error \"@line[1]\"&"); + system("which kdialog &>/dev/null && kdialog --error \"ERROR (X2Go): Failed to unmount @line[1]\"&"); } else { - system("zenity --error --text \"@line[1]\"&"); + system("which zenity &>/dev/null && zenity --error --text \"ERROR (X2Go): Failed to unmount @line[1]\"&"); } } } if (! $found) { + + $remote=~s/\/cygdrive\///g; $remote=~s/\//_/g; $remote=(split(":","$remote"))[1]; $remote="$ENV{'HOME'}/Desktop/$remote"; - my $current_desktop = ''; - if ($session =~ m/stDGNOME/) + my $current_desktop = 'NONE'; + if (($session =~ m/_stDGNOME_dp/) && system("x2gofeature X2GO_GNOMEBINDINGS >/dev/null") == 0) { $current_desktop="-gnome"; } - elsif ($session =~ m/stDLXDE/) + elsif (($session =~ m/_stDLXDE_dp/) && system("x2gofeature X2GO_LXDEBINDINGS >/dev/null") == 0) { $current_desktop="-lxde"; } - - if ( -e "$remote\ (sshfs-disk$current_desktop)") + elsif (($session =~ m/_st.*_dp/) && system("x2gofeature X2GO_FMBINDINGS >/dev/null") == 0) { - syslog('info', "removing desktop icon ,,$remote (sshfs-disk$current_desktop)''"); - unlink("$remote\ (sshfs-disk$current_desktop)"); + $current_desktop=""; } - $remote=~s/%2framdrive%2fmnt%2f//; - if ( -e "$remote\ (sshfs-removable$current_desktop)") - { - syslog('info', "removing desktop icon ,,$remote\ (sshfs-removable$current_desktop)''"); - unlink("$remote\ (sshfs-removable$current_desktop)"); - } - if ( -e "$remote\ (sshfs-cdrom/$current_desktop)") + + if ("$current_desktop" ne "NONE") { - syslog('info', "removing desktop icon ,,$remote\ (sshfs-cdrom$current_desktop)''"); - unlink("$remote\ (sshfs-cdrom$current_desktop)"); + if ( -e "$remote\ (sshfs-disk$current_desktop)") + { + syslog('info', "removing desktop icon ,,$remote (sshfs-disk$current_desktop)''"); + unlink("$remote\ (sshfs-disk$current_desktop)"); + } + $remote=~s/%2framdrive%2fmnt%2f//; + if ( -e "$remote\ (sshfs-removable$current_desktop)") + { + syslog('info', "removing desktop icon ,,$remote\ (sshfs-removable$current_desktop)''"); + unlink("$remote\ (sshfs-removable$current_desktop)"); + } + if ( -e "$remote\ (sshfs-cdrom/$current_desktop)") + { + syslog('info', "removing desktop icon ,,$remote\ (sshfs-cdrom$current_desktop)''"); + unlink("$remote\ (sshfs-cdrom$current_desktop)"); + } } db_deletemount ($session, @line[1]); rmdir (@line[1]); diff --git a/x2goserver/bin/x2goversion b/x2goserver/bin/x2goversion index 3720bf0..a1fea45 100755 --- a/x2goserver/bin/x2goversion +++ b/x2goserver/bin/x2goversion @@ -40,8 +40,8 @@ if [ -n "$1" ]; then echo "Version information for X2Go component '$X2GO_COMPONENT' is not available." >&1 fi else - cd ${X2GO_VERSIONS_BASEPATH} - for compfile in `ls ${X2GO_VERSIONS_BASEPATH}`; do + cd "${X2GO_VERSIONS_BASEPATH}" + for compfile in `ls "${X2GO_VERSIONS_BASEPATH}"`; do X2GO_COMPONENT="$(echo $compfile | cut -d"." -f2)" X2GO_COMPONENT_VERSION="$(get_version $compfile)" echo "${X2GO_COMPONENT}: ${X2GO_COMPONENT_VERSION}" diff --git a/x2goserver/doc/README.upgrade-pgsql-database b/x2goserver/doc/README.upgrade-pgsql-database new file mode 100644 index 0000000..5e7de9d --- /dev/null +++ b/x2goserver/doc/README.upgrade-pgsql-database @@ -0,0 +1,42 @@ + +####################################### +### +### X2Go DB maintenance after upgrades +### +####################################### + +UPGRADING +========= + +Normally no DB upgrades are necessary on x2goserver package upgrades. However, there are some +exceptions for some specific version of the x2goserver package. + + +Upgrading to x2goserver 3.1.0.0 +------------------------------- + +From: x2goserver (<= 3.0.99.10) +To: x2goserver (>= 3.1.0.0) +Description: The user (access) permissions on table ,,used_ports'' have been changed. + X2Go users in the PostgreSQL database need access to this new column. + . + Alternative 1: recreate all X2Go db users + . + x2godbadmin --rmuser <username> + x2godbadmin --adduser <username> + . + Alternative 2: + . + Run this SQL command for each x2gouser_<user> in the X2Go PostgreSQL database + . + $ su - postgres + $ psql + psql (<YOUR-PSQL-VERSION) + Type "help" for help. + . + postgres=# \connect x2go_sessions + x2go_sessions=# GRANT SELECT ON used_ports TO "x2gouser_<username1>"; + x2go_sessions=# GRANT SELECT ON used_ports TO "x2gouser_<username2>"; + ... + + diff --git a/x2goserver/lib/x2godbwrapper.pm b/x2goserver/lib/x2godbwrapper.pm index df707df..aec0294 100644 --- a/x2goserver/lib/x2godbwrapper.pm +++ b/x2goserver/lib/x2godbwrapper.pm @@ -86,7 +86,7 @@ if ($backend eq 'postgres') use base 'Exporter'; our @EXPORT=('db_listsessions','db_listsessions_all', 'db_getservers', 'db_getagent', 'db_resume', 'db_changestatus', - 'db_getdisplays', 'db_insertsession', 'db_getports', 'db_insertport', 'db_createsession', 'db_insertmount', + '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'); @@ -100,6 +100,8 @@ sub dbsys_rmsessionsroot my $sth=$dbh->prepare("delete from sessions where session_id='$sid'"); $sth->execute() or die; + $sth=$dbh->prepare("delete from used_ports where session_id='$sid'"); + $sth->execute() or die; } if($backend eq 'sqlite') { @@ -230,7 +232,7 @@ sub db_deletemount my $path=shift or die "argument \"path\" 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 $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_view where session_id='$sid' and path='$path'"); $sth->execute(); $sth->finish(); @@ -251,7 +253,7 @@ sub db_insertmount my $res_ok=0; 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 $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_; my $sth=$dbh->prepare("insert into mounts (session_id,path,client) values ('$sid','$path','$client')"); $sth->execute(); if (!$sth->err()) @@ -279,7 +281,7 @@ sub db_insertsession 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 $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_; my $sth=$dbh->prepare("insert into sessions (display,server,uname,session_id) values ('$display','$server','$uname','$sid')"); $sth->execute()or die $_; $sth->finish(); @@ -307,7 +309,7 @@ sub db_createsession 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 $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_; my $sth=$dbh->prepare("update sessions_view set status='R',last_time=now(), cookie='$cookie',agent_pid='$pid',client='$client',gr_port='$gr_port', sound_port='$snd_port',fs_port='$fs_port' where session_id='$sid'"); @@ -333,7 +335,7 @@ sub db_insertport my $sshport=shift or die "argument \"port\" 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 $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_; my $sth=$dbh->prepare("insert into used_ports (server,session_id,port) values ('$server','$sid','$sshport')"); $sth->execute()or die; $sth->finish(); @@ -346,32 +348,56 @@ sub db_insertport syslog('debug', "db_insertport called, session ID: $sid, server: $server, SSH port: $sshport"); } +sub db_rmport +{ + my $server=shift or die "argument \"server\" missed"; + my $sid=shift or die "argument \"session_id\" missed"; + my $sshport=shift or die "argument \"port\" 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 used_ports where server='$server' and session_id='$sid' and port='$sshport'"); + $sth->execute()or die; + $sth->finish(); + $dbh->disconnect(); + } + if ($backend eq 'sqlite') + { + `$x2go_lib_path/x2gosqlitewrapper rmport $server $sid $sshport`; + } + syslog('debug', "db_rmport called, session ID: $sid, server: $server, SSH port: $sshport"); +} + sub db_resume { my $client=shift or die "argument \"client\" missed"; - my $sid=shift or die "argument \"session_id\" missed"; + my $sid=shift or die "argument \"session_id\" missed"; + my $gr_port=shift or die "argument \"gr_port\" missed"; + my $sound_port=shift or die "argument \"sound_port\" missed"; + my $fs_port=shift or die "argument \"fs_port\" 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("update sessions_view set last_time=now(),status='R',client='$client' where session_id = '$sid'"); + my $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_; + my $sth=$dbh->prepare("update sessions_view set last_time=now(),status='R',client='$client',gr_port='$gr_port', + sound_port='$sound_port',fs_port='$fs_port' where session_id = '$sid'"); $sth->execute()or die; $sth->finish(); $dbh->disconnect(); } if ($backend eq 'sqlite') { - `$x2go_lib_path/x2gosqlitewrapper resume $client $sid`; + `$x2go_lib_path/x2gosqlitewrapper resume $client $sid $gr_port $sound_port $fs_port`; } - syslog('debug', "db_resume called, session ID: $sid, client: $client"); + syslog('debug', "db_resume called, session ID: $sid, client: $client, gr_port: $gr_port, sound_port: $sound_port, fs_port: $fs_port"); } sub db_changestatus { my $status=shift or die "argument \"status\" missed"; - my $sid=shift or die "argument \"session_id\" missed"; + 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 $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbuser", "$dbpass",{AutoCommit => 1}) or die $_; my $sth=$dbh->prepare("update sessions_view set last_time=now(),status='$status' where session_id = '$sid'"); $sth->execute()or die; $sth->finish(); @@ -388,7 +414,7 @@ sub db_getdisplays { my @displays; #ignore $server - my $server=shift or die "argument \"server\" missed"; + my $server=shift or die "argument \"server\" missed"; if ($backend eq 'postgres') { my @strings; @@ -418,7 +444,7 @@ sub db_getports { my @ports; #ignore $server - my $server=shift or die "argument \"server\" missed"; + my $server=shift or die "argument \"server\" missed"; if ($backend eq 'postgres') { my @strings; diff --git a/x2goserver/lib/x2goresume b/x2goserver/lib/x2goresume index 2e64542..7391cd3 100755 --- a/x2goserver/lib/x2goresume +++ b/x2goserver/lib/x2goresume @@ -33,8 +33,11 @@ setlogmask( LOG_UPTO(x2gologlevel()) ); my $client=shift or die; my $sid=shift or die; +my $gr_port=shift or die; +my $snd_port=shift or die; +my $fs_port=shift or die; -db_resume($client, $sid); +db_resume($client, $sid, $gr_port, $snd_port, $fs_port); # closing syslog closelog; diff --git a/x2goserver/lib/x2goinsertport b/x2goserver/lib/x2gormport similarity index 95% copy from x2goserver/lib/x2goinsertport copy to x2goserver/lib/x2gormport index bc18d96..4ba632d 100755 --- a/x2goserver/lib/x2goinsertport +++ b/x2goserver/lib/x2gormport @@ -35,8 +35,7 @@ my $server=shift or die; my $sid=shift or die; my $port=shift or die; -db_insertport($server,$sid,$port); -print "inserted"; +db_rmport($server,$sid,$port); # closing syslog closelog; \ No newline at end of file diff --git a/x2goserver/lib/x2gosqlitewrapper.pl b/x2goserver/lib/x2gosqlitewrapper.pl index 53041f8..1e3b7e3 100755 --- a/x2goserver/lib/x2gosqlitewrapper.pl +++ b/x2goserver/lib/x2gosqlitewrapper.pl @@ -153,14 +153,28 @@ elsif($cmd eq "insertport") $sth->finish(); } +elsif($cmd eq "rmport") +{ + my $server=shift or die "argument \"server\" missed"; + my $sid=shift or die "argument \"session_id\" missed"; + my $sshport=shift or die "argument \"port\" missed"; + my $sth=$dbh->prepare("delete from used_ports where server=? and session_id=? and port=?"); + check_user($sid); + $sth->execute($server, $sid, $sshport) or die; + $sth->finish(); +} + elsif($cmd eq "resume") { my $client=shift or die "argument \"client\" missed"; my $sid=shift or die "argument \"session_id\" missed"; + my $gr_port=shift or die "argument \"gr_port\" missed"; + my $sound_port=shift or die "argument \"sound_port\" missed"; + my $fs_port=shift or die "argument \"fs_port\" missed"; check_user($sid); my $sth=$dbh->prepare("update sessions set last_time=datetime('now','localtime'),status='R', - client=? where session_id = ? and uname=?"); - $sth->execute($client, $sid, $realuser) or die; + client=?,gr_port=?,sound_port=?,fs_port=? where session_id = ? and uname=?"); + $sth->execute($client, $gr_port, $sound_port, $fs_port, $sid, $realuser) or die; $sth->finish(); } @@ -310,8 +324,10 @@ sub check_user my $sid=shift or die "argument \"session_id\" missed"; return if $realuser eq "root"; # session id looks like someuser-51-1304005895_stDgnome-session_dp24 - my ( $user, $rest ) = split('-', $sid, 2); - $user eq $realuser or die "$realuser is not authorized (should be $user)"; + # during DB insertsession it only looks like someuser-51-1304005895 + my $user = "$sid"; + $user =~ s/$realuser-[0-9]{2,}-[0-9]{10,}.*/$realuser/; + $user eq $realuser or die "$realuser is not authorized"; } sub fetchrow_printall_array diff --git a/x2goserver/man/man8/x2gobasepath.8 b/x2goserver/man/man8/x2gobasepath.8 index e2dde5c..52c4346 100644 --- a/x2goserver/man/man8/x2gobasepath.8 +++ b/x2goserver/man/man8/x2gobasepath.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2gobasepath 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Admin Tool" +.TH x2gobasepath 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2gobasepath \- Detect Base Path of X2Go Server Installation .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2gocleansessions.8 b/x2goserver/man/man8/x2gocleansessions.8 index baef7e8..a45e8a0 100644 --- a/x2goserver/man/man8/x2gocleansessions.8 +++ b/x2goserver/man/man8/x2gocleansessions.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2gocleansessions 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Admin Tool" +.TH x2gocleansessions 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2gocleansessions \- X2Go Server Cleanup Daemon .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2gocmdexitmessage.8 b/x2goserver/man/man8/x2gocmdexitmessage.8 index 18ffdd7..64d51ac 100644 --- a/x2goserver/man/man8/x2gocmdexitmessage.8 +++ b/x2goserver/man/man8/x2gocmdexitmessage.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2gocmdexitmessage 8 "July 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2gocmdexitmessage 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2gocmdexitmessage \- Exit Message of X2Go Command .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2godbadmin.8 b/x2goserver/man/man8/x2godbadmin.8 index 0ec4a07..c027021 100644 --- a/x2goserver/man/man8/x2godbadmin.8 +++ b/x2goserver/man/man8/x2godbadmin.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2godbadmin 8 "July 2011" "Version 3.0.99.x" "X2Go Server Admin Tool" +.TH x2godbadmin 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Admin Tool" .SH NAME x2godbadmin \- X2Go Server Database Administrator .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2gofeature.8 b/x2goserver/man/man8/x2gofeature.8 index be222c0..67937a4 100644 --- a/x2goserver/man/man8/x2gofeature.8 +++ b/x2goserver/man/man8/x2gofeature.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2gofeature 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Admin Tool" +.TH x2gofeature 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2gofeature \- Query X2Go Feature Availability on X2Go Server .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2gogetservers.8 b/x2goserver/man/man8/x2gogetservers.8 new file mode 100644 index 0000000..ed7270f --- /dev/null +++ b/x2goserver/man/man8/x2gogetservers.8 @@ -0,0 +1,25 @@ +'\" -*- coding: utf-8 -*- +.if \n(.g .ds T< \\FC +.if \n(.g .ds T> \\F[\n[.fam]] +.de URL +\\$2 \(la\\$1\(ra\\$3 +.. +.if \n(.g .mso www.tmac +.TH x2gogetservers 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" +.SH NAME +x2gogetservers \- Retrieve list of available X2Go servers +.SH SYNOPSIS +'nh +.fi +.ad l +x2gogetservers + +.SH DESCRIPTION +\fBx2gogetservers\fR retrieves a list of available X2Go servers. This command is +only used by \fIx2goclient\fR if it runs in LDAP mode. +.PP +The \fBx2gogetservers\fR is run with X2Go user privileges. + +.SH AUTHOR +This manual has been written by Mike Gabriel <mike.gabriel@das-netzwerkteam.de> for the X2Go project +(http://www.x2go.org). diff --git a/x2goserver/man/man8/x2golistdesktops.8 b/x2goserver/man/man8/x2golistdesktops.8 index f804b9a..4125c37 100644 --- a/x2goserver/man/man8/x2golistdesktops.8 +++ b/x2goserver/man/man8/x2golistdesktops.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2golistdesktops 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2golistdesktops 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2golistdesktops \- List Available X Desktops .SH SYNOPSIS @@ -23,7 +23,7 @@ is used here. a list of available desktops that may be candidates for X2Go desktop sharing (shadow sessions). .PP The list of desktops will include local desktop sessions (launched via KDM, GDM, etc.) run by the same user, X2Go desktop -sessions run by the same user and desktop sessions of other users (local or remote) that are announced via +sessions run by the same user and desktop sessions of other users (local or remote) that are announced via the \fBx2godesktopsharing\fR utility. .SH RETURN VALUES A list of available X desktops, line-by-line. diff --git a/x2goserver/man/man8/x2golistmounts.8 b/x2goserver/man/man8/x2golistmounts.8 index e8c19ad..176ffd9 100644 --- a/x2goserver/man/man8/x2golistmounts.8 +++ b/x2goserver/man/man8/x2golistmounts.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2golistmounts 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2golistmounts 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2golistmounts \- List Mounted Shares for an X2Go Session .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2golistsessions.8 b/x2goserver/man/man8/x2golistsessions.8 index f1c162c..91a76e9 100644 --- a/x2goserver/man/man8/x2golistsessions.8 +++ b/x2goserver/man/man8/x2golistsessions.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2golistsessions 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2golistsessions 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2golistsessions \- List Available X2Go Sessions for User .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2golistsessions_root.8 b/x2goserver/man/man8/x2golistsessions_root.8 index be21d7d..f68073f 100644 --- a/x2goserver/man/man8/x2golistsessions_root.8 +++ b/x2goserver/man/man8/x2golistsessions_root.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2golistsessions_root 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Admin Tool" +.TH x2golistsessions_root 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Admin Tool" .SH NAME x2golistsessions_root \- List X2Go Sessions for System .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2gomountdirs.8 b/x2goserver/man/man8/x2gomountdirs.8 index 81c8808..69b2fe7 100644 --- a/x2goserver/man/man8/x2gomountdirs.8 +++ b/x2goserver/man/man8/x2gomountdirs.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2gomountdirs 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2gomountdirs 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2gomountdirs \- Share Client-Side Folder with X2Go Session .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2goresume-session.8 b/x2goserver/man/man8/x2goresume-session.8 index b0db3a9..f8efed9 100644 --- a/x2goserver/man/man8/x2goresume-session.8 +++ b/x2goserver/man/man8/x2goresume-session.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2goresume-session 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2goresume-session 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2goresume-session \- Resume X2Go Session .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2goruncommand.8 b/x2goserver/man/man8/x2goruncommand.8 index 52d03b4..bf22a9e 100644 --- a/x2goserver/man/man8/x2goruncommand.8 +++ b/x2goserver/man/man8/x2goruncommand.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2goruncommand 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2goruncommand 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2goruncommand \- Launch Command inside an X2Go Session .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2gosessionlimit.8 b/x2goserver/man/man8/x2gosessionlimit.8 index ac59d66..4e2443d 100644 --- a/x2goserver/man/man8/x2gosessionlimit.8 +++ b/x2goserver/man/man8/x2gosessionlimit.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2gosessionlimit 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Admin Tool" +.TH x2gosessionlimit 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2gosessionlimit \- Detect Session Limit for User or Group .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2goshowblocks.8 b/x2goserver/man/man8/x2goshowblocks.8 index b7ec0c7..8eb8d4f 100644 --- a/x2goserver/man/man8/x2goshowblocks.8 +++ b/x2goserver/man/man8/x2goshowblocks.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2goshowblocks 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2goshowblocks 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2goshowblocks \- Show X2Go-Mounted Block Devices .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2gostartagent.8 b/x2goserver/man/man8/x2gostartagent.8 index 4ba06c8..0fd81cd 100644 --- a/x2goserver/man/man8/x2gostartagent.8 +++ b/x2goserver/man/man8/x2gostartagent.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2gostartagent 8 "18 May 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2gostartagent 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2gostartagent \- Start a New X2Go Session .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2gosuspend-session.8 b/x2goserver/man/man8/x2gosuspend-session.8 index 5acfe24..89fe595 100644 --- a/x2goserver/man/man8/x2gosuspend-session.8 +++ b/x2goserver/man/man8/x2gosuspend-session.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2gosuspend-session 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2gosuspend-session 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2gosuspend-session \- Suspend an X2Go Session .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2goterminate-session.8 b/x2goserver/man/man8/x2goterminate-session.8 index b619552..054da4e 100644 --- a/x2goserver/man/man8/x2goterminate-session.8 +++ b/x2goserver/man/man8/x2goterminate-session.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2goterminate-session 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2goterminate-session 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2goterminate-session \- Terminate an X2Go Session .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2goumount-session.8 b/x2goserver/man/man8/x2goumount-session.8 index 0af51fe..d48ce13 100644 --- a/x2goserver/man/man8/x2goumount-session.8 +++ b/x2goserver/man/man8/x2goumount-session.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2goumount-session 8 "Sep 2011" "Version 3.0.99.x" "X2Go Server Tool" +.TH x2goumount-session 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2goumount-session \- Unshare mounted Folders from X2Go Session .SH SYNOPSIS diff --git a/x2goserver/man/man8/x2goversion.8 b/x2goserver/man/man8/x2goversion.8 index f91997c..56b78d7 100644 --- a/x2goserver/man/man8/x2goversion.8 +++ b/x2goserver/man/man8/x2goversion.8 @@ -5,7 +5,7 @@ \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac -.TH x2goversion 8 "31 May 2011" "Version 3.0.99.x" "X2Go Server Tool (Extension)" +.TH x2goversion 8 "Feb 2012" "Version 3.1.0.x" "X2Go Server Tool" .SH NAME x2goversion \- Retrieve Code Versions of X2Go Server Components .SH SYNOPSIS diff --git a/x2goserver/sbin/x2gocleansessions b/x2goserver/sbin/x2gocleansessions index 963ab32..b3f65db 100755 --- a/x2goserver/sbin/x2gocleansessions +++ b/x2goserver/sbin/x2gocleansessions @@ -86,9 +86,8 @@ elsif ($pid != 0) } elsif ($pid == 0 ) { - close(STDIN); - close(STDOUT); - close(STDERR); + # close any open file descriptor left open by our parent before the fork + for (glob "/proc/$$/fd/*") { POSIX::close($1) if m{/(\d+)$}; } $SIG{TERM}=\&catch_term; diff --git a/x2goserver/sbin/x2godbadmin b/x2goserver/sbin/x2godbadmin index 84dfc5d..fc86ca8 100755 --- a/x2goserver/sbin/x2godbadmin +++ b/x2goserver/sbin/x2godbadmin @@ -333,6 +333,9 @@ sub add_user() $sth=$dbh->prepare("GRANT INSERT, UPDATE, DELETE ON sessions, used_ports, mounts TO \"x2gouser_$user\""); $sth->execute(); + $sth=$dbh->prepare("GRANT SELECT ON used_ports TO \"x2gouser_$user\""); + $sth->execute(); + $sth=$dbh->prepare("GRANT SELECT, UPDATE, DELETE ON sessions_view, mounts_view, servers_view, ports_view TO \"x2gouser_$user\""); $sth->execute(); $sth->finish(); @@ -455,7 +458,6 @@ sub create_tables() "); $sth->execute() or die; - $sth=$dbh->prepare(" create or replace RULE insert_port_priv AS ON INSERT TO used_ports where NEW.creator_id <> current_user and current_user <> '$x2goadmin' diff --git a/x2goserver/share/x2go/versions/VERSION.x2goserver b/x2goserver/share/x2go/versions/VERSION.x2goserver deleted file mode 120000 index fc1b443..0000000 --- a/x2goserver/share/x2go/versions/VERSION.x2goserver +++ /dev/null @@ -1 +0,0 @@ -../../../VERSION.x2goserver \ No newline at end of file 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).