The branch, build-baikal has been updated via daf3a935ab5b71b86d9cb43d2aa5d108a6883297 (commit) from 11c950ceffccdf78b2da5db02f33327b52dc1d04 (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 ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: debian/changelog | 2 ++ debian/x2goserver-extensions.install | 3 +- x2goserver-extensions/Makefile | 32 +++++++++++++++++--- .../bin/x2goserver-run-extensions | 19 ++++++------ .../x2gofeature.d/x2goserver-extensions.features | 1 + x2goserver/bin/x2goresume-session | 16 ++++++++-- x2goserver/bin/x2goruncommand | 11 +++++++ x2goserver/bin/x2gostartagent | 17 +++++++++-- x2goserver/bin/x2gosuspend-session | 12 ++++++++ x2goserver/bin/x2goterminate-session | 11 +++++++ 10 files changed, 106 insertions(+), 18 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 df9fede..a9cbbf2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -101,6 +101,8 @@ x2goserver (3.0.99.6-0~x2go1) UNRELEASED; urgency=low 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 d9c7345..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,7 +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 + } -# resume x2godesktopsharing, if it has been in use before the session got suspended -x2gofeature X2GO_DESKTOPSHARING &>/dev/null && x2godesktopsharing_resume $SESSION_NAME 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 3c554e7..ddb86d6 100755 --- a/x2goserver/bin/x2gosuspend-session +++ b/x2goserver/bin/x2gosuspend-session @@ -41,8 +41,15 @@ $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 @@ -51,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 ca283e1..72b4912 100755 --- a/x2goserver/bin/x2goterminate-session +++ b/x2goserver/bin/x2goterminate-session @@ -38,8 +38,15 @@ $X2GO_LIB_PATH/x2gochangestatus 'F' $SESSION_NAME > /dev/null # stop x2godesktopsharing process gracefully... 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).