From f358304707481ac27fd1d44c25a1a2bc532e413e Mon Sep 17 00:00:00 2001 From: "Ycarus (Yannick Chabanois)" Date: Fri, 10 Nov 2023 10:13:08 +0100 Subject: [PATCH] Fix issue when server use IPv6 --- omr-tracker/files/bin/omr-tracker-server | 16 +++++++++++++--- .../files/etc/init.d/openmptcprouter-vps | 7 +++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/omr-tracker/files/bin/omr-tracker-server b/omr-tracker/files/bin/omr-tracker-server index cff94206b..d7124a555 100755 --- a/omr-tracker/files/bin/omr-tracker-server +++ b/omr-tracker/files/bin/omr-tracker-server @@ -25,7 +25,7 @@ _check_server() { local port=$2 local k=0 while [ "$server_ping" = false ] && [ "$k" -le "$retry" ]; do - ret=$(curl -4 \ + ret=$(curl \ --max-time "$OMR_TRACKER_TIMEOUT" \ -s \ -k \ @@ -66,7 +66,12 @@ _check_master() { set_ip() { local ip=$1 ipresolve="$(resolveip -4 $ip | head -n 1)" - [ -n "$ipresolve" ] && ip="$ipresolve" + if [ -n "$ipresolve" ]; then + ip="$ipresolve" + else + ip6resolve="$(resolveip -6 $ip | head -n 1)" + [ -n "$ip6resolve" ] && ip="$ip6resolve" + fi #_ping_server $ip _check_server $ip $port if [ "$server_ping" = true ]; then @@ -191,7 +196,12 @@ _check_backup() { set_ip() { local ip=$1 ipresolve="$(resolveip -4 $ip | head -n 1)" - [ -z "$ipresolve" ] && ip="$ipresolve" + if [ -n "$ipresolve" ]; then + ip="$ipresolve" + else + ip6resolve="$(resolveip -6 $ip | head -n 1)" + [ -n "$ip6resolve" ] && ip="$ip6resolve" + fi #_ping_server $ip _check_server $ip $port #[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss${count}.server | tr -d '\n')" = "$ip" ] && break diff --git a/openmptcprouter/files/etc/init.d/openmptcprouter-vps b/openmptcprouter/files/etc/init.d/openmptcprouter-vps index 3852d4155..939a0ed7b 100755 --- a/openmptcprouter/files/etc/init.d/openmptcprouter-vps +++ b/openmptcprouter/files/etc/init.d/openmptcprouter-vps @@ -501,6 +501,13 @@ _get_vps_config() { fi fi vpsip="$(uci -q get openmptcprouter.${servername}.ip | awk '{print $1}')" + ipresolve="$(resolveip -4 $vpsip | head -n 1)" + if [ -n "$ipresolve" ]; then + vpsip="$ipresolve" + else + ip6resolve="$(resolveip -6 $vpsip | head -n 1)" + [ -n "$ip6resolve" ] && vpsip="$ip6resolve" + fi if [ "$(uci -q get shadowsocks-libev.sss0.server)" != "127.0.0.1" ] && [ "$(uci -q get shadowsocks-libev.sss0.server)" != "$vpsip" ] && [ "$(uci -q get openmptcprouter.settings.ha)" != "1" ]; then config_foreach _set_ss_server server "server" $vpsip uci -q batch <<-EOF >/dev/null