diff --git a/install.sh b/install.sh index 8fb23f3b..30a0f688 100644 --- a/install.sh +++ b/install.sh @@ -85,7 +85,10 @@ config_after_install() { local existing_hasDefaultCredential=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'hasDefaultCredential: .+' | awk '{print $2}') local existing_webBasePath=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') local existing_port=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') - local server_ip=$(curl -s https://api.ipify.org) + local server_ip=$(curl -s --max-time 3 https://api.ipify.org) + if [ -z "$server_ip" ]; then + server_ip=$(curl -s --max-time 3 https://4.ident.me) + fi if [[ ${#existing_webBasePath} -lt 4 ]]; then if [[ "$existing_hasDefaultCredential" == "true" ]]; then diff --git a/web/service/server.go b/web/service/server.go index 1e29990f..fb5f4be1 100644 --- a/web/service/server.go +++ b/web/service/server.go @@ -221,10 +221,20 @@ func (s *ServerService) GetStatus(lastStatus *Status) *Status { } // IP fetching with caching - if s.cachedIPv4 == "" || s.cachedIPv6 == "" { + if s.cachedIPv4 == "" { s.cachedIPv4 = getPublicIP("https://api.ipify.org") - s.cachedIPv6 = getPublicIP("https://api6.ipify.org") + if s.cachedIPv4 == "" { + s.cachedIPv4 = getPublicIP("https://4.ident.me") + } } + + if s.cachedIPv6 == "" { + s.cachedIPv6 = getPublicIP("https://api6.ipify.org") + if s.cachedIPv6 == "" { + s.cachedIPv6 = getPublicIP("https://6.ident.me") + } + } + status.PublicIP.IPv4 = s.cachedIPv4 status.PublicIP.IPv6 = s.cachedIPv6 diff --git a/x-ui.sh b/x-ui.sh index 84e1b612..1ce85f91 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -249,7 +249,10 @@ check_config() { local existing_webBasePath=$(echo "$info" | grep -Eo 'webBasePath: .+' | awk '{print $2}') local existing_port=$(echo "$info" | grep -Eo 'port: .+' | awk '{print $2}') local existing_cert=$(/usr/local/x-ui/x-ui setting -getCert true | grep -Eo 'cert: .+' | awk '{print $2}') - local server_ip=$(curl -s https://api.ipify.org) + local server_ip=$(curl -s --max-time 3 https://api.ipify.org) + if [ -z "$server_ip" ]; then + server_ip=$(curl -s --max-time 3 https://4.ident.me) + fi if [[ -n "$existing_cert" ]]; then local domain=$(basename "$(dirname "$existing_cert")") @@ -1630,7 +1633,10 @@ remove_iplimit() { } SSH_port_forwarding() { - local server_ip=$(curl -s https://api.ipify.org) + local server_ip=$(curl -s --max-time 3 https://api.ipify.org) + if [ -z "$server_ip" ]; then + server_ip=$(curl -s --max-time 3 https://4.ident.me) + fi local existing_webBasePath=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'webBasePath: .+' | awk '{print $2}') local existing_port=$(/usr/local/x-ui/x-ui setting -show true | grep -Eo 'port: .+' | awk '{print $2}') local existing_listenIP=$(/usr/local/x-ui/x-ui setting -getListen true | grep -Eo 'listenIP: .+' | awk '{print $2}')