This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit 096c9ea3e8c45d267561dd5304a943536dc46639 Author: Mihai Moldovan <ionic@ionic.de> Date: Wed Oct 11 06:56:07 2017 +0200 x2goserver/bin/x2gostartagent: fetch hostname via "hostname -s" and do not rely on the HOSTNAME variable. The latter is only set automatically by bash if it's not already part of the environment. We might get "garbage" in this way (and one user actually did.) Cherry-picked from release/4.0.1.x branch. --- debian/changelog | 4 ++++ x2goserver/bin/x2gostartagent | 48 ++++++++++++++++++++++++++++++++----------- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/debian/changelog b/debian/changelog index de78071..b8444a9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -269,6 +269,10 @@ x2goserver (4.0.1.21-0x2go1) UNRELEASED; urgency=medium loginctl utility before calling x2goagent. Fixes: #1198. - x2goserver-xsession/etc/Xsession: support Devuan just like Debian, give useful error message in case the OS is unknown. + - x2goserver/bin/x2gostartagent: fetch hostname via "hostname -s" and do + not rely on the HOSTNAME variable. The latter is only set automatically + by bash if it's not already part of the environment. We might get + "garbage" in this way (and one user actually did.) * x2goserver.spec: - Add mandatory perl-generators Build-Requires as per https://fedoraproject.org/wiki/Changes/Build_Root_Without_Perl diff --git a/x2goserver/bin/x2gostartagent b/x2goserver/bin/x2gostartagent index 63112af..f005cd8 100755 --- a/x2goserver/bin/x2gostartagent +++ b/x2goserver/bin/x2gostartagent @@ -119,6 +119,31 @@ elif ! echo $HOME | iconv -f ASCII -t ASCII 1>/dev/null 2>/dev/null; then exit -5 fi +# ${HOSTNAME} should be automatically set by bash via gethostname(2), IFF this +# variable is not already set in the environment. +# +# This leads to two problems: +# - export HOSTNAME="malbox"; x2gostartagent will override the actual system +# host name and lead to authorization failures when connecting to +# x2goagent/nxagent later on. +# - even if the above is not the case, the value returned by gethostname(2) +# could either be a FQDN, the short name or anything in between. glibc +# seems to return the short name on Linux, since it calls uname(2), which +# typically does not include a domain, but *BSD seems to default to +# the FQDN. We explicitly need the short name. +# +# Workaround: use hostname -s, which luckily is portable enough to be available +# on a wide variety of systems. +typeset current_host_name="" +current_host_name="$(hostname -s)" + +if [[ "${?}" -ne "0" ]]; then + typeset msg="Unable to retrieve machine's hostname. This is required. Aborting session startup." + echo "${msg}" + "${X2GO_LIB_PATH}/x2gosyslog" "${0}" "err" "${msg}" + exit 1 +fi + X2GO_TELEKINESIS_ENABLED=`echo 'use X2Go::Config qw( get_config ); use X2Go::Utils qw( is_true ); my $Config = get_config(); print is_true($Config->param("telekinesis.enable"));' | perl` X2GO_ROOT="${HOME}/.x2go" @@ -206,8 +231,8 @@ if [ "$X2GO_STYPE" == "S" ]; then X2GO_PORT=`echo $OUTPUT | awk '{print $1}'` $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "received shadow session information: cookie: $X2GO_COOKIE, port: $X2GO_PORT" - xauth -f "$XAUTHORITY" add "${HOSTNAME}/unix:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "${X2GO_COOKIE}" - xauth -f "$XAUTHORITY" add "${HOSTNAME}:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "${X2GO_COOKIE}" + xauth -f "$XAUTHORITY" add "${current_host_name}/unix:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "${X2GO_COOKIE}" + xauth -f "$XAUTHORITY" add "${current_host_name}:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "${X2GO_COOKIE}" echo $X2GO_PORT echo $X2GO_COOKIE @@ -248,7 +273,7 @@ elif [ "$X2GO_STYPE" == "S" ]; then fi if [ "$X2GO_CLIENT" == "" ]; then - X2GO_CLIENT="$HOSTNAME" + X2GO_CLIENT="${current_host_name}" fi # define the full path to the ss utility @@ -257,11 +282,11 @@ ss=$(PATH="$PATH:/usr/sbin:/sbin" type -P ss); while [ "$OUTPUT" != "inserted" ]; do typeset -a used_displays - IFS='' read -ar used_displays < <("${X2GO_LIB_PATH}/x2gogetdisplays" "${HOSTNAME}") + IFS='' read -ar used_displays < <("${X2GO_LIB_PATH}/x2gogetdisplays" "${current_host_name}") #Get all used in system ports from X2Go database and ss output USED_PORTS=$( - "$X2GO_LIB_PATH/x2gogetports" "$HOSTNAME"; + "$X2GO_LIB_PATH/x2gogetports" "${current_host_name}"; "$ss" -nt -all | awk '{ n=split($0,lines,"\n"); for(i=1;i<=n;i++){split (lines[i],words," ");delim=split(words[4],ports,":"); if(delim>1)printf ("|%s|\n",ports[delim])} }'; ); @@ -315,10 +340,10 @@ while [ "$OUTPUT" != "inserted" ]; do if [ -n "$SHADREQ_USER" ]; then $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "initializing new shadow session with ID $SESSION_NAME" - OUTPUT=`$X2GO_LIB_PATH/x2goinsertshadowsession "$X2GO_PORT" "$HOSTNAME" "$SESSION_NAME" "$SHADREQ_USER"` + OUTPUT=`$X2GO_LIB_PATH/x2goinsertshadowsession "$X2GO_PORT" "${current_host_name}" "$SESSION_NAME" "$SHADREQ_USER"` else $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "initializing new session with ID $SESSION_NAME" - OUTPUT=`$X2GO_LIB_PATH/x2goinsertsession "$X2GO_PORT" "$HOSTNAME" "$SESSION_NAME"` + OUTPUT=`$X2GO_LIB_PATH/x2goinsertsession "$X2GO_PORT" "${current_host_name}" "$SESSION_NAME"` fi fi done @@ -336,7 +361,7 @@ while [ "$GR_PORT" == "" ] || [ "$SOUND_PORT" == "" ] || [ "$FS_PORT" == "" ] || #Get all used in system ports from X2Go database and ss output USED_PORTS=$( - "$X2GO_LIB_PATH/x2gogetports" "$HOSTNAME"; + "$X2GO_LIB_PATH/x2gogetports" "${current_host_name}"; "$ss" -nt -all | awk '{ n=split($0,lines,"\n"); for(i=1;i<=n;i++){split (lines[i],words," ");delim=split(words[4],ports,":"); if(delim>1)printf ("|%s|\n",ports[delim])} }'; ); @@ -347,7 +372,7 @@ while [ "$GR_PORT" == "" ] || [ "$SOUND_PORT" == "" ] || [ "$FS_PORT" == "" ] || #check if port in /etc/services SERV=`grep $SSH_PORT /etc/services` if [ "$SERV" == "" ]; then - OUTPUT=`$X2GO_LIB_PATH/x2goinsertport "$HOSTNAME" "$SESSION_NAME" "$SSH_PORT"` + OUTPUT=`$X2GO_LIB_PATH/x2goinsertport "${current_host_name}" "$SESSION_NAME" "$SSH_PORT"` fi done @@ -424,13 +449,12 @@ grep PPid /proc/$PPID/status > ${SESSION_DIR}/sshd.pid X2GO_COOKIE=`mcookie` - PATH="${PATH}:${X2GO_BIN}/" export PATH -xauth -f "$XAUTHORITY" add "${HOSTNAME}/unix:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "${X2GO_COOKIE}" -xauth -f "$XAUTHORITY" add "${HOSTNAME}:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "${X2GO_COOKIE}" +xauth -f "$XAUTHORITY" add "${current_host_name}/unix:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "${X2GO_COOKIE}" +xauth -f "$XAUTHORITY" add "${current_host_name}:${X2GO_PORT}" MIT-MAGIC-COOKIE-1 "${X2GO_COOKIE}" option_geometry="" -- Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git