This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository x2goserver.

commit 284c3222f62c3abd08081a6716df4caa18fc80e5
Author: Mihai Moldovan <[email protected]>
Date:   Wed Nov 1 09:33:28 2017 +0100

    x2goserver/bin/x2goresume-session: backport HOSTNAME changes from 
x2goserver/bin/x2gostartagent.
    
    Cherry-picked from release/4.0.1.x branch.
---
 debian/changelog                  |  2 ++
 x2goserver/bin/x2goresume-session | 47 ++++++++++++++++++++++++++++++---------
 2 files changed, 39 insertions(+), 10 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 3c717f0..4a2cdbb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -298,6 +298,8 @@ x2goserver (4.0.1.21-0x2go1) UNRELEASED; urgency=medium
     - x2goserver/bin/x2goruncommand: use dbus-run-session to start a new dbus
       user session if available. Only for full desktop sessions. Backported
       from a Debian patch.
+    - x2goserver/bin/x2goresume-session: backport HOSTNAME changes from
+      x2goserver/bin/x2gostartagent.
   * x2goserver.spec:
     - Add mandatory perl-generators Build-Requires as per
       https://fedoraproject.org/wiki/Changes/Build_Root_Without_Perl
diff --git a/x2goserver/bin/x2goresume-session 
b/x2goserver/bin/x2goresume-session
index 7babfc8..b8845f1 100755
--- a/x2goserver/bin/x2goresume-session
+++ b/x2goserver/bin/x2goresume-session
@@ -45,6 +45,33 @@ X2GO_ROOT="${HOME}/.x2go"
 X2GO_RESIZE=0
 X2GO_FULLSCREEN=0
 
+# ${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."
+       "${X2GO_LIB_PATH}/x2gosyslog" "${0}" "err" "${msg}"
+
+       # Make x2goclient fail.
+       echo "${msg}" >&2
+       exit 1
+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
@@ -157,17 +184,17 @@ USED_PORTS=$(
 #check if saved in DB ports free
 if grep -q "|${GR_PORT}|" <<<$SYSTEM_PORTS ; then
        $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "port $GR_PORT is already in use"
-       $X2GO_LIB_PATH/x2gormport "$HOSTNAME" "$SESSION_NAME" "$GR_PORT"
+       "${X2GO_LIB_PATH}/x2gormport" "${current_host_name}" "${SESSION_NAME}" 
"${GR_PORT}"
        GR_PORT=""
 fi
 if grep -q "|${SOUND_PORT}|" <<<$SYSTEM_PORTS ; then
        $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "port $SOUND_PORT is already in 
use"
-       $X2GO_LIB_PATH/x2gormport "$HOSTNAME" "$SESSION_NAME" "$SOUND_PORT"
+       "${X2GO_LIB_PATH}/x2gormport" "${current_host_name}" "${SESSION_NAME}" 
"${SOUND_PORT}"
        SOUND_PORT=""
 fi
 if grep -q "|${FS_PORT}|" <<<$SYSTEM_PORTS ; then
        $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "port "$FS_PORT" is already in 
use"
-       $X2GO_LIB_PATH/x2gormport "$HOSTNAME" "$SESSION_NAME" "$FS_PORT"
+       "${X2GO_LIB_PATH}/x2gormport" "${current_host_name}" "${SESSION_NAME}" 
"${FS_PORT}"
        FS_PORT=""
 fi
 
@@ -176,17 +203,17 @@ if [ "x$X2GO_TELEKINESIS_ENABLED" == "x1" ]; then
        TEKIDATA_PORT=`echo "$SESSIONINFO" | awk -F, {'print $16'}`
        if grep -q "|${TEKICTRL_PORT}|" <<<$SYSTEM_PORTS ; then
                $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "port "$TEKICTRL_PORT" 
is already in use"
-               $X2GO_LIB_PATH/x2gormport "$HOSTNAME" "$SESSION_NAME" 
"$TEKICTRL_PORT"
+               "${X2GO_LIB_PATH}/x2gormport" "${current_host_name}" 
"${SESSION_NAME}" "${TEKICTRL_PORT}"
                TEKICTRL_PORT=""
        fi
        if grep -q "|${TEKIDATA_PORT}|" <<<$SYSTEM_PORTS ; then
                $X2GO_LIB_PATH/x2gosyslog "$0" "debug" "port "$TEKIDATA_PORT" 
is already in use"
-               $X2GO_LIB_PATH/x2gormport "$HOSTNAME" "$SESSION_NAME" 
"$TEKIDATA_PORT"
+               "${X2GO_LIB_PATH}/x2gormport" "${current_host_name}" 
"${SESSION_NAME}" "${TEKIDATA_PORT}"
                TEKIDATA_PORT=""
        fi
 else
-       $X2GO_LIB_PATH/x2gormport "$HOSTNAME" "$SESSION_NAME" "$TEKICTRL_PORT"
-       $X2GO_LIB_PATH/x2gormport "$HOSTNAME" "$SESSION_NAME" "$TEKIDATA_PORT"
+       "${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
@@ -194,7 +221,7 @@ fi
 SSH_PORT=30000 #First ssh port 30001
 
 #Get all used in system ports from X2Go database and netstat output
-USED_PORTS=`$X2GO_LIB_PATH/x2gogetports "$HOSTNAME"; netstat -nt -all | awk '{ 
n=split($0,lines,"\n"); for(i=1;i<=n;i++){split (lines[i],words," 
");delim=split(words[4],ports,":"); if(delim>1)printf ("|%s|\n",ports[delim])} 
}'`
+USED_PORTS="$("${X2GO_LIB_PATH}/x2gogetports" "${current_host_name}"; netstat 
-nt -all | awk '{ n=split($0,lines,"\n"); for(i=1;i<=n;i++){split 
(lines[i],words," ");delim=split(words[4],ports,":"); if(delim>1)printf 
("|%s|\n",ports[delim])} }')"
 
 while [ "$GR_PORT" == "" ] || [ "$SOUND_PORT" == "" ] || [ "$FS_PORT" == "" ] 
|| [ "$TEKICTRL_PORT" == "" ] || [ "$TEKIDATA_PORT" == "" ]; do
        OUTPUT=""
@@ -207,7 +234,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
        if [ "$GR_PORT" == "" ]; then
@@ -277,7 +304,7 @@ fi
 X2GO_CLIENT=`echo "$SSH_CLIENT" | awk '{print $1}'`
 if [ "$X2GO_CLIENT" == "" ]
 then
-       X2GO_CLIENT="$HOSTNAME"
+       X2GO_CLIENT="${current_host_name}"
 fi
 
 echo "$NEWOPTIONS" >"${SESSION_DIR}/options"

--
Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email 
on /srv/git/code.x2go.org/x2goserver.git
_______________________________________________
x2go-commits mailing list
[email protected]
https://lists.x2go.org/listinfo/x2go-commits

Reply via email to