From 7f65fb7f43bc0b62ed417c8452ad67440ef26cab Mon Sep 17 00:00:00 2001 From: Ben Schwartz Date: Fri, 26 Feb 2021 13:53:20 -0500 Subject: [PATCH] Add a fallback IP check URL Fixes #776 --- .../install_scripts/install_server.sh | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/server_manager/install_scripts/install_server.sh b/src/server_manager/install_scripts/install_server.sh index 70c5fdd0..b1471c21 100755 --- a/src/server_manager/install_scripts/install_server.sh +++ b/src/server_manager/install_scripts/install_server.sh @@ -388,6 +388,21 @@ Make sure to open the following ports on your firewall, router or cloud provider " } +function set_hostname() { + # These are URLs that return the client's apparent IP address. + # We have more than one to try in case one starts failing + # (e.g. https://github.com/Jigsaw-Code/outline-server/issues/776). + local -ar urls=( + 'https://ipinfo.io/ip' + 'https://domains.google.com/checkip' + ) + for url in "${urls[@]}"; do + PUBLIC_HOSTNAME="$(fetch --ipv4 "${url}")" && return + done + echo "Failed to determine the server's IP address. Try using --hostname ." >&2 + return 1 +} + install_shadowbox() { # Make sure we don't leak readable files to other users. umask 0007 @@ -409,17 +424,11 @@ install_shadowbox() { readonly ACCESS_CONFIG="${ACCESS_CONFIG:-${SHADOWBOX_DIR}/access.txt}" readonly SB_IMAGE="${SB_IMAGE:-quay.io/outline/shadowbox:stable}" - log_for_sentry "Setting PUBLIC_HOSTNAME" - # TODO(fortuna): Make sure this is IPv4 - PUBLIC_HOSTNAME="${FLAGS_HOSTNAME:-${SB_PUBLIC_IP:-$(fetch --ipv4 https://ipinfo.io/ip)}}" - readonly PUBLIC_HOSTNAME - + PUBLIC_HOSTNAME="${FLAGS_HOSTNAME:-${SB_PUBLIC_IP:-}}" if [[ -z "${PUBLIC_HOSTNAME}" ]]; then - local -r MSG="Failed to determine the server's IP address. Try using --hostname ." - log_error "${MSG}" - log_for_sentry "${MSG}" - exit 1 + run_step "Setting PUBLIC_HOSTNAME to external IP" set_hostname fi + readonly PUBLIC_HOSTNAME # If $ACCESS_CONFIG is already populated, make a backup before clearing it. log_for_sentry "Initializing ACCESS_CONFIG"