Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--install.sh12
-rw-r--r--web/service/server.go24
2 files changed, 24 insertions, 12 deletions
diff --git a/install.sh b/install.sh
index e43cf2bf..a1398712 100644
--- a/install.sh
+++ b/install.sh
@@ -7,6 +7,7 @@ yellow='\033[0;33m'
plain='\033[0m'
cur_dir=$(pwd)
+show_ip_service_lists=("https://api.ipify.org" "https://4.ident.me")
# check root
[[ $EUID -ne 0 ]] && echo -e "${red}Fatal error: ${plain} Please run this script with root privilege \n " && exit 1
@@ -85,10 +86,13 @@ 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 --max-time 3 https://api.ipify.org)
- if [ -z "$server_ip" ]; then
- server_ip=$(curl -s --max-time 3 https://4.ident.me)
- fi
+
+ for ip_service_addr in "${show_ip_service_lists[@]}"; do
+ local server_ip=$(curl -s --max-time 3 ${ip_service_addr} 2>/dev/null)
+ if [ -n "${server_ip}" ]; then
+ break
+ fi
+ done
if [[ ${#existing_webBasePath} -lt 4 ]]; then
if [[ "$existing_hasDefaultCredential" == "true" ]]; then
diff --git a/web/service/server.go b/web/service/server.go
index d0d4bd18..1bd8a55d 100644
--- a/web/service/server.go
+++ b/web/service/server.go
@@ -234,23 +234,31 @@ func (s *ServerService) GetStatus(lastStatus *Status) *Status {
}
// IP fetching with caching
+ showIp4ServiceLists := []string{"https://api.ipify.org", "https://4.ident.me"}
+ showIp6ServiceLists := []string{"https://api6.ipify.org", "https://6.ident.me"}
+
if s.cachedIPv4 == "" {
- s.cachedIPv4 = getPublicIP("https://api.ipify.org")
- if s.cachedIPv4 == "N/A" {
- s.cachedIPv4 = getPublicIP("https://4.ident.me")
+ for _, ip4Service := range showIp4ServiceLists {
+ s.cachedIPv4 = getPublicIP(ip4Service)
+ if s.cachedIPv4 != "N/A" {
+ break
+ }
}
}
if s.cachedIPv6 == "" && !s.noIPv6 {
- s.cachedIPv6 = getPublicIP("https://api6.ipify.org")
- if s.cachedIPv6 == "N/A" {
- s.cachedIPv6 = getPublicIP("https://6.ident.me")
- if s.cachedIPv6 == "N/A" {
- s.noIPv6 = true
+ for _, ip6Service := range showIp6ServiceLists {
+ s.cachedIPv6 = getPublicIP(ip6Service)
+ if s.cachedIPv6 != "N/A" {
+ break
}
}
}
+ if s.cachedIPv6 == "N/A" {
+ s.noIPv6 = true
+ }
+
status.PublicIP.IPv4 = s.cachedIPv4
status.PublicIP.IPv6 = s.cachedIPv6