[X2Go-Commits] [x2goserver] 01/01: x2goserver/bin/x2gostartagent: changes to Robert Nowotny's SSH_PORT patch. Fixes: #922.
git-admin at x2go.org
git-admin at x2go.org
Sun Aug 23 23:10:59 CEST 2015
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository x2goserver.
commit bfe3ba761c1d3e9143285ca17edc87ac763ce35d
Author: Mihai Moldovan <ionic at ionic.de>
Date: Sun Aug 23 23:08:45 2015 +0200
x2goserver/bin/x2gostartagent: changes to Robert Nowotny's SSH_PORT patch. Fixes: #922.
Use default outgoing interface to determine IP address.
Use the whole range of ${RANDOM}'s pool.
Seed it for good measure.
Change the default method to randomization instead of IP-based
initialization.
If IP-based initialization was requested but the default outgoing IP
address unavailable, fall back to randomization.
Cherry-picked from release/4.0.1.x branch.
---
debian/changelog | 11 +++++++
x2goserver/bin/x2gostartagent | 71 ++++++++++++++++++++++++++++++++++++++++-
2 files changed, 81 insertions(+), 1 deletion(-)
diff --git a/debian/changelog b/debian/changelog
index 918edd1..6e7dda9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -234,6 +234,12 @@ x2goserver (4.0.1.20-0x2go1) UNRELEASED; urgency=low
state change when updating the cached state result.
- x2goserver/sbin/x2gocleansessions: only output status refreshing debug
message if the old and new states actually differ. Prevents log spam.
+ - x2goserver/bin/x2gostartagent: changes to Robert Nowotny's SSH_PORT
+ patch. Fixes: #922. Use default outgoing interface to determine IP
+ address. Use the whole range of ${RANDOM}'s pool. Seed it for good
+ measure. Change the default method to randomization instead of IP-based
+ initialization. If IP-based initialization was requested but the default
+ outgoing IP address unavailable, fall back to randomization.
* x2goserver.spec:
- Add sudo and logcheck as BuildRequires and Requires. Don't own
directories that are owned by sudo and logcheck. Logcheck is not
@@ -262,6 +268,11 @@ x2goserver (4.0.1.20-0x2go1) UNRELEASED; urgency=low
+ Use proper comment header explaining about preinst script argument
calls (not postinst).
+ [ Robert Nowotny ]
+ * New upstream version (4.0.1.20):
+ - x2goserver/bin/x2gostartagent: original patch for SSH_PORT
+ randomization/IP-based initialization. Submitted as #922.
+
-- X2Go Release Manager <git-admin at x2go.org> Tue, 24 Feb 2015 22:11:49 +0100
x2goserver (4.0.1.19-0x2go2) UNRELEASED; urgency=low
diff --git a/x2goserver/bin/x2gostartagent b/x2goserver/bin/x2gostartagent
index cda7252..228d227 100755
--- a/x2goserver/bin/x2gostartagent
+++ b/x2goserver/bin/x2gostartagent
@@ -20,12 +20,81 @@
# Copyright (C) 2007-2015 Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
# Copyright (C) 2007-2015 Heinz-Markus Graesing <heinz-m.graesing at obviously-nice.de>
+# rnowotny, <rnowotny at rotek.at>
+# Patch for SSH_PORT, to not use the same SSH port on each server, which is a
+# problem if you want to connect to different servers at the same time with
+# the windows client.
+# Original problem report: https://www.mail-archive.com/x2go-user@lists.berlios.de/msg00547.html
+# Currently implementation is based on the submitted patch, but differs heavily.
+
+# Get server IP address.
+get_server_ip_address() {
+ # The provided IP address should be outside of any local network.
+ # We are only interested in how the kernel would try to reach the
+ # non-local IP address specified here. It is not actually contacted
+ # in any way.
+ typeset ip_output="$(ip route get 8.8.8.8)"
+
+ # Remove newlines.
+ ip_output="${ip_output//$'\n'}"
+
+ # Fetch source address.
+ typeset src_address="$(grep -oe 'src[[:space:]]\{1,\}\(\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}\)' <<< "${ip_output}" | sed -e 's/src[[:space:]]\{1,\}//')"
+
+ if [ -n "${src_address}" ]; then
+ printf "${src_address}"
+ return "0"
+ fi
+
+ return "1"
+}
+
+# Get some random port.
+get_random_port() {
+ typeset -i unix_timestamp="$(date "+%s")"
+
+ # Seed ${RANDOM}. This should probably be changed some time before 2106.
+ # Or maybe not.
+ RANDOM="${unix_timestamp}"
+
+ typeset -i random_port="$((30000 + ${RANDOM}))"
+ printf "${random_port}"
+
+ exit 0
+}
+
X2GO_LIB_PATH="$(x2gopath libexec)";
$X2GO_LIB_PATH/x2gosyslog "$0" "info" "$(basename $0) called with options: $@"
+
+# FIXME: this should be configurable option in x2goserver.conf.
+# If you use hosts on a /24 network, you should probably set "0" here,
+# as the addresses are unique.
+# Each hosts SSH_PORT will be set to 30.000 + (128 * last octet of IP address)
+# This results in no collisions on a /24 network with at least 128 ports
+# for each host available for different sessions.
+# If you select "1" here, the SSH_PORT will be set to 30000 + random(0..32767)
+typeset -i randomize_ssh_port="1"
+
+if [ "${randomize_ssh_port}" = "1" ]; then
+ ${X2GO_LIB_PATH}/x2gosyslog "$0" "debug" "SSH port randomization requested."
+ SSH_PORT="$(get_random_port)"
+else
+ ${X2GO_LIB_PATH}/x2gosyslog "$0" "debug" "IP-based SSH port initialization requested."
+ typeset ip_address="$(get_server_ip_address)"
+
+ if [ "$?" = "0" ]; then
+ typeset -i ip_address_last_octet="${ip_address##*.}"
+ SSH_PORT="$((30000 + (${ip_address_last_octet} * 128)))"
+ else
+ ${X2GO_LIB_PATH}/x2gosyslog "$0" "warning" "IP-based SSH port initialization requested, but failed to fetch primary address."
+ ${X2GO_LIB_PATH}/x2gosyslog "$0" "warning" "Falling back to randomization."
+ SSH_PORT="$(get_random_port)"
+ fi
+fi
+
X2GO_PORT=49 #First port for X2GO=50
-SSH_PORT=30000 #First ssh port 30001
# some sanity checks before session startup...
if egrep "^backend[ ]*=[ ]*postgres" /etc/x2go/x2gosql/sql 1>/dev/null 2>/dev/null && [ "x$USER" = "xroot" ]; then
--
Alioth's /srv/git/code.x2go.org/x2goserver.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2goserver.git
More information about the x2go-commits
mailing list