Skip to content

Commit 39b18c4

Browse files
authored
Refactor IP retrieval to use Cloudflare APIfeat: optimize IP info retrieval and add node flag emojis
1. Implement self-hosted IP API for faster data fetching and improved stability. 2. Add region-specific flag emojis to node names for a more intuitive visual experience.
1 parent a7d1c96 commit 39b18c4

1 file changed

Lines changed: 26 additions & 19 deletions

File tree

sba.sh

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -631,15 +631,17 @@ check_system_ip() {
631631
[ -n "$DEFAULT_LOCAL_IP6" ] && local BIND_ADDRESS6="--bind-address=$DEFAULT_LOCAL_IP6"
632632
fi
633633

634-
WAN4=$(wget $BIND_ADDRESS4 -qO- --no-check-certificate --tries=2 --timeout=2 http://api-ipv4.ip.sb)
635-
[ -n "$WAN4" ] && local IP4_JSON=$(wget -qO- --no-check-certificate --tries=2 --timeout=10 https://ip.forvps.gq/${WAN4}${IS_CHINESE}) &&
636-
COUNTRY4=$(sed -En 's/.*"country":[ ]*"([^"]+)".*/\1/p' <<< "$IP4_JSON") &&
637-
ASNORG4=$(sed -En 's/.*"(isp|asn_org)":[ ]*"([^"]+)".*/\2/p' <<< "$IP4_JSON")
638-
639-
WAN6=$(wget $BIND_ADDRESS6 -qO- --no-check-certificate --tries=2 --timeout=2 http://api-ipv6.ip.sb)
640-
[ -n "$WAN6" ] && local IP6_JSON=$(wget -qO- --no-check-certificate --tries=2 --timeout=10 https://ip.forvps.gq/${WAN6}${IS_CHINESE}) &&
641-
COUNTRY6=$(sed -En 's/.*"country":[ ]*"([^"]+)".*/\1/p' <<< "$IP6_JSON") &&
642-
ASNORG6=$(sed -En 's/.*"(isp|asn_org)":[ ]*"([^"]+)".*/\2/p' <<< "$IP6_JSON")
634+
local IP4_JSON=$(wget $BIND_ADDRESS4 -4 -qO- --no-check-certificate --tries=2 --timeout=2 https://ip.cloudflare.nyc.mn${IS_CHINESE}) &&
635+
WAN4=$(awk -F '"' '/"ip"/{print $4}' <<< "$IP4_JSON") &&
636+
COUNTRY4=$(awk -F '"' '/"country"/{print $4}' <<< "$IP4_JSON") &&
637+
EMOJI4=$(awk -F '"' '/"emoji"/{print $4}' <<< "$IP4_JSON") &&
638+
ASNORG4=$(awk -F '"' '/"isp"/{print $4}' <<< "$IP4_JSON")
639+
640+
local IP6_JSON=$(wget $BIND_ADDRESS6 -6 -qO- --no-check-certificate --tries=2 --timeout=2 https://ip.cloudflare.nyc.mn${IS_CHINESE}) &&
641+
WAN6=$(awk -F '"' '/"ip"/{print $4}' <<< "$IP6_JSON") &&
642+
COUNTRY6=$(awk -F '"' '/"country"/{print $4}' <<< "$IP6_JSON") &&
643+
EMOJI6=$(awk -F '"' '/"emoji"/{print $4}' <<< "$IP6_JSON") &&
644+
ASNORG6=$(awk -F '"' '/"isp"/{print $4}' <<< "$IP6_JSON")
643645
}
644646

645647
# 获取 sing-box 最新版本
@@ -806,16 +808,18 @@ sing_box_variable() {
806808
WS_PATH=${WS_PATH:-"$WS_PATH_DEFAULT"}
807809

808810
# 输入节点名,以系统的 hostname 作为默认
811+
local EMOJI="${EMOJI4:-$EMOJI6}"
812+
local EMOJI="${EMOJI}${EMOJI:+ }"
809813
if [ -z "$NODE_NAME" ]; then
810814
if [ -x "$(type -p hostname)" ]; then
811-
NODE_NAME_DEFAULT="$(hostname)"
815+
local NODE_NAME_DEFAULT="${EMOJI}$(hostname)"
812816
elif [ -s /etc/hostname ]; then
813-
NODE_NAME_DEFAULT="$(cat /etc/hostname)"
817+
local NODE_NAME_DEFAULT="${EMOJI}$(cat /etc/hostname)"
814818
else
815-
NODE_NAME_DEFAULT="sba"
819+
local NODE_NAME_DEFAULT="${EMOJI}sba"
816820
fi
817821
! grep -q 'noninteractive_install' <<< "$NONINTERACTIVE_INSTALL" && reading "\n (7/7) $(text 49) " NODE_NAME
818-
NODE_NAME="${NODE_NAME:-"$NODE_NAME_DEFAULT"}"
822+
grep -q '^$' <<< "$NODE_NAME" && NODE_NAME="$NODE_NAME_DEFAULT" || NODE_NAME="${EMOJI}${NODE_NAME}"
819823
fi
820824
}
821825

@@ -1868,14 +1872,17 @@ fast_install_variables() {
18681872
WS_PATH=${WS_PATH:-"$WS_PATH_DEFAULT"}
18691873

18701874
# 输入节点名,以系统的 hostname 作为默认
1875+
check_system_ip
1876+
local EMOJI="${EMOJI4:-$EMOJI6}"
1877+
local EMOJI="${EMOJI}${EMOJI:+ }"
18711878
if [ -x "$(type -p hostname)" ]; then
1872-
NODE_NAME_DEFAULT="$(hostname)"
1879+
local NODE_NAME_DEFAULT="${EMOJI}$(hostname)"
18731880
elif [ -s /etc/hostname ]; then
1874-
NODE_NAME_DEFAULT="$(cat /etc/hostname)"
1881+
local NODE_NAME_DEFAULT="${EMOJI}$(cat /etc/hostname)"
18751882
else
1876-
NODE_NAME_DEFAULT="sba"
1883+
local NODE_NAME_DEFAULT="${EMOJI}sba"
18771884
fi
1878-
NODE_NAME=${NODE_NAME:-"$NODE_NAME_DEFAULT"}
1885+
grep -q '^$' <<< "$NODE_NAME" && NODE_NAME="$NODE_NAME_DEFAULT" || NODE_NAME="${EMOJI}${NODE_NAME}"
18791886
}
18801887

18811888
# 判断当前 sba 的运行状态,并对应的给菜单和动作赋值
@@ -2034,8 +2041,8 @@ check_system_info
20342041
check_arch
20352042
check_brutal
20362043
check_dependencies
2037-
check_system_ip
2044+
[ "$NONINTERACTIVE_INSTALL" != 'noninteractive_install' ] && check_system_ip
20382045
check_install
20392046
menu_setting
20402047

2041-
[ "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ] && ACTION[2] || menu
2048+
[ "$NONINTERACTIVE_INSTALL" = 'noninteractive_install' ] && ACTION[2] || menu

0 commit comments

Comments
 (0)