mirror of
https://github.com/233boy/sing-box.git
synced 2026-05-03 14:24:40 +08:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3909d2edaf | ||
|
|
798d43ac47 | ||
|
|
09fd2df4ff | ||
|
|
596efd5659 | ||
|
|
3d942cf5c2 | ||
|
|
45b099168f |
@@ -198,6 +198,7 @@ check_status() {
|
|||||||
# dependent pkg install fail
|
# dependent pkg install fail
|
||||||
[[ ! -f $is_pkg_ok ]] && {
|
[[ ! -f $is_pkg_ok ]] && {
|
||||||
msg err "安装依赖包失败"
|
msg err "安装依赖包失败"
|
||||||
|
msg err "请尝试手动安装依赖包: $cmd update -y; $cmd install -y $pkg"
|
||||||
is_fail=1
|
is_fail=1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
args=$@
|
args=$@
|
||||||
is_sh_ver=v1.0
|
is_sh_ver=v1.06
|
||||||
|
|
||||||
. /etc/sing-box/sh/src/init.sh
|
. /etc/sing-box/sh/src/init.sh
|
||||||
43
src/core.sh
43
src/core.sh
@@ -65,7 +65,7 @@ info_list=(
|
|||||||
"指纹 (Fingerprint)"
|
"指纹 (Fingerprint)"
|
||||||
"公钥 (Public key)"
|
"公钥 (Public key)"
|
||||||
"用户名 (Username)"
|
"用户名 (Username)"
|
||||||
"跳过证书验证 (allowlnsecure)"
|
"跳过证书验证 (allowInsecure)"
|
||||||
"拥塞控制算法 (congestion_control)"
|
"拥塞控制算法 (congestion_control)"
|
||||||
)
|
)
|
||||||
change_list=(
|
change_list=(
|
||||||
@@ -116,7 +116,7 @@ get_uuid() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get_ip() {
|
get_ip() {
|
||||||
[[ $ip || $is_no_auto_tls || $is_gen ]] && return
|
[[ $ip || $is_no_auto_tls || $is_gen || $is_dont_get_ip ]] && return
|
||||||
export "$(_wget -4 -qO- https://one.one.one.one/cdn-cgi/trace | grep ip=)" &>/dev/null
|
export "$(_wget -4 -qO- https://one.one.one.one/cdn-cgi/trace | grep ip=)" &>/dev/null
|
||||||
[[ ! $ip ]] && export "$(_wget -6 -qO- https://one.one.one.one/cdn-cgi/trace | grep ip=)" &>/dev/null
|
[[ ! $ip ]] && export "$(_wget -6 -qO- https://one.one.one.one/cdn-cgi/trace | grep ip=)" &>/dev/null
|
||||||
[[ ! $ip ]] && {
|
[[ ! $ip ]] && {
|
||||||
@@ -443,6 +443,7 @@ change() {
|
|||||||
[[ $is_auto_get_config ]] && msg "\n自动选择: $is_config_file"
|
[[ $is_auto_get_config ]] && msg "\n自动选择: $is_config_file"
|
||||||
}
|
}
|
||||||
is_old_net=$net
|
is_old_net=$net
|
||||||
|
[[ $is_tcp_http ]] && net=http
|
||||||
[[ $host ]] && net=$is_protocol-$net-tls
|
[[ $host ]] && net=$is_protocol-$net-tls
|
||||||
[[ $is_reality && $net_type =~ 'http' ]] && net=rh2
|
[[ $is_reality && $net_type =~ 'http' ]] && net=rh2
|
||||||
|
|
||||||
@@ -634,6 +635,8 @@ change() {
|
|||||||
|
|
||||||
# delete config.
|
# delete config.
|
||||||
del() {
|
del() {
|
||||||
|
# dont get ip
|
||||||
|
is_dont_get_ip=1
|
||||||
[[ $is_conf_dir_empty ]] && return # not found any json file.
|
[[ $is_conf_dir_empty ]] && return # not found any json file.
|
||||||
# get a config file
|
# get a config file
|
||||||
[[ ! $is_config_file ]] && get info $1
|
[[ ! $is_config_file ]] && get info $1
|
||||||
@@ -662,6 +665,7 @@ del() {
|
|||||||
warn "当前配置目录为空! 因为你刚刚删除了最后一个配置文件."
|
warn "当前配置目录为空! 因为你刚刚删除了最后一个配置文件."
|
||||||
is_conf_dir_empty=1
|
is_conf_dir_empty=1
|
||||||
fi
|
fi
|
||||||
|
unset is_dont_get_ip
|
||||||
[[ $is_dont_auto_exit ]] && unset is_config_file
|
[[ $is_dont_auto_exit ]] && unset is_config_file
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -923,7 +927,7 @@ add() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $is_use_tls ]]; then
|
if [[ $is_use_tls ]]; then
|
||||||
if [[ ! $is_no_auto_tls && ! $is_caddy && ! $is_gen ]]; then
|
if [[ ! $is_no_auto_tls && ! $is_caddy && ! $is_gen && ! $is_dont_test_host ]]; then
|
||||||
# test auto tls
|
# test auto tls
|
||||||
[[ $(is_test port_used 80) || $(is_test port_used 443) ]] && {
|
[[ $(is_test port_used 80) || $(is_test port_used 443) ]] && {
|
||||||
get_port
|
get_port
|
||||||
@@ -1066,9 +1070,9 @@ get() {
|
|||||||
is_config_name=$is_config_file
|
is_config_name=$is_config_file
|
||||||
|
|
||||||
if [[ $is_caddy && $host && -f $is_caddy_conf/$host.conf ]]; then
|
if [[ $is_caddy && $host && -f $is_caddy_conf/$host.conf ]]; then
|
||||||
tmp_tlsport=$(egrep -o "$host:[1-9][0-9]?+" $is_caddy_conf/$host.conf | sed s/.*://)
|
is_tmp_https_port=$(egrep -o "$host:[1-9][0-9]?+" $is_caddy_conf/$host.conf | sed s/.*://)
|
||||||
fi
|
fi
|
||||||
[[ $tmp_tlsport ]] && is_https_port=$tmp_tlsport
|
[[ $is_tmp_https_port ]] && is_https_port=$is_tmp_https_port
|
||||||
[[ $is_client && $host ]] && port=$is_https_port
|
[[ $is_client && $host ]] && port=$is_https_port
|
||||||
get protocol $is_protocol-$net_type
|
get protocol $is_protocol-$net_type
|
||||||
fi
|
fi
|
||||||
@@ -1090,6 +1094,8 @@ get() {
|
|||||||
tuic*)
|
tuic*)
|
||||||
net=tuic
|
net=tuic
|
||||||
is_protocol=$net
|
is_protocol=$net
|
||||||
|
[[ ! $password ]] && password=$uuid
|
||||||
|
is_users="users:[{uuid:\"$uuid\",password:\"$password\"}]"
|
||||||
json_str="$is_users,congestion_control:\"bbr\",$is_tls_json"
|
json_str="$is_users,congestion_control:\"bbr\",$is_tls_json"
|
||||||
;;
|
;;
|
||||||
trojan*)
|
trojan*)
|
||||||
@@ -1290,6 +1296,7 @@ info() {
|
|||||||
[[ $net == "http" ]] && {
|
[[ $net == "http" ]] && {
|
||||||
net=tcp
|
net=tcp
|
||||||
is_type=http
|
is_type=http
|
||||||
|
is_tcp_http=1
|
||||||
is_info_show+=(5)
|
is_info_show+=(5)
|
||||||
is_info_str=(${is_info_str[@]/http/tcp http})
|
is_info_str=(${is_info_str[@]/http/tcp http})
|
||||||
}
|
}
|
||||||
@@ -1297,7 +1304,7 @@ info() {
|
|||||||
is_insecure=1
|
is_insecure=1
|
||||||
is_info_show+=(8 9 20)
|
is_info_show+=(8 9 20)
|
||||||
is_info_str+=(tls h3 true)
|
is_info_str+=(tls h3 true)
|
||||||
is_quic_add=",tls:\"tls\",alpn:\"h3\"" # cant add allowlnsecure
|
is_quic_add=",tls:\"tls\",alpn:\"h3\"" # cant add allowInsecure
|
||||||
}
|
}
|
||||||
is_vmess_url=$(jq -c "{v:2,ps:\"233boy-${net}-$is_addr\",add:\"$is_addr\",port:\"$port\",id:\"$uuid\",aid:\"0\",net:\"$net\",type:\"$is_type\"$is_quic_add}" <<<{})
|
is_vmess_url=$(jq -c "{v:2,ps:\"233boy-${net}-$is_addr\",add:\"$is_addr\",port:\"$port\",id:\"$uuid\",aid:\"0\",net:\"$net\",type:\"$is_type\"$is_quic_add}" <<<{})
|
||||||
is_url=vmess://$(echo -n $is_vmess_url | base64 -w 0)
|
is_url=vmess://$(echo -n $is_vmess_url | base64 -w 0)
|
||||||
@@ -1313,7 +1320,7 @@ info() {
|
|||||||
is_insecure=1
|
is_insecure=1
|
||||||
is_can_change=(0 1 4)
|
is_can_change=(0 1 4)
|
||||||
is_info_show=(0 1 2 10 4 8 20)
|
is_info_show=(0 1 2 10 4 8 20)
|
||||||
is_url="$is_protocol://$password@$is_addr:$port?type=tcp&security=tls&allowlnsecure=1#233boy-$net-$is_addr"
|
is_url="$is_protocol://$password@$is_addr:$port?type=tcp&security=tls&allowInsecure=1#233boy-$net-$is_addr"
|
||||||
is_info_str=($is_protocol $is_addr $port $password tcp tls true)
|
is_info_str=($is_protocol $is_addr $port $password tcp tls true)
|
||||||
;;
|
;;
|
||||||
hy*)
|
hy*)
|
||||||
@@ -1324,10 +1331,10 @@ info() {
|
|||||||
;;
|
;;
|
||||||
tuic)
|
tuic)
|
||||||
is_insecure=1
|
is_insecure=1
|
||||||
is_can_change=(0 1 5)
|
is_can_change=(0 1 4 5)
|
||||||
is_info_show=(0 1 2 3 8 9 20 21)
|
is_info_show=(0 1 2 3 10 8 9 20 21)
|
||||||
is_url="$is_protocol://$uuid:@$is_addr:$port?alpn=h3&allow_insecure=1&congestion_control=bbr#233boy-$net-$is_addr"
|
is_url="$is_protocol://$uuid:$password@$is_addr:$port?alpn=h3&allow_insecure=1&congestion_control=bbr#233boy-$net-$is_addr"
|
||||||
is_info_str=($is_protocol $is_addr $port $uuid tls h3 true bbr)
|
is_info_str=($is_protocol $is_addr $port $uuid $password tls h3 true bbr)
|
||||||
;;
|
;;
|
||||||
reality)
|
reality)
|
||||||
is_color=41
|
is_color=41
|
||||||
@@ -1366,11 +1373,14 @@ info() {
|
|||||||
fi
|
fi
|
||||||
msg "$a $tt= \e[${is_color}m${is_info_str[$i]}\e[0m"
|
msg "$a $tt= \e[${is_color}m${is_info_str[$i]}\e[0m"
|
||||||
done
|
done
|
||||||
|
if [[ $is_new_install ]]; then
|
||||||
|
warn "首次安装请查看脚本帮助文档: $(msg_ul https://233boy.com/$is_core/$is_core-script/)"
|
||||||
|
fi
|
||||||
if [[ $is_url ]]; then
|
if [[ $is_url ]]; then
|
||||||
msg "------------- ${info_list[12]} -------------"
|
msg "------------- ${info_list[12]} -------------"
|
||||||
msg "\e[4;${is_color}m${is_url}\e[0m"
|
msg "\e[4;${is_color}m${is_url}\e[0m"
|
||||||
[[ $is_insecure ]] && {
|
[[ $is_insecure ]] && {
|
||||||
warn "某些客户端如(V2rayN 等)导入URL需手动将: 跳过证书验证(allowlnsecure) 设置为 true, 或打开: 允许不安全的连接"
|
warn "某些客户端如(V2rayN 等)导入URL需手动将: 跳过证书验证(allowInsecure) 设置为 true, 或打开: 允许不安全的连接"
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
if [[ $is_no_auto_tls ]]; then
|
if [[ $is_no_auto_tls ]]; then
|
||||||
@@ -1516,7 +1526,7 @@ is_main_menu() {
|
|||||||
show_help
|
show_help
|
||||||
;;
|
;;
|
||||||
9)
|
9)
|
||||||
ask list is_do_other "启用BBR 查看日志 查看错误日志 测试运行 重装脚本 设置DNS"
|
ask list is_do_other "启用BBR 查看日志 测试运行 重装脚本 设置DNS"
|
||||||
case $REPLY in
|
case $REPLY in
|
||||||
1)
|
1)
|
||||||
load bbr.sh
|
load bbr.sh
|
||||||
@@ -1526,15 +1536,12 @@ is_main_menu() {
|
|||||||
get log
|
get log
|
||||||
;;
|
;;
|
||||||
3)
|
3)
|
||||||
get logerr
|
|
||||||
;;
|
|
||||||
4)
|
|
||||||
get test-run
|
get test-run
|
||||||
;;
|
;;
|
||||||
5)
|
4)
|
||||||
get reinstall
|
get reinstall
|
||||||
;;
|
;;
|
||||||
6)
|
5)
|
||||||
load dns.sh
|
load dns.sh
|
||||||
dns_set
|
dns_set
|
||||||
;;
|
;;
|
||||||
|
|||||||
28
src/init.sh
28
src/init.sh
@@ -47,6 +47,17 @@ warn() {
|
|||||||
echo -e "\n$is_warn $@\n"
|
echo -e "\n$is_warn $@\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# load bash script.
|
||||||
|
load() {
|
||||||
|
. $is_sh_dir/src/$1
|
||||||
|
}
|
||||||
|
|
||||||
|
# wget add --no-check-certificate
|
||||||
|
_wget() {
|
||||||
|
# [[ $proxy ]] && export https_proxy=$proxy
|
||||||
|
wget --no-check-certificate "$@"
|
||||||
|
}
|
||||||
|
|
||||||
# yum or apt-get
|
# yum or apt-get
|
||||||
cmd=$(type -P apt-get || type -P yum)
|
cmd=$(type -P apt-get || type -P yum)
|
||||||
|
|
||||||
@@ -106,6 +117,12 @@ else
|
|||||||
fi
|
fi
|
||||||
if [[ -f $is_caddy_bin && -d $is_caddy_dir && $is_caddy_service ]]; then
|
if [[ -f $is_caddy_bin && -d $is_caddy_dir && $is_caddy_service ]]; then
|
||||||
is_caddy=1
|
is_caddy=1
|
||||||
|
# fix caddy run; ver >= 2.8.2
|
||||||
|
[[ ! $(grep '\-\-adapter caddyfile' /lib/systemd/system/caddy.service) ]] && {
|
||||||
|
load systemd.sh
|
||||||
|
install_service caddy
|
||||||
|
systemctl restart caddy &
|
||||||
|
}
|
||||||
is_caddy_ver=$($is_caddy_bin version | head -n1 | cut -d " " -f1)
|
is_caddy_ver=$($is_caddy_bin version | head -n1 | cut -d " " -f1)
|
||||||
is_tmp_http_port=$(egrep '^ {2,}http_port|^http_port' $is_caddyfile | egrep -o [0-9]+)
|
is_tmp_http_port=$(egrep '^ {2,}http_port|^http_port' $is_caddyfile | egrep -o [0-9]+)
|
||||||
is_tmp_https_port=$(egrep '^ {2,}https_port|^https_port' $is_caddyfile | egrep -o [0-9]+)
|
is_tmp_https_port=$(egrep '^ {2,}https_port|^https_port' $is_caddyfile | egrep -o [0-9]+)
|
||||||
@@ -119,17 +136,6 @@ if [[ -f $is_caddy_bin && -d $is_caddy_dir && $is_caddy_service ]]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# load bash script.
|
|
||||||
load() {
|
|
||||||
. $is_sh_dir/src/$1
|
|
||||||
}
|
|
||||||
|
|
||||||
# wget add --no-check-certificate
|
|
||||||
_wget() {
|
|
||||||
# [[ $proxy ]] && export https_proxy=$proxy
|
|
||||||
wget --no-check-certificate "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
load core.sh
|
load core.sh
|
||||||
[[ ! $args ]] && args=main
|
[[ ! $args ]] && args=main
|
||||||
main $args
|
main $args
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ Requires=network-online.target
|
|||||||
Type=notify
|
Type=notify
|
||||||
User=root
|
User=root
|
||||||
Group=root
|
Group=root
|
||||||
ExecStart=$is_caddy_bin run --environ --config $is_caddyfile
|
ExecStart=$is_caddy_bin run --environ --config $is_caddyfile --adapter caddyfile
|
||||||
ExecReload=$is_caddy_bin reload --config $is_caddyfile
|
ExecReload=$is_caddy_bin reload --config $is_caddyfile --adapter caddyfile
|
||||||
TimeoutStopSec=5s
|
TimeoutStopSec=5s
|
||||||
LimitNPROC=10000
|
LimitNPROC=10000
|
||||||
LimitNOFILE=1048576
|
LimitNOFILE=1048576
|
||||||
|
|||||||
Reference in New Issue
Block a user