This is an automated email from the git hooks/post-receive script. x2go pushed a change to branch master in repository x2goserver. from 08aa5e67 x2goserver/bin/x2gooptionsstring: rename x2goupdateoptionsstring to x2gooptionsstring. new 1cd395ad x2goserver/bin/x2gostartagent: fetch the agent PID as early as possible. new 2dd7dab4 x2goserver/bin/x2gooptionsstring: actually default to transformation mode if none was explicitly selected. new 5f00bd30 x2goserver/bin/x2goresume-session: make (most) non-exported variables lowercase, rename variables to more descriptive names, use typeset all over the place and change the variable type for some variables. new e24572f8 x2goserver/bin/x2goresume-session: use global-scope msg variable. new d8a0740a x2goserver/bin/x2goresume-session: update copyright notice. new afa2f408 x2goserver/bin/x2goresume-session: use printf more often instead of the not-so-portable echo builtin. new 0d054632 x2goserver/bin/x2goresume-session: fix err_msg => msg usage. new ff071233 debian/x2goserver.init: rewrite init script to make it idempotent and actually check if the cleanup service was started correctly. new e6e26ccf x2goserver/bin/x2gooptionsstring: replace uses of C<> with B<> in cases where the generated output of the C<> sequence might enclose it in double quotes and creates confusing documentation strings. new bd04c590 X2Go/Server/Agent/NX/Options.pm: same C<>-to-B<> conversion as in the previous commit. new 77d06791 debian/control: pull in base64 as a run-time dependency. new b37712b6 x2goserver.spec: add run-time base64 dependency. new 8835d7c1 x2goserver/bin/x2goresume-session: simplify where possible, use x2gooptionsstring instead of awk field splitting hackery. new 16fad423 x2goserver/bin/x2gostartagent: prevent logfile corruption. new 4768edb3 x2goserver-x2goagent/etc/keystrokes.cfg: sync with nx-libs 3.5.99.26. The 15 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Summary of changes: X2Go/Server/Agent/NX/Options.pm | 2 +- debian/changelog | 31 +++ debian/control | 1 + debian/x2goserver.init | 101 +++++++-- x2goserver-x2goagent/etc/keystrokes.cfg | 3 +- x2goserver.spec | 2 + x2goserver/bin/x2gooptionsstring | 10 +- x2goserver/bin/x2goresume-session | 361 +++++++++++++++----------------- x2goserver/bin/x2gostartagent | 6 +- 9 files changed, 299 insertions(+), 218 deletions(-) -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit 2dd7dab4ecb39f68ac4690444d00c259e5d24755 Author: Mihai Moldovan <ionic@ionic.de> Date: Sun Jan 3 19:24:18 2021 +0100 x2goserver/bin/x2gooptionsstring: actually default to transformation mode if none was explicitly selected. --- debian/changelog | 2 ++ x2goserver/bin/x2gooptionsstring | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 2bd19876..85d6387b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -383,6 +383,8 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium - x2goserver/bin/x2gooptionsstring: rename x2goupdateoptionsstring to x2gooptionsstring. - x2goserver/bin/x2gostartagent: fetch the agent PID as early as possible. + - x2goserver/bin/x2gooptionsstring: actually default to transformation + mode if none was explicitly selected. * debian/control: + Build-depend upon lsb-release for distro version detection. * debian/x2goserver.manpages: diff --git a/x2goserver/bin/x2gooptionsstring b/x2goserver/bin/x2gooptionsstring index 303af2da..408baf36 100755 --- a/x2goserver/bin/x2gooptionsstring +++ b/x2goserver/bin/x2gooptionsstring @@ -331,6 +331,10 @@ sub handle_mode { } } } + elsif ((!($transform)) && (!($extract))) { + # No mode explicitly passed in, default to transformation mode. + $mode_aggregate |= (&{(MODES)[0]}())[1]; + } } # Okay, now check for mutual exclusiveness and map to return value. -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit 1cd395ad72f64431a70ea4f98f27a0d0a0901934 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat Jan 2 16:16:02 2021 +0100 x2goserver/bin/x2gostartagent: fetch the agent PID as early as possible. --- debian/changelog | 1 + x2goserver/bin/x2gostartagent | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index 16966f97..2bd19876 100644 --- a/debian/changelog +++ b/debian/changelog @@ -382,6 +382,7 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium x2gooptionsstring. - x2goserver/bin/x2gooptionsstring: rename x2goupdateoptionsstring to x2gooptionsstring. + - x2goserver/bin/x2gostartagent: fetch the agent PID as early as possible. * debian/control: + Build-depend upon lsb-release for distro version detection. * debian/x2goserver.manpages: diff --git a/x2goserver/bin/x2gostartagent b/x2goserver/bin/x2gostartagent index 887cb322..1c62b6ab 100755 --- a/x2goserver/bin/x2gostartagent +++ b/x2goserver/bin/x2gostartagent @@ -472,10 +472,10 @@ else NX_TEMP='/tmp' "${AGENTBIN}" ${X2GO_NXAGENT_OPTIONS} ${NOLISTOPT} ${X2GODPIOPTION_} ${XDMCPOPT} -${SESSION_TYPE} ${NOEXITPARAM} -auth "${XAUTHORITY}" ${agent_geometry} -name "${SESSION_WINDOW_TITLE}" "${NX_AGENT}" 2>"${SESSION_LOG}" & fi -ln -s -- "${SESSION_DIR}" "${X2GO_ROOT}/C-${SESSION_NAME}" - X2GO_AGENT_PID="${!}" +ln -s -- "${SESSION_DIR}" "${X2GO_ROOT}/C-${SESSION_NAME}" + if [[ -n "${SHADREQ_USER}" ]]; then "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'info' "creating new shadow session: ${SESSION_NAME} ${X2GO_COOKIE} ${X2GO_AGENT_PID} ${X2GO_CLIENT} ${GR_PORT} ${SOUND_PORT} ${FS_PORT} ${SHADREQ_USER}" "${X2GO_LIB_PATH}/x2gocreateshadowsession" "${SESSION_NAME}" "${X2GO_COOKIE}" "${X2GO_AGENT_PID}" "${X2GO_CLIENT}" "${GR_PORT}" "${SOUND_PORT}" "${FS_PORT}" "${SHADREQ_USER}" >'/dev/null' -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit ff07123350b20d864f2e1bbdb54e7a102fc95332 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 14 12:46:31 2021 +0200 debian/x2goserver.init: rewrite init script to make it idempotent and actually check if the cleanup service was started correctly. --- debian/changelog | 3 ++ debian/x2goserver.init | 101 +++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 83 insertions(+), 21 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1d3f9c67..84ca3588 100644 --- a/debian/changelog +++ b/debian/changelog @@ -423,6 +423,9 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium "double-quote" the resulting string. * debian/libx2go-server-perl.install: + Remove duplicated entry for X2Go/Utils.pm. + * debian/x2goserver.init: + + Rewrite init script to make it idempotent and actually check if the + cleanup service was started correctly. [ Oleksandr Shneyder ] * New upstream version (4.1.0.4): diff --git a/debian/x2goserver.init b/debian/x2goserver.init index 9d609571..fdf5d2b8 100644 --- a/debian/x2goserver.init +++ b/debian/x2goserver.init @@ -10,29 +10,92 @@ # Description: The X2Go daemon is responsible for post-session clean-ups ### END INIT INFO -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -XSOCKDIR=/tmp/.X11-unix +PATH='/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin' +XSOCKDIR='/tmp/.X11-unix' +DAEMON='/usr/sbin/x2gocleansessions' +PIDFILE='/var/run/x2goserver.pid' +NAME='X2Go Server clean-up daemon' -. /lib/lsb/init-functions +. '/lib/lsb/init-functions' start() { - if [ ! -d $XSOCKDIR ] + # Create socket dir if necessary. + if [ ! -d "${XSOCKDIR}" ] then - mkdir $XSOCKDIR - chmod 1777 $XSOCKDIR + mkdir "${XSOCKDIR}" + chmod '1777' "${XSOCKDIR}" fi - log_action_msg "Cleaning up stale X2Go sessions" - x2gocleansessions + + log_daemon_msg "Starting ${NAME}" "${DAEMON##*/}" + + # Check if daemon is already running. + local status='0' + pidofproc -p "${PIDFILE}" "${DAEMON}" >'/dev/null'|| status="${?}" + if [ '0' = "${status}" ]; then + # It is, nothing else to do. + log_end_msg '0' + return '0' + fi + + # Otherwise, start it. + status='0' + "${DAEMON}" || status="${?}" + + # Check if that was successful. + if [ '0' != "${status}" ]; then + log_end_msg "${status}" + return "${status}" + fi + + # It was, sleep a bit and ... + sleep '1' + + # ... recheck its status, in case it died in-between. + status='0' + pidofproc -p "${PIDFILE}" "${DAEMON}" >'/dev/null' || status="${?}" + log_end_msg "${status}" + + return "${status}" } stop() { - # kill x2gocleansessions, ignore on failure - killall x2gocleansessions || true + log_daemon_msg "Stopping ${NAME}" "${DAEMON##*/}" + + # Check if daemon is already dead. + local status='0' + pidofproc -p "${PIDFILE}" "${DAEMON}" >'/dev/null' || status="${?}" + if [ '0' != "${status}" ]; then + # It is, nothing else to do. + log_end_msg '0' + return '0' + fi + + # Otherwise, let's kill it. + status='0' + # Make sure to truncate the command name to 15 characters because of Linux kernel limitations. + # Also, hope that other kernels also limit the command name to 15 characters... + local proc_name="$(echo "${DAEMON##*/}" | cut -c '1-15')" + start-stop-daemon --stop --quiet --oknodo --name "${proc_name}" --pidfile "${PIDFILE}" || status="${?}" + + # Check its status. + if [ '0' != "${status}" ]; then + # Process wasn't killed, which is weird, since we made sure that it did via pidofproc. + # Maybe the process name truncation had side-effects. + # In any case, report the failure. + log_end_msg "${status}" + return "${status}" + else + # Otherwise, clean up PID file. + pidofproc -p "${PIDFILE}" "${DAEMON}" >'/dev/null' || rm -f "${PIDFILE}" + fi + + log_end_msg "${status}" + return "${status}" } -case "$1" in +case "${1}" in start) start ;; @@ -41,21 +104,17 @@ case "$1" in ;; reload|force-reload|restart) stop - sleep 1 + sleep '1' start ;; status) - if ps -C x2gocleansessions 1>/dev/null 2>/dev/null; then - log_action_msg "X2Go Server clean-up daemon is up and running" - else - log_warning_msg "X2Go Server clean-up daemon is down" - fi + status_of_proc -p "${PIDFILE}" "${DAEMON}" "${NAME}" ;; *) - N=/etc/init.d/x2goserver - echo "Usage: $N {start|stop|restart|force-reload}" >&2 - exit 1 + N='/etc/init.d/x2goserver' + echo "Usage: ${N} {start|stop|restart|force-reload}" >&2 + exit '1' ;; esac -exit 0 +exit '0' -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit afa2f4086c9cd05707c1c9b6b6a8161f2c55c7f4 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jan 6 21:56:16 2021 +0100 x2goserver/bin/x2goresume-session: use printf more often instead of the not-so-portable echo builtin. --- debian/changelog | 2 ++ x2goserver/bin/x2goresume-session | 9 +++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index 592b36a4..2553f12b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -391,6 +391,8 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium non-functional changes. - x2goserver/bin/x2goresume-session: use global-scope msg variable. - x2goserver/bin/x2goresume-session: update copyright notice. + - x2goserver/bin/x2goresume-session: use printf more often instead of the + not-so-portable echo builtin. * debian/control: + Build-depend upon lsb-release for distro version detection. * debian/x2goserver.manpages: diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session index 4da94741..2432c72c 100755 --- a/x2goserver/bin/x2goresume-session +++ b/x2goserver/bin/x2goresume-session @@ -343,7 +343,7 @@ if [[ -z "${x2go_client}" ]]; then x2go_client="${current_host_name}" fi -echo "${agent_options_new}" >"${session_dir}/options" +printf '%s\n' "${agent_options_new}" >"${session_dir}/options" # run x2goserver-extensions for pre-resume x2gofeature 'X2GO_RUN_EXTENSIONS' &>'/dev/null' && x2goserver-run-extensions "${session_name}" 'pre-resume' || true @@ -381,10 +381,7 @@ else x2gofeature 'X2GO_RUN_EXTENSIONS' &>'/dev/null' && x2goserver-run-extensions "${session_name}" 'fail-resume' || true fi -echo "gr_port=${gr_port}" -echo "sound_port=${sound_port}" -echo "fs_port=${fs_port}" +printf 'gr_port=%d\nsound_port=%d\nfs_port=%d\n' "${gr_port}" "${sound_port}" "${fs_port}" if [[ "${telekinesis_enabled}" = '1' ]]; then - echo "tekictrl_port=${tekictrl_port}" - echo "tekidata_port=${tekidata_port}" + printf 'tekictrl_port=%d\ntekidata_port=%d\n' "${tekictrl_port}" "${tekidata_port}" fi -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit 5f00bd3047532ca41e6eabc03ee40678026afacf Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jan 6 21:47:55 2021 +0100 x2goserver/bin/x2goresume-session: make (most) non-exported variables lowercase, rename variables to more descriptive names, use typeset all over the place and change the variable type for some variables. Mostly non-functional changes. --- debian/changelog | 4 + x2goserver/bin/x2goresume-session | 335 +++++++++++++++++++------------------- 2 files changed, 175 insertions(+), 164 deletions(-) diff --git a/debian/changelog b/debian/changelog index 85d6387b..e6a7ad7f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -385,6 +385,10 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium - x2goserver/bin/x2gostartagent: fetch the agent PID as early as possible. - x2goserver/bin/x2gooptionsstring: actually default to transformation mode if none was explicitly selected. + - x2goserver/bin/x2goresume-session: make (most) non-exported variables + lowercase, rename variables to more descriptive names, use typeset all + over the place and change the variable type for some variables. Mostly + non-functional changes. * debian/control: + Build-depend upon lsb-release for distro version detection. * debian/x2goserver.manpages: diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session index 491618f0..67a81741 100755 --- a/x2goserver/bin/x2goresume-session +++ b/x2goserver/bin/x2goresume-session @@ -19,30 +19,30 @@ # Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. -X2GO_LIB_PATH="$(x2gopath 'libexec')" +typeset x2go_lib_path="$(x2gopath 'libexec')" if [[ "${#}" -lt '7' ]]; then typeset msg='not enough command line arguments' echo "${msg}" >&2 - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'err' "${msg}" + "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${msg}" exit '1' fi -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_CLIPBOARD="${8}" -typeset X2GO_XINERAMA="${9}" +typeset session_name="${1}" +typeset geometry_val="${2}" +typeset link_val="${3}" +typeset pack_val="${4}" +#typeset kbd_layout_val="${5}" +typeset kbd_type_val="${6}" +typeset set_kbd="${7}" +typeset clipboard_val="${8}" +typeset xinerama_val="${9}" -X2GO_AGENT_PID="$("${X2GO_LIB_PATH}/x2gogetagent" "${SESSION_NAME}")" +typeset x2go_agent_pid="$("${x2go_lib_path}/x2gogetagent" "${session_name}")" -X2GO_ROOT="${HOME}/.x2go" -X2GO_RESIZE='1' -X2GO_FULLSCREEN='0' +typeset x2go_root="${HOME}/.x2go" +typeset resize_val='1' +typeset fullscreen_val='0' # ${HOSTNAME} should be automatically set by bash via gethostname(2), IFF this # variable is not already set in the environment. @@ -59,7 +59,7 @@ typeset current_host_name='' if ! current_host_name="$(hostname)"; then typeset msg="Unable to retrieve machine's hostname. This is required. Aborting session startup." - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'err' "${msg}" + "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${msg}" # Make x2goclient fail. echo "${msg}" >&2 @@ -67,137 +67,140 @@ if ! current_host_name="$(hostname)"; then fi # refresh up ssh-agent-forwarding socket file symlink -X2GOSSH_AUTH_SOCK="${X2GO_ROOT}/C-${SESSION_NAME}/ssh-agent.PID" -if [[ -L "${X2GOSSH_AUTH_SOCK}" ]]; then - rm -f -- "${X2GOSSH_AUTH_SOCK}" +typeset x2go_ssh_auth_sock="${x2go_root}/C-${session_name}/ssh-agent.PID" +if [[ -L "${x2go_ssh_auth_sock}" ]]; then + rm -f -- "${x2go_ssh_auth_sock}" fi if [[ -S "${SSH_AUTH_SOCK}" ]]; then - ln -sf -- "${SSH_AUTH_SOCK}" "${X2GOSSH_AUTH_SOCK}" + ln -sf -- "${SSH_AUTH_SOCK}" "${x2go_ssh_auth_sock}" fi -STATE="$("${X2GO_LIB_PATH}/x2gogetagentstate" "${SESSION_NAME}")" +typeset state="$("${x2go_lib_path}/x2gogetagentstate" "${session_name}")" # exit if session terminated -if [[ "${STATE}" = 'TERMINATED' ]] || [[ "${STATE}" = 'TERMINATING' ]]; then - typeset msg="session ${SESSION_NAME} terminated" +if [[ "${state}" = 'TERMINATED' ]] || [[ "${state}" = 'TERMINATING' ]]; then + typeset msg="session ${session_name} terminated" echo "${msg}" >&2 - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'err' "${msg}" + "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${msg}" exit '3' fi typeset -i i='0' # wait 15 sec. for starting session -while [[ "${STATE}" = 'RESUMING' ]] || [[ "${STATE}" = 'STARTING' ]]; do +while [[ "${state}" = 'RESUMING' ]] || [[ "${state}" = 'STARTING' ]]; do sleep '1' ((++i)) #if session still not started, try to suspend it if [[ "${i}" -gt '15' ]]; then - x2gosuspend-session "${SESSION_NAME}" + x2gosuspend-session "${session_name}" sleep '2' i='0' fi - STATE="$("${X2GO_LIB_PATH}/x2gogetagentstate" "${SESSION_NAME}")" + state="$("${x2go_lib_path}/x2gogetagentstate" "${session_name}")" done #suspend running session -if [[ "${STATE}" = 'RUNNING' ]]; then - x2gosuspend-session "${SESSION_NAME}" +if [[ "${state}" = 'RUNNING' ]]; then + x2gosuspend-session "${session_name}" sleep '2' - STATE="$("${X2GO_LIB_PATH}/x2gogetagentstate" "${SESSION_NAME}")" + state="$("${x2go_lib_path}/x2gogetagentstate" "${session_name}")" fi i='0' # wait 45 sec., while session suspending -while [[ "${STATE}" = 'SUSPENDING' ]]; do +while [[ "${state}" = 'SUSPENDING' ]]; do sleep '1' ((++i)) if [[ "${i}" -gt '45' ]]; then msg='it is taking too long to suspend the session-to-be-resumed; it is possible that the session is in a damaged state' echo "${msg}" >&2 - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'err' "${msg}" + "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${msg}" exit '4' fi - STATE="$("${X2GO_LIB_PATH}/x2gogetagentstate" "${SESSION_NAME}")" + state="$("${x2go_lib_path}/x2gogetagentstate" "${session_name}")" done -"${X2GO_LIB_PATH}/x2gormforward" "${SESSION_NAME}" +"${x2go_lib_path}/x2gormforward" "${session_name}" -"${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'info' "$(basename "${0}") called with options: ${*}" +"${x2go_lib_path}/x2gosyslog" "${0}" 'info' "$(basename "${0}") called with options: ${*}" -X2GO_TELEKINESIS_ENABLED="$(perl -e 'use X2Go::Config qw( get_config ); use X2Go::Utils qw( is_true ); my $Config= get_config(); print is_true($Config->param("telekinesis.enable"));')" +typeset telekinesis_enabled="$(perl -e 'use X2Go::Config qw( get_config ); use X2Go::Utils qw( is_true ); my $Config= get_config(); print is_true($Config->param("telekinesis.enable"));')" # rootless sessions of geometry fullscreen are invalid -if [[ "${X2GO_GEOMETRY}" = 'fullscreen' ]] && [[ "${SESSION_TYPE}" = 'R' ]]; then - X2GO_GEOMETRY='' +if [[ "${geometry_val}" = 'fullscreen' ]] && [[ "${SESSION_TYPE}" = 'R' ]]; then + geometry_val='' fi # no geometry for desktop sessions shall result in fullscreen desktop sessions -if [[ -z "${X2GO_GEOMETRY}" ]] && [[ "${SESSION_TYPE}" = 'D' ]]; then - X2GO_GEOMETRY="fullscreen" +if [[ -z "${geometry_val}" ]] && [[ "${SESSION_TYPE}" = 'D' ]]; then + geometry_val='fullscreen' fi -if [[ "${X2GO_GEOMETRY}" = 'fullscreen' ]]; then - X2GO_FULLSCREEN='1' +if [[ "${geometry_val}" = 'fullscreen' ]]; then + fullscreen_val='1' fi -SESSIONINFO="$(x2golistsessions | grep "${SESSION_NAME}" | sed 's/|/,/g')" +typeset session_info="$(x2golistsessions | grep "${session_name}" | sed 's/|/,/g')" -GR_PORT="$(awk -F ',' '{print $9}' <<< "${SESSIONINFO}")" -SOUND_PORT="$(awk -F ',' '{print $10}' <<< "${SESSIONINFO}")" -FS_PORT="$(awk -F ',' '{print $14}' <<< "${SESSIONINFO}")" -#SERVER="$(awk -F ',' '{print $4}' <<< "${SESSIONINFO}")" +# FIXME: what is "GR" supposed to mean? General? Nobody knows and it was never +# documented ... +typeset gr_port="$(awk -F ',' '{print $9}' <<< "${session_info}")" +typeset sound_port="$(awk -F ',' '{print $10}' <<< "${session_info}")" +typeset fs_port="$(awk -F ',' '{print $14}' <<< "${session_info}")" +#typeset server="$(awk -F ',' '{print $4}' <<< "${session_info}")" -"${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'debug' "old ports: ${GR_PORT}, ${SOUND_PORT}, ${FS_PORT}" +"${x2go_lib_path}/x2gosyslog" "${0}" 'debug' "old ports: ${gr_port}, ${sound_port}, ${fs_port}" typeset X2GO_INTERNAL_SOURCE='1' # Make shellcheck happy. : "${X2GO_INTERNAL_SOURCE}" -. "${X2GO_LIB_PATH}/x2gocheckport" +. "${x2go_lib_path}/x2gocheckport" unset X2GO_INTERNAL_SOURCE # define the full path to the ss utility typeset ss="$(PATH="${PATH}:/usr/sbin:/sbin" type -P 'ss')" #check if saved in DB ports free -if ! check_system_port "${ss}" "${GR_PORT}"; then - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'debug' "port ${GR_PORT} is already in use" - "${X2GO_LIB_PATH}/x2gormport" "${current_host_name}" "${SESSION_NAME}" "${GR_PORT}" - GR_PORT='' +if ! check_system_port "${ss}" "${gr_port}"; then + "${x2go_lib_path}/x2gosyslog" "${0}" 'debug' "'gr'(?) port ${gr_port} is already in use" + "${x2go_lib_path}/x2gormport" "${current_host_name}" "${session_name}" "${gr_port}" + gr_port='' fi -if ! check_system_port "${ss}" "${SOUND_PORT}"; then - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'debug' "port ${SOUND_PORT} is already in use" - "${X2GO_LIB_PATH}/x2gormport" "${current_host_name}" "${SESSION_NAME}" "${SOUND_PORT}" - SOUND_PORT='' +if ! check_system_port "${ss}" "${sound_port}"; then + "${x2go_lib_path}/x2gosyslog" "${0}" 'debug' "sound port ${sound_port} is already in use" + "${x2go_lib_path}/x2gormport" "${current_host_name}" "${session_name}" "${sound_port}" + sound_port='' fi -if ! check_system_port "${ss}" "${FS_PORT}"; then - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'debug' "port ${FS_PORT} is already in use" - "${X2GO_LIB_PATH}/x2gormport" "${current_host_name}" "${SESSION_NAME}" "${FS_PORT}" - FS_PORT='' +if ! check_system_port "${ss}" "${fs_port}"; then + "${x2go_lib_path}/x2gosyslog" "${0}" 'debug' "file system forwarding port ${fs_port} is already in use" + "${x2go_lib_path}/x2gormport" "${current_host_name}" "${session_name}" "${fs_port}" + fs_port='' fi -if [[ "${X2GO_TELEKINESIS_ENABLED}" = '1' ]]; then - TEKICTRL_PORT="$(awk -F ',' '{print $15}' <<< "${SESSIONINFO}")" - TEKIDATA_PORT="$(awk -F ',' '{print $16}' <<< "${SESSIONINFO}")" - if ! check_system_port "${ss}" "${TEKICTRL_PORT}"; then - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'debug' "port ${TEKICTRL_PORT} is already in use" - "${X2GO_LIB_PATH}/x2gormport" "${current_host_name}" "${SESSION_NAME}" "${TEKICTRL_PORT}" - TEKICTRL_PORT='' +if [[ "${telekinesis_enabled}" = '1' ]]; then + typeset tekictrl_port="$(awk -F ',' '{print $15}' <<< "${session_info}")" + typeset tekidata_port="$(awk -F ',' '{print $16}' <<< "${session_info}")" + if ! check_system_port "${ss}" "${tekictrl_port}"; then + "${x2go_lib_path}/x2gosyslog" "${0}" 'debug' "port ${tekictrl_port} is already in use" + "${x2go_lib_path}/x2gormport" "${current_host_name}" "${session_name}" "${tekictrl_port}" + tekictrl_port='' fi - if ! check_system_port "${ss}" "${TEKIDATA_PORT}"; then - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'debug' "port ${TEKIDATA_PORT} is already in use" - "${X2GO_LIB_PATH}/x2gormport" "${current_host_name}" "${SESSION_NAME}" "${TEKIDATA_PORT}" - TEKIDATA_PORT='' + if ! check_system_port "${ss}" "${tekidata_port}"; then + "${x2go_lib_path}/x2gosyslog" "${0}" 'debug' "port ${tekidata_port} is already in use" + "${x2go_lib_path}/x2gormport" "${current_host_name}" "${session_name}" "${tekidata_port}" + tekidata_port='' fi else - "${X2GO_LIB_PATH}/x2gormport" "${current_host_name}" "${SESSION_NAME}" "${TEKICTRL_PORT}" - "${X2GO_LIB_PATH}/x2gormport" "${current_host_name}" "${SESSION_NAME}" "${TEKIDATA_PORT}" - TEKICTRL_PORT='0' - TEKIDATA_PORT='0' + "${x2go_lib_path}/x2gormport" "${current_host_name}" "${session_name}" "${tekictrl_port}" + "${x2go_lib_path}/x2gormport" "${current_host_name}" "${session_name}" "${tekidata_port}" + tekictrl_port='0' + tekidata_port='0' fi -if ! SSH_PORT="$("${X2GO_LIB_PATH}/x2gogetrandomport")"; then +typeset -i ssh_port='0' +if ! ssh_port="$("${x2go_lib_path}/x2gogetrandomport")"; then typeset msg="Unable to get (pseudo-)randomized starting port value." - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'err' "${msg}" + "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${msg}" # Make x2goclient fail. echo "${msg}" >&2 @@ -208,62 +211,62 @@ typeset -i retry='0' typeset -i max_retry='10' typeset -i free_port='0' typeset output='' -while [[ -z "${GR_PORT}" ]] || [[ -z "${SOUND_PORT}" ]] || [[ -z "${FS_PORT}" ]] || [[ -z "${TEKICTRL_PORT}" ]] || [[ -z "${TEKIDATA_PORT}" ]]; do +while [[ -z "${gr_port}" ]] || [[ -z "${sound_port}" ]] || [[ -z "${fs_port}" ]] || [[ -z "${tekictrl_port}" ]] || [[ -z "${tekidata_port}" ]]; do output='' for ((retry = 0; retry < max_retry; ++retry)); do free_port='0' - if free_port="$("${X2GO_LIB_PATH}/x2gogetfreeport" "${current_host_name}" "${ss}" 'lowlevel' "${SSH_PORT}")"; then - SSH_PORT="${free_port}" + if free_port="$("${x2go_lib_path}/x2gogetfreeport" "${current_host_name}" "${ss}" 'lowlevel' "${ssh_port}")"; then + ssh_port="${free_port}" - output="$("${X2GO_LIB_PATH}/x2goinsertport" "${current_host_name}" "${SESSION_NAME}" "${SSH_PORT}")" + output="$("${x2go_lib_path}/x2goinsertport" "${current_host_name}" "${session_name}" "${ssh_port}")" if [[ "${output}" = 'inserted' ]]; then break else - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'warning' "unable to insert port into database. Retrying (run $((retry + 1)))." + "${x2go_lib_path}/x2gosyslog" "${0}" 'warning' "unable to insert port into database. Retrying (run $((retry + 1)))." fi else - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'warning' "no free port available, cannot start new session. Retrying (run $((retry + 1)))." + "${x2go_lib_path}/x2gosyslog" "${0}" 'warning' "no free port available, cannot start new session. Retrying (run $((retry + 1)))." fi done if [[ "${output}" != 'inserted' ]]; then - typeset msg="Unable to find free port or insert new session into database; parameters: hostname (${current_host_name}), session name (${SESSION_NAME}) and port (${SSH_PORT})." - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'err' "${msg}" + typeset msg="Unable to find free port or insert new session into database; parameters: hostname (${current_host_name}), session name (${session_name}) and port (${ssh_port})." + "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${msg}" # Make x2goclient fail. echo "${msg}" >&2 exit '6' fi - if [[ -z "${GR_PORT}" ]]; then - GR_PORT="${SSH_PORT}" - elif [[ -z "${SOUND_PORT}" ]]; then - SOUND_PORT="${SSH_PORT}" - elif [[ -z "${FS_PORT}" ]]; then - FS_PORT="${SSH_PORT}" - elif [[ -z "${TEKICTRL_PORT}" ]]; then - TEKICTRL_PORT="${SSH_PORT}" - elif [[ -z "${TEKIDATA_PORT}" ]]; then - TEKIDATA_PORT="${SSH_PORT}" + if [[ -z "${gr_port}" ]]; then + gr_port="${ssh_port}" + elif [[ -z "${sound_port}" ]]; then + sound_port="${ssh_port}" + elif [[ -z "${fs_port}" ]]; then + fs_port="${ssh_port}" + elif [[ -z "${tekictrl_port}" ]]; then + tekictrl_port="${ssh_port}" + elif [[ -z "${tekidata_port}" ]]; then + tekidata_port="${ssh_port}" fi done -SESSION_DIR="${X2GO_ROOT}/C-${SESSION_NAME}" -OPTIONS="$(< "${SESSION_DIR}/options")" +typeset session_dir="${x2go_root}/C-${session_name}" +typeset agent_options="$(< "${session_dir}/options")" -LSTR="$(awk -F ',' '{print $2}' <<< "${OPTIONS}")" -PSTR="$(awk -F ',' '{print $3}' <<< "${OPTIONS}")" -KTSTR="$(awk -F ',' '{print $12}' <<< "${OPTIONS}")" -GSTR="$(awk -F ',' '{print $13}' <<< "${OPTIONS}")" +typeset orig_link_opt="$(awk -F ',' '{print $2}' <<< "${agent_options}")" +typeset orig_pack_opt="$(awk -F ',' '{print $3}' <<< "${agent_options}")" +typeset orig_kbd_type_opt="$(awk -F ',' '{print $12}' <<< "${agent_options}")" +typeset orig_geometry_opt="$(awk -F ',' '{print $13}' <<< "${agent_options}")" typeset xinerama_orig='' -test_GSTR="$(sed -e 's/geometry=.*//' <<< "${GSTR}")" -if [[ -n "${test_GSTR}" ]]; then - GSTR='geometry=' - xinerama_orig="$(awk -F ',' '{print $13}' <<< "${OPTIONS}")" +typeset test_orig_geometry_opt="$(sed -e 's/geometry=.*//' <<< "${orig_geometry_opt}")" +if [[ -n "${test_orig_geometry_opt}" ]]; then + orig_geometry_opt='geometry=' + xinerama_orig="$(awk -F ',' '{print $13}' <<< "${agent_options}")" else - xinerama_orig="$(awk -F ',' '{print $14}' <<< "${OPTIONS}")" + xinerama_orig="$(awk -F ',' '{print $14}' <<< "${agent_options}")" fi # Sessions started with older X2Go Server versions do not feature @@ -279,104 +282,108 @@ fi # Only one component missing => either geometry or xinerama at position 13, # everything else starts from position 14. -if { [[ -n "${test_GSTR}" ]] && [[ -z "${test_xinerama}" ]]; } || { [[ -z "${test_GSTR}" ]] && [[ -n "${test_xinerama}" ]]; }; then - RSTR="$(awk -F ',' '{print $14}' <<< "${OPTIONS}")" - FSTR="$(awk -F ',' '{print $15}' <<< "${OPTIONS}")" - LISTSTR="$(awk -F ',' '{print $17}' <<< "${OPTIONS}")" - CLIPBOARD="$(awk -F ',' '{print $18}' <<< "${OPTIONS}")" +typeset orig_resize_opt='' +typeset orig_fullscreen_opt='' +typeset orig_listen_opt='' +typeset orig_clipboard_opt='' +if { [[ -n "${test_orig_geometry_opt}" ]] && [[ -z "${test_xinerama}" ]]; } || { [[ -z "${test_orig_geometry_opt}" ]] && [[ -n "${test_xinerama}" ]]; }; then + orig_resize_opt="$(awk -F ',' '{print $14}' <<< "${agent_options}")" + orig_fullscreen_opt="$(awk -F ',' '{print $15}' <<< "${agent_options}")" + orig_listen_opt="$(awk -F ',' '{print $17}' <<< "${agent_options}")" + orig_clipboard_opt="$(awk -F ',' '{print $18}' <<< "${agent_options}")" # Neither geometry nor xinerama given, everything else starts at position 13. -elif [[ -n "${test_GSTR}" ]]; then - RSTR="$(awk -F ',' '{print $13}' <<< "${OPTIONS}")" - FSTR="$(awk -F ',' '{print $14}' <<< "${OPTIONS}")" - LISTSTR="$(awk -F ',' '{print $16}' <<< "${OPTIONS}")" - CLIPBOARD="$(awk -F ',' '{print $17}' <<< "${OPTIONS}")" +elif [[ -n "${test_orig_geometry_opt}" ]]; then + orig_resize_opt="$(awk -F ',' '{print $13}' <<< "${agent_options}")" + orig_fullscreen_opt="$(awk -F ',' '{print $14}' <<< "${agent_options}")" + orig_listen_opt="$(awk -F ',' '{print $16}' <<< "${agent_options}")" + orig_clipboard_opt="$(awk -F ',' '{print $17}' <<< "${agent_options}")" # Both geometry and xinerama given, everything else starts at position 15. else - RSTR="$(awk -F ',' '{print $15}' <<< "${OPTIONS}")" - FSTR="$(awk -F ',' '{print $16}' <<< "${OPTIONS}")" - LISTSTR="$(awk -F ',' '{print $18}' <<< "${OPTIONS}")" - CLIPBOARD="$(awk -F ',' '{print $19}' <<< "${OPTIONS}")" + orig_resize_opt="$(awk -F ',' '{print $15}' <<< "${agent_options}")" + orig_fullscreen_opt="$(awk -F ',' '{print $16}' <<< "${agent_options}")" + orig_listen_opt="$(awk -F ',' '{print $18}' <<< "${agent_options}")" + orig_clipboard_opt="$(awk -F ',' '{print $19}' <<< "${agent_options}")" fi -KTSTR="$(sed -e 's#/#\\/#' <<< "${KTSTR}")" -X2GO_KBD_TYPE="$(sed -e 's#/#\\/#' <<< "${X2GO_KBD_TYPE}")" +orig_kbd_type_opt="$(sed -e 's#/#\\/#' <<< "${orig_kbd_type_opt}")" +kbd_type_val="$(sed -e 's#/#\\/#' <<< "${kbd_type_val}")" -if [[ "${X2GO_SET_KBD}" = '0' ]] || [[ "${X2GO_KBD_TYPE}" = 'auto' ]]; then +if [[ "${set_kbd}" = '0' ]] || [[ "${kbd_type_val}" = 'auto' ]]; then keyboard_type='null\/null' else - keyboard_type="${X2GO_KBD_TYPE}" + keyboard_type="${kbd_type_val}" fi typeset tmp_regex='^(0|none|client|server|both|1)$' -if [[ -n "${X2GO_CLIPBOARD}" ]] && [[ "${X2GO_CLIPBOARD}" =~ ${tmp_regex} ]]; then - clipboard="clipboard=${X2GO_CLIPBOARD}" +if [[ -n "${clipboard_val}" ]] && [[ "${clipboard_val}" =~ ${tmp_regex} ]]; then + clipboard="clipboard=${clipboard_val}" else clipboard='clipboard=both' fi -typeset xinerama_option="$("${X2GO_LIB_PATH}/x2goistrue" "${X2GO_XINERAMA}")" +typeset xinerama_option="$("${x2go_lib_path}/x2goistrue" "${xinerama_val}")" -NEWOPTIONS="$(sed -e "s/${LSTR}/link=${X2GO_LINK}/" \ - -e "s/${PSTR}/pack=${X2GO_PACK}/" \ - -e "s/${KTSTR}/kbtype=${keyboard_type}/" \ - -e "s/${GSTR}/geometry=${X2GO_GEOMETRY}/" \ +typeset agent_options_new="$(sed -e "s/${orig_link_opt}/link=${link_val}/" \ + -e "s/${orig_pack_opt}/pack=${pack_val}/" \ + -e "s/${orig_kbd_type_opt}/kbtype=${keyboard_type}/" \ + -e "s/${orig_geometry_opt}/geometry=${geometry_val}/" \ -e "s/${xinerama_orig}/xinerama=${xinerama_option}/" \ - -e "s/${RSTR}/resize=${X2GO_RESIZE}/" \ - -e "s/${LISTSTR}/listen=${GR_PORT}/" \ - -e "s/${FSTR}/fullscreen=${X2GO_FULLSCREEN}/" \ - -e "s/${CLIPBOARD}/${clipboard}/" <<< "${OPTIONS}")" + -e "s/${orig_resize_opt}/resize=${resize_val}/" \ + -e "s/${orig_fullscreen_opt}/fullscreen=${fullscreen_val}/" \ + -e "s/${orig_listen_opt}/listen=${gr_port}/" \ + -e "s/${orig_clipboard_opt}/${clipboard}/" <<< "${agent_options}")" -if [[ -z "${X2GO_GEOMETRY}" ]] || [[ "${X2GO_GEOMETRY}" = 'fullscreen' ]]; then - NEWOPTIONS="$(sed -e "s/geometry=${X2GO_GEOMETRY},//" <<< "${NEWOPTIONS}")" +if [[ -z "${geometry_val}" ]] || [[ "${geometry_val}" = 'fullscreen' ]]; then + agent_options_new="$(sed -e "s/geometry=${geometry_val},//" <<< "${agent_options_new}")" fi -X2GO_CLIENT="$(awk '{print $1}' <<< "${SSH_CLIENT}")" -if [[ -z "${X2GO_CLIENT}" ]]; then - X2GO_CLIENT="${current_host_name}" +typeset x2go_client="$(awk '{print $1}' <<< "${SSH_CLIENT}")" +if [[ -z "${x2go_client}" ]]; then + x2go_client="${current_host_name}" fi -echo "${NEWOPTIONS}" >"${SESSION_DIR}/options" +echo "${agent_options_new}" >"${session_dir}/options" # 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 # clear old keyboard file -rm -Rf "${SESSION_DIR}/keyboard" +rm -Rf "${session_dir}/keyboard" -if kill -HUP "${X2GO_AGENT_PID}" &>'/dev/null'; then - "${X2GO_LIB_PATH}/x2goresume" "${X2GO_CLIENT}" "${SESSION_NAME}" "${GR_PORT}" "${SOUND_PORT}" "${FS_PORT}" >'/dev/null' - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'notice' "client ${X2GO_CLIENT} has successfully resumed session with ID ${SESSION_NAME}" +if kill -HUP "${x2go_agent_pid}" &>'/dev/null'; then + "${x2go_lib_path}/x2goresume" "${x2go_client}" "${session_name}" "${gr_port}" "${sound_port}" "${fs_port}" >'/dev/null' + "${x2go_lib_path}/x2gosyslog" "${0}" 'notice' "client ${x2go_client} has successfully resumed session with ID ${session_name}" # set client-side keyboard model, type, variant, etc. - if [[ "${X2GO_SET_KBD}" != '0' ]] && [[ "${X2GO_KBD_TYPE}" = 'auto' ]]; then - X2GO_DISPLAY="$(cut -d '-' -f '2' <<< "${SESSION_NAME}")" - export DISPLAY=":${X2GO_DISPLAY}.0" - x2gosetkeyboard "${SESSION_NAME}" &>'/dev/null' & + if [[ "${set_kbd}" != '0' ]] && [[ "${kbd_type_val}" = 'auto' ]]; then + typeset x2go_display="$(cut -d '-' -f '2' <<< "${session_name}")" + export DISPLAY=":${x2go_display}.0" + x2gosetkeyboard "${session_name}" &>'/dev/null' & fi # resume x2godesktopsharing, if it has been in use before the session got suspended - x2gofeature 'X2GO_DESKTOPSHARING' &>'/dev/null' && x2goresume-desktopsharing "${SESSION_NAME}" || true + 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 - grep 'PPid' "/proc/${PPID}/status" >"${X2GO_ROOT}/C-${SESSION_NAME}/sshd.pid" + x2gofeature 'X2GO_RUN_EXTENSIONS' &>'/dev/null' && x2goserver-run-extensions "${session_name}" 'post-resume' || true + grep 'PPid' "/proc/${PPID}/status" >"${x2go_root}/C-${session_name}/sshd.pid" else - err_msg="ERROR: failed to resume session with ID ${SESSION_NAME}" + err_msg="ERROR: failed to resume session with ID ${session_name}" echo "${err_msg}" 1>&2 - "${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'err' "${err_msg}" + "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${err_msg}" # If we reach here it means that the x2goagent process of the session has vanished # 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 fi -echo "gr_port=${GR_PORT}" -echo "sound_port=${SOUND_PORT}" -echo "fs_port=${FS_PORT}" -if [[ "${X2GO_TELEKINESIS_ENABLED}" = '1' ]]; then - echo "tekictrl_port=${TEKICTRL_PORT}" - echo "tekidata_port=${TEKIDATA_PORT}" +echo "gr_port=${gr_port}" +echo "sound_port=${sound_port}" +echo "fs_port=${fs_port}" +if [[ "${telekinesis_enabled}" = '1' ]]; then + echo "tekictrl_port=${tekictrl_port}" + echo "tekidata_port=${tekidata_port}" fi -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit e24572f81162fc8eb562577d2326d24345c591fc Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jan 6 21:50:15 2021 +0100 x2goserver/bin/x2goresume-session: use global-scope msg variable. --- debian/changelog | 1 + x2goserver/bin/x2goresume-session | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index e6a7ad7f..1c5d7b00 100644 --- a/debian/changelog +++ b/debian/changelog @@ -389,6 +389,7 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium lowercase, rename variables to more descriptive names, use typeset all over the place and change the variable type for some variables. Mostly non-functional changes. + - x2goserver/bin/x2goresume-session: use global-scope msg variable. * debian/control: + Build-depend upon lsb-release for distro version detection. * debian/x2goserver.manpages: diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session index 67a81741..7f8013f5 100755 --- a/x2goserver/bin/x2goresume-session +++ b/x2goserver/bin/x2goresume-session @@ -21,8 +21,9 @@ typeset x2go_lib_path="$(x2gopath 'libexec')" +typeset msg='' if [[ "${#}" -lt '7' ]]; then - typeset msg='not enough command line arguments' + msg='not enough command line arguments' echo "${msg}" >&2 "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${msg}" exit '1' @@ -58,7 +59,7 @@ typeset fullscreen_val='0' typeset current_host_name='' if ! current_host_name="$(hostname)"; then - typeset msg="Unable to retrieve machine's hostname. This is required. Aborting session startup." + msg="Unable to retrieve machine's hostname. This is required. Aborting session startup." "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${msg}" # Make x2goclient fail. @@ -79,7 +80,7 @@ typeset state="$("${x2go_lib_path}/x2gogetagentstate" "${session_name}")" # exit if session terminated if [[ "${state}" = 'TERMINATED' ]] || [[ "${state}" = 'TERMINATING' ]]; then - typeset msg="session ${session_name} terminated" + msg="session ${session_name} terminated" echo "${msg}" >&2 "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${msg}" exit '3' @@ -199,7 +200,7 @@ fi typeset -i ssh_port='0' if ! ssh_port="$("${x2go_lib_path}/x2gogetrandomport")"; then - typeset msg="Unable to get (pseudo-)randomized starting port value." + msg="Unable to get (pseudo-)randomized starting port value." "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${msg}" # Make x2goclient fail. @@ -231,7 +232,7 @@ while [[ -z "${gr_port}" ]] || [[ -z "${sound_port}" ]] || [[ -z "${fs_port}" ]] done if [[ "${output}" != 'inserted' ]]; then - typeset msg="Unable to find free port or insert new session into database; parameters: hostname (${current_host_name}), session name (${session_name}) and port (${ssh_port})." + msg="Unable to find free port or insert new session into database; parameters: hostname (${current_host_name}), session name (${session_name}) and port (${ssh_port})." "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${msg}" # Make x2goclient fail. -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit d8a0740ad4c448071fb328c5debf13282e2dd92c Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jan 6 21:51:03 2021 +0100 x2goserver/bin/x2goresume-session: update copyright notice. --- debian/changelog | 1 + x2goserver/bin/x2goresume-session | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 1c5d7b00..592b36a4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -390,6 +390,7 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium over the place and change the variable type for some variables. Mostly non-functional changes. - x2goserver/bin/x2goresume-session: use global-scope msg variable. + - x2goserver/bin/x2goresume-session: update copyright notice. * debian/control: + Build-depend upon lsb-release for distro version detection. * debian/x2goserver.manpages: diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session index 7f8013f5..4da94741 100755 --- a/x2goserver/bin/x2goresume-session +++ b/x2goserver/bin/x2goresume-session @@ -1,8 +1,8 @@ #!/bin/bash -# Copyright (C) 2007-2018 X2Go Project - https://wiki.x2go.org -# Copyright (C) 2007-2018 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> -# Copyright (C) 2007-2018 Heinz-Markus Graesing <heinz-m.graesing@obviously-nice.de> +# Copyright (C) 2007-2021 X2Go Project - https://wiki.x2go.org +# Copyright (C) 2007-2021 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> +# Copyright (C) 2007-2021 Heinz-Markus Graesing <heinz-m.graesing@obviously-nice.de> # # 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 -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit 0d054632f48f11ab3affc55328382c622b8e9057 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Jan 6 22:08:23 2021 +0100 x2goserver/bin/x2goresume-session: fix err_msg => msg usage. --- debian/changelog | 1 + x2goserver/bin/x2goresume-session | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 2553f12b..1d3f9c67 100644 --- a/debian/changelog +++ b/debian/changelog @@ -393,6 +393,7 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium - x2goserver/bin/x2goresume-session: update copyright notice. - x2goserver/bin/x2goresume-session: use printf more often instead of the not-so-portable echo builtin. + - x2goserver/bin/x2goresume-session: fix err_msg => msg usage. * debian/control: + Build-depend upon lsb-release for distro version detection. * debian/x2goserver.manpages: diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session index 2432c72c..b6c6bc8a 100755 --- a/x2goserver/bin/x2goresume-session +++ b/x2goserver/bin/x2goresume-session @@ -369,9 +369,9 @@ if kill -HUP "${x2go_agent_pid}" &>'/dev/null'; then x2gofeature 'X2GO_RUN_EXTENSIONS' &>'/dev/null' && x2goserver-run-extensions "${session_name}" 'post-resume' || true grep 'PPid' "/proc/${PPID}/status" >"${x2go_root}/C-${session_name}/sshd.pid" else - err_msg="ERROR: failed to resume session with ID ${session_name}" - echo "${err_msg}" 1>&2 - "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${err_msg}" + msg="ERROR: failed to resume session with ID ${session_name}" + echo "${msg}" 1>&2 + "${x2go_lib_path}/x2gosyslog" "${0}" 'err' "${msg}" # If we reach here it means that the x2goagent process of the session has vanished # If this happens than we mark the session as finished... -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit e6e26ccf61bef071566b938a9c29c3251ce39737 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 14 15:08:11 2021 +0200 x2goserver/bin/x2gooptionsstring: replace uses of C<> with B<> in cases where the generated output of the C<> sequence might enclose it in double quotes and creates confusing documentation strings. --- debian/changelog | 3 +++ x2goserver/bin/x2gooptionsstring | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 84ca3588..31109706 100644 --- a/debian/changelog +++ b/debian/changelog @@ -394,6 +394,9 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium - x2goserver/bin/x2goresume-session: use printf more often instead of the not-so-portable echo builtin. - x2goserver/bin/x2goresume-session: fix err_msg => msg usage. + - x2goserver/bin/x2gooptionsstring: replace uses of C<> with B<> in cases + where the generated output of the C<> sequence might enclose it in + double quotes and creates confusing documentation strings. * debian/control: + Build-depend upon lsb-release for distro version detection. * debian/x2goserver.manpages: diff --git a/x2goserver/bin/x2gooptionsstring b/x2goserver/bin/x2gooptionsstring index 408baf36..dd89c9bf 100755 --- a/x2goserver/bin/x2gooptionsstring +++ b/x2goserver/bin/x2gooptionsstring @@ -921,7 +921,7 @@ Use the B<--compact> option to minimize the original options string, removing duplicated and empty entries. Assuming no error happened, the resulting options string is written to -C<stdout>. +B<stdout>. =item Extract @@ -940,9 +940,9 @@ A full, proper key-value pair can be used to test for the existence of a key-value pair exactly as provided. Assuming no error happened, the extracted key-value pairs will be written to -C<stdout>. +B<stdout>. Each pair will be base64-encoded and, if multiple key-value pairs to extract -have been provided, delimited via C<pipe> characters (C<|>). +have been provided, delimited via B<pipe> characters (C<|>). Key-value pairs which haven't been found in the original options string, as well as potentially an empty key-value pair, will be represented as empty -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit bd04c590480093a486a9541d007d7e8fa71885d4 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 14 15:09:17 2021 +0200 X2Go/Server/Agent/NX/Options.pm: same C<>-to-B<> conversion as in the previous commit. --- X2Go/Server/Agent/NX/Options.pm | 2 +- debian/changelog | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/X2Go/Server/Agent/NX/Options.pm b/X2Go/Server/Agent/NX/Options.pm index ed81781a..9ddaeeda 100644 --- a/X2Go/Server/Agent/NX/Options.pm +++ b/X2Go/Server/Agent/NX/Options.pm @@ -1071,7 +1071,7 @@ This module is not really concerned with the actual content of an options string, but mostly its format. An options string follows the form -[[I<key>[C<=>I<value>,]]C<:>I<displaynumber>. +[[I<key>[B<=>I<value>,]]B<:>I<displaynumber>. This has some interesting implications: diff --git a/debian/changelog b/debian/changelog index 31109706..e3f10b76 100644 --- a/debian/changelog +++ b/debian/changelog @@ -397,6 +397,8 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium - x2goserver/bin/x2gooptionsstring: replace uses of C<> with B<> in cases where the generated output of the C<> sequence might enclose it in double quotes and creates confusing documentation strings. + - X2Go/Server/Agent/NX/Options.pm: same C<>-to-B<> conversion as in the + previous commit. * debian/control: + Build-depend upon lsb-release for distro version detection. * debian/x2goserver.manpages: -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit 77d06791700ea9dd4b79b59ceda241f92a2153b2 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 14 15:32:25 2021 +0200 debian/control: pull in base64 as a run-time dependency. We'll need it in scripts. --- debian/changelog | 1 + debian/control | 1 + 2 files changed, 2 insertions(+) diff --git a/debian/changelog b/debian/changelog index e3f10b76..23f6ed2c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -401,6 +401,7 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium previous commit. * debian/control: + Build-depend upon lsb-release for distro version detection. + + Pull in base64 as a run-time dependency. We'll need it in scripts. * debian/x2goserver.manpages: + Install x2gocleansessions man page. + Install x2goupdateoptionsstring man page. diff --git a/debian/control b/debian/control index 81ad6aa8..ae6de9ae 100644 --- a/debian/control +++ b/debian/control @@ -23,6 +23,7 @@ Vcs-Browser: https://code.x2go.org/gitweb?p=x2goserver.git;a=summary Package: x2goserver Architecture: any Depends: + base64, bc, libfile-basedir-perl, libfile-which-perl, -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit 8835d7c199370a672d69476fd29f79df43c1e316 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 14 16:04:23 2021 +0200 x2goserver/bin/x2goresume-session: simplify where possible, use x2gooptionsstring instead of awk field splitting hackery. --- debian/changelog | 2 + x2goserver/bin/x2goresume-session | 92 +++++++++++++++------------------------ 2 files changed, 37 insertions(+), 57 deletions(-) diff --git a/debian/changelog b/debian/changelog index f56f485b..7b79abcb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -399,6 +399,8 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium double quotes and creates confusing documentation strings. - X2Go/Server/Agent/NX/Options.pm: same C<>-to-B<> conversion as in the previous commit. + - x2goserver/bin/x2goresume-session: simplify where possible, use + x2gooptionsstring instead of awk field splitting hackery. * debian/control: + Build-depend upon lsb-release for distro version detection. + Pull in base64 as a run-time dependency. We'll need it in scripts. diff --git a/x2goserver/bin/x2goresume-session b/x2goserver/bin/x2goresume-session index b6c6bc8a..6de83c8a 100755 --- a/x2goserver/bin/x2goresume-session +++ b/x2goserver/bin/x2goresume-session @@ -255,64 +255,26 @@ done typeset session_dir="${x2go_root}/C-${session_name}" -typeset agent_options="$(< "${session_dir}/options")" - -typeset orig_link_opt="$(awk -F ',' '{print $2}' <<< "${agent_options}")" -typeset orig_pack_opt="$(awk -F ',' '{print $3}' <<< "${agent_options}")" -typeset orig_kbd_type_opt="$(awk -F ',' '{print $12}' <<< "${agent_options}")" -typeset orig_geometry_opt="$(awk -F ',' '{print $13}' <<< "${agent_options}")" -typeset xinerama_orig='' -typeset test_orig_geometry_opt="$(sed -e 's/geometry=.*//' <<< "${orig_geometry_opt}")" -if [[ -n "${test_orig_geometry_opt}" ]]; then - orig_geometry_opt='geometry=' - xinerama_orig="$(awk -F ',' '{print $13}' <<< "${agent_options}")" -else - xinerama_orig="$(awk -F ',' '{print $14}' <<< "${agent_options}")" -fi +typeset agent_options_base64="$(base64 -w '0' < "${session_dir}/options")" # Sessions started with older X2Go Server versions do not feature # a xinerama option, so handle this gracefully. # Note that Xinerama support defaulted to on and was handled by the client, # so keep it like that. -typeset test_xinerama="$(sed -e 's/xinerama=.*//' <<< "${xinerama_orig}")" -if [[ -n "${test_xinerama}" ]]; then - # Will not actually be replaced by anything, so the value provided - # here does not matter. - xinerama_orig='xinerama=1' -fi - -# Only one component missing => either geometry or xinerama at position 13, -# everything else starts from position 14. -typeset orig_resize_opt='' -typeset orig_fullscreen_opt='' -typeset orig_listen_opt='' -typeset orig_clipboard_opt='' -if { [[ -n "${test_orig_geometry_opt}" ]] && [[ -z "${test_xinerama}" ]]; } || { [[ -z "${test_orig_geometry_opt}" ]] && [[ -n "${test_xinerama}" ]]; }; then - orig_resize_opt="$(awk -F ',' '{print $14}' <<< "${agent_options}")" - orig_fullscreen_opt="$(awk -F ',' '{print $15}' <<< "${agent_options}")" - orig_listen_opt="$(awk -F ',' '{print $17}' <<< "${agent_options}")" - orig_clipboard_opt="$(awk -F ',' '{print $18}' <<< "${agent_options}")" -# Neither geometry nor xinerama given, everything else starts at position 13. -elif [[ -n "${test_orig_geometry_opt}" ]]; then - orig_resize_opt="$(awk -F ',' '{print $13}' <<< "${agent_options}")" - orig_fullscreen_opt="$(awk -F ',' '{print $14}' <<< "${agent_options}")" - orig_listen_opt="$(awk -F ',' '{print $16}' <<< "${agent_options}")" - orig_clipboard_opt="$(awk -F ',' '{print $17}' <<< "${agent_options}")" -# Both geometry and xinerama given, everything else starts at position 15. +typeset has_xinerama="$(x2gooptionsstring -e -c -b -- "${agent_options_base64}" \ + "$(printf '%s' 'xinerama' | base64 -w '0')" \ + '2'>'/dev/null')" +if [ -z "${has_xinerama}" ]; then + has_xinerama='0' else - orig_resize_opt="$(awk -F ',' '{print $15}' <<< "${agent_options}")" - orig_fullscreen_opt="$(awk -F ',' '{print $16}' <<< "${agent_options}")" - orig_listen_opt="$(awk -F ',' '{print $18}' <<< "${agent_options}")" - orig_clipboard_opt="$(awk -F ',' '{print $19}' <<< "${agent_options}")" + has_xinerama='1' fi -orig_kbd_type_opt="$(sed -e 's#/#\\/#' <<< "${orig_kbd_type_opt}")" kbd_type_val="$(sed -e 's#/#\\/#' <<< "${kbd_type_val}")" +typeset keyboard_type="${kbd_type_val}" if [[ "${set_kbd}" = '0' ]] || [[ "${kbd_type_val}" = 'auto' ]]; then keyboard_type='null\/null' -else - keyboard_type="${kbd_type_val}" fi typeset tmp_regex='^(0|none|client|server|both|1)$' @@ -324,18 +286,34 @@ fi typeset xinerama_option="$("${x2go_lib_path}/x2goistrue" "${xinerama_val}")" -typeset agent_options_new="$(sed -e "s/${orig_link_opt}/link=${link_val}/" \ - -e "s/${orig_pack_opt}/pack=${pack_val}/" \ - -e "s/${orig_kbd_type_opt}/kbtype=${keyboard_type}/" \ - -e "s/${orig_geometry_opt}/geometry=${geometry_val}/" \ - -e "s/${xinerama_orig}/xinerama=${xinerama_option}/" \ - -e "s/${orig_resize_opt}/resize=${resize_val}/" \ - -e "s/${orig_fullscreen_opt}/fullscreen=${fullscreen_val}/" \ - -e "s/${orig_listen_opt}/listen=${gr_port}/" \ - -e "s/${orig_clipboard_opt}/${clipboard}/" <<< "${agent_options}")" +# I'd really, really, really like to use the bash here string feature to pass +# strings to the base64 program, but we can't. +# Here strings add new line characters to the strings' end and we don't want +# that. +# Work around that "issue" (which, really, makes sense if you interpret here +# strings as text files) and pass it via printf instead. +typeset new_agent_options_base64='' +new_agent_options_base64="$(x2gooptionsstring -t -c -b -- "${agent_options_base64}" \ + "$(printf 'link=%s' "${link_val}" | base64 -w '0')" \ + "$(printf 'pack=%s' "${pack_val}" | base64 -w '0')" \ + "$(printf 'kbtype=%s' "${keyboard_type}" | base64 -w '0')" \ + "$(printf 'geometry=%s' "${geometry_val}" | base64 -w '0')" \ + "$(printf 'resize=%s' "${resize_val}" | base64 -w '0')" \ + "$(printf 'listen=%s' "${gr_port}" | base64 -w '0')" \ + "$(printf 'fullscreen=%s' "${fullscreen_val}" | base64 -w '0')" \ + "$(printf 'clipboard=%s' "${clipboard}" | base64 -w '0')" \ + '2'>'/dev/null')" + +if [ '1' -eq "${has_xinerama}" ]; then + new_agent_options_base64="$(x2gooptionsstring -t -c -b -- "${new_agent_options_base64}" \ + "$(printf 'xinerama=%s' "${xinerama_option}" | base64 -w '0')" \ + '2'>'/dev/null')" +fi if [[ -z "${geometry_val}" ]] || [[ "${geometry_val}" = 'fullscreen' ]]; then - agent_options_new="$(sed -e "s/geometry=${geometry_val},//" <<< "${agent_options_new}")" + new_agent_options_base64="$(x2gooptionsstring -t -c -b -- "${new_agent_options_base64}" \ + "$(printf '-geometry' | base64 -w '0')" \ + '2'>'/dev/null')" fi typeset x2go_client="$(awk '{print $1}' <<< "${SSH_CLIENT}")" @@ -343,7 +321,7 @@ if [[ -z "${x2go_client}" ]]; then x2go_client="${current_host_name}" fi -printf '%s\n' "${agent_options_new}" >"${session_dir}/options" +printf '%s' "${new_agent_options_base64}" | base64 -d >"${session_dir}/options" # run x2goserver-extensions for pre-resume x2gofeature 'X2GO_RUN_EXTENSIONS' &>'/dev/null' && x2goserver-run-extensions "${session_name}" 'pre-resume' || true -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit 4768edb3cd698a8d673f8aaa880d4f4a9a3e9832 Author: Ulrich Sibiller <uli42@gmx.de> Date: Fri Mar 12 11:24:02 2021 +0100 x2goserver-x2goagent/etc/keystrokes.cfg: sync with nx-libs 3.5.99.26. Previous version was incomplete. Note that this will only work correctly once we actually update to 3.5.99.26 within X2Go, but it doesn't hurt to have the new definitions until then. Fixes: #1538. --- debian/changelog | 4 ++++ x2goserver-x2goagent/etc/keystrokes.cfg | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index f8c6dde8..e0556d9c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -451,6 +451,10 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium - x2goserver/bin/x2gostartagent: prevent logfile corruption. Both stderr redirection and errors= in the options file wrote to the same file which lead to corruption with lots of debug output. Fixes: #1537. + - x2goserver-x2goagent/etc/keystrokes.cfg: sync with nx-libs 3.5.99.26. + Previous version was incomplete. Note that this will only work correctly + once we actually update to 3.5.99.26 within X2Go, but it doesn't hurt to + have the new definitions until then. Fixes: #1538. -- Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Fri, 19 Jul 2019 20:55:11 +0200 diff --git a/x2goserver-x2goagent/etc/keystrokes.cfg b/x2goserver-x2goagent/etc/keystrokes.cfg index c57d2efb..ea9feeea 100644 --- a/x2goserver-x2goagent/etc/keystrokes.cfg +++ b/x2goserver-x2goagent/etc/keystrokes.cfg @@ -5,7 +5,6 @@ <keystroke action="fullscreen" Control="1" Shift="1" AltMeta="1" key="f" /> <keystroke action="minimize" Control="1" AltMeta="1" key="m" /> <keystroke action="defer" Control="1" AltMeta="1" key="e" /> -<keystroke action="ignore" Control="1" AltMeta="1" key="BackSpace" /> <keystroke action="force_synchronization" Control="1" AltMeta="1" key="j" /> <keystroke action="resize" Control="1" AltMeta="1" key="r" /> <keystroke action="viewport_move_left" Control="1" Shift="1" AltMeta="1" key="Left" /> @@ -25,4 +24,6 @@ <keystroke action="viewport_scroll_down" Control="1" AltMeta="1" key="Down" /> <keystroke action="viewport_scroll_down" Control="1" AltMeta="1" key="KP_Down" /> <keystroke action="reread_keystrokes" Control="1" AltMeta="1" key="k" /> +<keystroke action="autograb" Control="1" AltMeta="1" key="g" /> +<keystroke action="dump_clipboard" Control="1" Shift="1" AltMeta="1" key="c" /> </keystrokes> -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit 16fad4232117be46a15b5b92c7cea80f6c7358bf Author: Ulrich Sibiller <uli42@gmx.de> Date: Fri Mar 12 11:17:32 2021 +0100 x2goserver/bin/x2gostartagent: prevent logfile corruption. Both stderr redirection and errors= in the options file wrote to the same file which lead to corruption with lots of debug output. Fixes: #1537. --- debian/changelog | 3 +++ x2goserver/bin/x2gostartagent | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 7b79abcb..f8c6dde8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -448,6 +448,9 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium * New upstream version (4.1.0.4): - x2goserver-x2goagent/etc/keystrokes.cfg: sync with nx-libs 3.5.99.20. Previous version was broken and incomplete. Fixes: #1388. + - x2goserver/bin/x2gostartagent: prevent logfile corruption. Both stderr + redirection and errors= in the options file wrote to the same file which + lead to corruption with lots of debug output. Fixes: #1537. -- Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Fri, 19 Jul 2019 20:55:11 +0200 diff --git a/x2goserver/bin/x2gostartagent b/x2goserver/bin/x2gostartagent index 1c62b6ab..ee63ac18 100755 --- a/x2goserver/bin/x2gostartagent +++ b/x2goserver/bin/x2gostartagent @@ -417,7 +417,7 @@ if [[ -n "${X2GO_NXOPTIONS}" ]]; then X2GO_NXOPTIONS="${X2GO_NXOPTIONS%,}," fi -echo "nx/nx,link=${X2GO_LINK},pack=${X2GO_PACK},limit=0,root=${SESSION_DIR},cache=8M,images=32M,type=${X2GO_TYPE},id=${SESSION_NAME},cookie=${X2GO_COOKIE},errors=${SESSION_LOG},kbtype=${kbtype_option},${option_geometry}xinerama=${xinerama_option},resize=${X2GO_RESIZE},fullscreen=${X2GO_FULLSCREEN},accept=${REMOTE},listen=${GR_PORT}${clipboard},client=linux,menu=0,${X2GO_NXOPTIONS}state=${STATE_FILE}:${X2GO_PORT}" >"${SESSION_DIR}/options" +echo "nx/nx,link=${X2GO_LINK},pack=${X2GO_PACK},limit=0,root=${SESSION_DIR},cache=8M,images=32M,type=${X2GO_TYPE},id=${SESSION_NAME},cookie=${X2GO_COOKIE},errors=${SESSION_LOG}_errors,kbtype=${kbtype_option},${option_geometry}xinerama=${xinerama_option},resize=${X2GO_RESIZE},fullscreen=${X2GO_FULLSCREEN},accept=${REMOTE},listen=${GR_PORT}${clipboard},client=linux,menu=0,${X2GO_NXOPTIONS}state=${STATE_FILE}:${X2GO_PORT}" >"${SESSION_DIR}/options" NX_AGENT=":${X2GO_PORT}" SAVED_DISPLAY="${DISPLAY}" -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit b37712b6edd6c58133397ca3b3f30fc1f96ed444 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Apr 14 15:32:52 2021 +0200 x2goserver.spec: add run-time base64 dependency. --- debian/changelog | 1 + x2goserver.spec | 2 ++ 2 files changed, 3 insertions(+) diff --git a/debian/changelog b/debian/changelog index 23f6ed2c..f56f485b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -416,6 +416,7 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium in line with general RPM package names. + Add dependency upon perl(Encode::Locale) for older distros. Others ship the module as part of core. + + Add run-time base64 dependency. * debian/x2goserver.install: + Install bin/x2goupdateoptionsstring. + Rename x2goupdateoptionsstring to x2gooptionsstring. diff --git a/x2goserver.spec b/x2goserver.spec index 57cc91c0..7bc86689 100644 --- a/x2goserver.spec +++ b/x2goserver.spec @@ -104,6 +104,8 @@ Requires: perl = %{perl_version} %endif %endif +# We'll pass agent options around base64-encoded for full binary support. +Requires: base64 # For running any command, really. Requires: bash # For x2goruncommand - for now -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git