The branch, master has been updated via daf3a935ab5b71b86d9cb43d2aa5d108a6883297 (commit) via 11c950ceffccdf78b2da5db02f33327b52dc1d04 (commit) from da4800f1505c62f65d8d91fbb7ad5d7de21ce2e3 (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 daf3a935ab5b71b86d9cb43d2aa5d108a6883297 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Thu Sep 29 00:27:45 2011 +0200 Provide pluggable X2go extension system for main X2go server functions. commit 11c950ceffccdf78b2da5db02f33327b52dc1d04 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Wed Sep 28 23:09:27 2011 +0200 Resume/suspend x2godesktopsharing during x2goresume-session, x2gosuspend-session. ----------------------------------------------------------------------- Summary of changes: debian/changelog | 4 ++ debian/x2goserver-extensions.install | 3 +- x2goserver-extensions/Makefile | 32 +++++++++++++++++-- .../bin/x2goserver-run-extensions | 19 ++++++----- .../x2gofeature.d/x2goserver-extensions.features | 1 + x2goserver/bin/x2goresume-session | 15 +++++++++ x2goserver/bin/x2goruncommand | 11 +++++++ x2goserver/bin/x2gostartagent | 17 +++++++++- x2goserver/bin/x2gosuspend-session | 15 +++++++++ x2goserver/bin/x2goterminate-session | 13 +++++++- 10 files changed, 113 insertions(+), 17 deletions(-) copy x2goserver-compat/share/x2gofeature.d/x2goserver-compat.features => x2goserver-extensions/bin/x2goserver-run-extensions (79%) create mode 100644 x2goserver-extensions/lib/extensions/fail-resume.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/fail-runcommand.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/fail-start.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/fail-suspend.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/fail-terminate.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/post-resume.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/post-runcommand.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/post-start.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/post-suspend.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/post-terminate.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/pre-resume.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/pre-runcommand.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/pre-start.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/pre-suspend.d/.placeholder create mode 100644 x2goserver-extensions/lib/extensions/pre-terminate.d/.placeholder The diff of changes is: diff --git a/debian/changelog b/debian/changelog index 72acfab..a9cbbf2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -99,6 +99,10 @@ x2goserver (3.0.99.6-0~x2go1) UNRELEASED; urgency=low x2gocleansessions. * Terminate x2godesktopsharing for current session on x2goterminate-session or when x2goruncommand is about to exit. + * Resume/suspend x2godesktopsharing during x2goresume-session, + x2gosuspend-session. + * Provide pluggable X2go extension system for main X2go server + functions. [ Ivan Kabaivanov ] * Makefile fix around man page installation in x2goserver-compat package. diff --git a/debian/x2goserver-extensions.install b/debian/x2goserver-extensions.install index 4983aa8..30d64d3 100644 --- a/debian/x2goserver-extensions.install +++ b/debian/x2goserver-extensions.install @@ -1,3 +1,4 @@ x2goserver-extensions/bin/x2go* /usr/bin/ x2goserver-extensions/VERSION.x2goserver-extensions /usr/share/x2go/versions/ -x2goserver-extensions/share/x2gofeature.d/* /usr/share/x2go/x2gofeature.d/ \ No newline at end of file +x2goserver-extensions/share/x2gofeature.d/* /usr/share/x2go/x2gofeature.d/ +x2goserver-extensions/lib/* /usr/lib/x2go/ \ No newline at end of file diff --git a/x2goserver-extensions/Makefile b/x2goserver-extensions/Makefile index 591a598..35f9c99 100755 --- a/x2goserver-extensions/Makefile +++ b/x2goserver-extensions/Makefile @@ -15,7 +15,7 @@ PREFIX=/usr/local ETCDIR=/etc/x2go BINDIR=$(PREFIX)/bin #SBINDIR=$(PREFIX)/sbin -#LIBDIR=$(PREFIX)/lib/x2go +LIBDIR=$(PREFIX)/lib/x2go MANDIR=$(PREFIX)/share/man SHAREDIR=$(PREFIX)/share/x2go @@ -53,11 +53,35 @@ install: install_scripts install_config install_man install_version install_scripts: $(INSTALL_DIR) $(DESTDIR)$(BINDIR) # $(INSTALL_DIR) $(DESTDIR)$(SBINDIR) -# $(INSTALL_DIR) $(DESTDIR)$(LIBDIR) + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR) + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)/pre-start.d + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)/post-start.d + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)/fail-start.d + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)/pre-resume.d + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)/post-resume.d + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)/fail-resume.d + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)/pre-suspend.d + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)/post-suspend.d + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)/fail-suspend.d + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)/pre-terminate.d + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)/post-terminate.d + $(INSTALL_DIR) $(DESTDIR)$(LIBDIR)/fail-terminate.d $(INSTALL_DIR) $(DESTDIR)$(SHAREDIR) + $(INSTALL_DIR) $(DESTDIR)$(SHAREDIR)/x2gofeature.d $(INSTALL_PROGRAM) bin/* $(DESTDIR)$(BINDIR)/ # $(INSTALL_PROGRAM) sbin/* $(DESTDIR)$(SBINDIR)/ -# $(INSTALL_FILE) lib/* $(DESTDIR)$(LIBDIR)/ + $(INSTALL_FILE) lib/extensions/pre-start.d/* $(DESTDIR)$(LIBDIR)/extensions/pre-start.d/ + $(INSTALL_FILE) lib/extensions/post-start.d/* $(DESTDIR)$(LIBDIR)/extensions/post-start.d/ + $(INSTALL_FILE) lib/extensions/fail-start.d/* $(DESTDIR)$(LIBDIR)/extensions/fail-start.d/ + $(INSTALL_FILE) lib/extensions/pre-resume.d/* $(DESTDIR)$(LIBDIR)/extensions/pre-resume.d/ + $(INSTALL_FILE) lib/extensions/post-resume.d/* $(DESTDIR)$(LIBDIR)/extensions/post-resume.d/ + $(INSTALL_FILE) lib/extensions/post-fail.d/* $(DESTDIR)$(LIBDIR)/extensions/fail-resume.d/ + $(INSTALL_FILE) lib/extensions/pre-suspend.d/* $(DESTDIR)$(LIBDIR)/extensions/pre-suspend.d/ + $(INSTALL_FILE) lib/extensions/post-suspend.d/* $(DESTDIR)$(LIBDIR)/extensions/post-suspend.d/ + $(INSTALL_FILE) lib/extensions/fail-suspend.d/* $(DESTDIR)$(LIBDIR)/extensions/fail-suspend.d/ + $(INSTALL_FILE) lib/extensions/pre-terminate.d/* $(DESTDIR)$(LIBDIR)/extensions/pre-terminate.d/ + $(INSTALL_FILE) lib/extensions/post-terminate.d/* $(DESTDIR)$(LIBDIR)/extensions/post-terminate.d/ + $(INSTALL_FILE) lib/extensions/fail-terminate.d/* $(DESTDIR)$(LIBDIR)/extensions/fail-terminate.d/ $(INSTALL_PROGRAM) share/x2gofeature.d/*.features $(DESTDIR)$(SHAREDIR)/x2gofeature.d/ install_config: @@ -84,7 +108,7 @@ 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 -# $(RM_DIR) $(DESTDIR)$(LIBDIR) || true + $(RM_DIR) $(DESTDIR)$(LIBDIR)/extensions/ || true for file in $(FEATURE_SCRIPTS); do $(RM_FILE) $(DESTDIR)$(SHAREDIR)/x2gofeature.d/$$file; done uninstall_config: diff --git a/x2goserver-compat/share/x2gofeature.d/x2goserver-compat.features b/x2goserver-extensions/bin/x2goserver-run-extensions similarity index 79% copy from x2goserver-compat/share/x2gofeature.d/x2goserver-compat.features copy to x2goserver-extensions/bin/x2goserver-run-extensions index 030aa6e..3b807e1 100755 --- a/x2goserver-compat/share/x2gofeature.d/x2goserver-compat.features +++ b/x2goserver-extensions/bin/x2goserver-run-extensions @@ -19,18 +19,19 @@ # # Copyright (C) 2011 Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de> # Copyright (C) 2011 Heinz-Markus Graesing <heinz-m.graesing@obviously-nice.de> +# Copyright (C) 2011 Mike Gabriel <mike.gabriel@das-netzwerkteam.de> + +set -e X2GO_LIB_PATH=`echo -n \$(x2gobasepath)/lib/x2go` $X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@" -X2GO_FEATURE=$1 - -# check for X2go server core features -case "$X2GO_FEATURE" in - - "X2GO_COMPAT_SCRIPTS") echo "ok"; exit 0;; - *) exit -1;; - -esac +X2GO_SESSION=$1 +X2GO_MODALITY=$2 +# scan extensions and execute them +ls $X2GO_LIB_PATH/extensions/$X2GO_MODALITY.d/* | sort | while read x2go_extension; do + $x2go_extension $X2GO_SESSION +done +exit 0 \ No newline at end of file diff --git a/x2goserver-extensions/lib/extensions/fail-resume.d/.placeholder b/x2goserver-extensions/lib/extensions/fail-resume.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/fail-runcommand.d/.placeholder b/x2goserver-extensions/lib/extensions/fail-runcommand.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/fail-start.d/.placeholder b/x2goserver-extensions/lib/extensions/fail-start.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/fail-suspend.d/.placeholder b/x2goserver-extensions/lib/extensions/fail-suspend.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/fail-terminate.d/.placeholder b/x2goserver-extensions/lib/extensions/fail-terminate.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/post-resume.d/.placeholder b/x2goserver-extensions/lib/extensions/post-resume.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/post-runcommand.d/.placeholder b/x2goserver-extensions/lib/extensions/post-runcommand.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/post-start.d/.placeholder b/x2goserver-extensions/lib/extensions/post-start.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/post-suspend.d/.placeholder b/x2goserver-extensions/lib/extensions/post-suspend.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/post-terminate.d/.placeholder b/x2goserver-extensions/lib/extensions/post-terminate.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/pre-resume.d/.placeholder b/x2goserver-extensions/lib/extensions/pre-resume.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/pre-runcommand.d/.placeholder b/x2goserver-extensions/lib/extensions/pre-runcommand.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/pre-start.d/.placeholder b/x2goserver-extensions/lib/extensions/pre-start.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/pre-suspend.d/.placeholder b/x2goserver-extensions/lib/extensions/pre-suspend.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/lib/extensions/pre-terminate.d/.placeholder b/x2goserver-extensions/lib/extensions/pre-terminate.d/.placeholder new file mode 100644 index 0000000..e69de29 diff --git a/x2goserver-extensions/share/x2gofeature.d/x2goserver-extensions.features b/x2goserver-extensions/share/x2gofeature.d/x2goserver-extensions.features index b2e384f..eb4e740 100755 --- a/x2goserver-extensions/share/x2gofeature.d/x2goserver-extensions.features +++ b/x2goserver-extensions/share/x2gofeature.d/x2goserver-extensions.features @@ -31,6 +31,7 @@ case "$X2GO_FEATURE" in "X2GO_SET_KEYBOARD") echo "ok"; exit 0;; "X2GO_LIST_MOUNTS") echo "ok"; exit 0;; + "X2GO_RUN_EXTENSIONS") echo "ok"; exit 0;; *) exit -1;; esac diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session index 5fa453a..03adf97 100755 --- a/x2goserver/bin/x2goresume-session +++ b/x2goserver/bin/x2goresume-session @@ -83,8 +83,18 @@ echo "$NEWOPTIONS" >${SESSION_DIR}/options $X2GO_LIB_PATH/x2goresume $X2GO_CLIENT $SESSION_NAME > /dev/null +# run x2goserver-extensions for pre-resume +x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME pre-resume + 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 && x2godesktopsharing_resume $SESSION_NAME + + # run x2goserver-extensions for post-resume + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME post-resume + } || { err_msg="ERROR: failed to resume session with ID $SESSION_NAME" echo "$err_msg" 1>&2 @@ -93,4 +103,9 @@ 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 + + # run x2goserver-extensions for fail-resume + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME fail-resume + } + diff --git a/x2goserver/bin/x2goruncommand b/x2goserver/bin/x2goruncommand index b14920f..136b770 100755 --- a/x2goserver/bin/x2goruncommand +++ b/x2goserver/bin/x2goruncommand @@ -109,6 +109,9 @@ then IMEXIT="true" fi +# run x2goserver-extensions for pre-runcommand +x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME pre-runcommand + sucessful_run=false if [ "$EXEC" != "" ] && [ -x $EXEC ]; then $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "running command $EXEC" @@ -122,9 +125,17 @@ if [ "$EXEC" != "" ] && [ -x $EXEC ]; then fi # if we reach here the possibility of a successful command execution is rather high successful_run=true + + # run x2goserver-extensions for post-runcommand + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME post-runcommand + else $X2GO_LIB_PATH/x2gosyslog "$0" "err" "ERROR: command $EXEC failed to execute" 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 + fi # stop x2godesktopsharing process gracefully... diff --git a/x2goserver/bin/x2gostartagent b/x2goserver/bin/x2gostartagent index 2759865..00c2a58 100755 --- a/x2goserver/bin/x2gostartagent +++ b/x2goserver/bin/x2gostartagent @@ -224,6 +224,9 @@ else XDMCPOPT="-query $X2GOXDMCP" fi +# run x2goserver-extensions for pre-start +x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME pre-start + if [ "$X2GO_STYPE" == "S" ]; then LD_LIBRARY_PATH=$X2GO_LIB x2goagent $X2GODPIOPTION_ -$SESSION_TYPE -auth ~/.Xauthority -S -shadow $SHADOW_DESKTOP -shadowmode $SHADOW_MODE -geometry ${X2GO_GEOMETRY} -name "X2GO-${SESSION_NAME}" ${NX_AGENT} 2>${SESSION_DIR}/session.log & else @@ -232,10 +235,20 @@ fi X2GO_AGENT_PID=$! X2GO_AGENT_RETVAL=$? -test $X2GO_AGENT_RETVAL && \ - $X2GO_LIB_PATH/x2gosyslog "$0" "notice" "successfully started X2go agent session with ID $SESSION_NAME" || \ +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 + +} || { $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 + +} + 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 diff --git a/x2goserver/bin/x2gosuspend-session b/x2goserver/bin/x2gosuspend-session index 973edc9..ddb86d6 100755 --- a/x2goserver/bin/x2gosuspend-session +++ b/x2goserver/bin/x2gosuspend-session @@ -38,8 +38,18 @@ killall -HUP knotify &>/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 && x2godesktopsharing-suspend $SESSION_NAME + +# run x2goserver-extensions for pre-suspend +x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME pre-suspend + 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 + } || { err_msg="ERROR: failed to suspend session with ID $SESSION_NAME" echo "$err_msg" 1>&2 @@ -48,7 +58,12 @@ 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 + + # run x2goserver-extensions for fail-suspend + x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME fail-suspend + } export HOSTNAME x2goumount-session $SESSION_NAME + diff --git a/x2goserver/bin/x2goterminate-session b/x2goserver/bin/x2goterminate-session index 50357f3..72b4912 100755 --- a/x2goserver/bin/x2goterminate-session +++ b/x2goserver/bin/x2goterminate-session @@ -36,10 +36,17 @@ X2GO_AGENT_PID=`echo "$X2GO_AGENT_PID"| awk {'print $1'}` $X2GO_LIB_PATH/x2gochangestatus 'F' $SESSION_NAME > /dev/null # stop x2godesktopsharing process gracefully... -x2gofeature X2GO_DESKTOPSHARING >/dev/null && x2godesktopsharing-terminate $SESSION_NAME +x2gofeature X2GO_DESKTOPSHARING &>/dev/null && x2godesktopsharing-terminate $SESSION_NAME + +# run x2goserver-extensions for pre-terminate +x2gofeature X2GO_RUN_EXTENSIONS &>/dev/null && x2goserver-run-extensions $SESSION_NAME pre-terminate kill -TERM $X2GO_AGENT_PID &>/dev/null && { $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 + } || { err_msg="ERROR: failed to terminate session with ID $SESSION_NAME" @@ -47,6 +54,10 @@ kill -TERM $X2GO_AGENT_PID &>/dev/null && { #echo "$err_msg" 1>&2 $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 + } export HOSTNAME 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).