Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
3af96ec0bc | ||
![]() |
59bc26b457 | ||
![]() |
61cdfc5bbe | ||
![]() |
51ff04fa02 | ||
![]() |
cad75208d0 | ||
![]() |
25c14b8520 | ||
![]() |
463ff482ea |
@@ -102,7 +102,7 @@ Usage: v2ray [options]... [args]...
|
|||||||
reinstall 重装脚本
|
reinstall 重装脚本
|
||||||
|
|
||||||
测试:
|
测试:
|
||||||
client, genc [name] 显示用于客户端 JOSN, 仅供参考
|
client, genc [name] 显示用于客户端 JSON, 仅供参考
|
||||||
debug [name] 显示一些 debug 信息, 仅供参考
|
debug [name] 显示一些 debug 信息, 仅供参考
|
||||||
gen [...] 同等于 add, 但只显示 JSON 内容, 不创建文件, 测试使用
|
gen [...] 同等于 add, 但只显示 JSON 内容, 不创建文件, 测试使用
|
||||||
no-auto-tls [...] 同等于 add, 但禁止自动配置 TLS, 可用于 *TLS 相关协议
|
no-auto-tls [...] 同等于 add, 但禁止自动配置 TLS, 可用于 *TLS 相关协议
|
||||||
|
@@ -189,8 +189,8 @@ download() {
|
|||||||
|
|
||||||
# get server ip
|
# get server ip
|
||||||
get_ip() {
|
get_ip() {
|
||||||
export "$(_wget -4 -qO- https://cloudflare-dns.com/cdn-cgi/trace | grep ip=)" &>/dev/null
|
export "$(_wget -4 -qO- https://one.one.one.one/cdn-cgi/trace | grep ip=)" &>/dev/null
|
||||||
[[ -z $ip ]] && export "$(_wget -6 -qO- https://cloudflare-dns.com/cdn-cgi/trace | grep ip=)" &>/dev/null
|
[[ -z $ip ]] && export "$(_wget -6 -qO- https://one.one.one.one/cdn-cgi/trace | grep ip=)" &>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
# check background tasks status
|
# check background tasks status
|
||||||
|
37
src/core.sh
37
src/core.sh
@@ -125,8 +125,8 @@ get_uuid() {
|
|||||||
|
|
||||||
get_ip() {
|
get_ip() {
|
||||||
[[ $ip || $is_no_auto_tls || $is_gen ]] && return
|
[[ $ip || $is_no_auto_tls || $is_gen ]] && return
|
||||||
export "$(_wget -4 -qO- https://cloudflare-dns.com/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://cloudflare-dns.com/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 ]] && {
|
||||||
err "获取服务器 IP 失败.."
|
err "获取服务器 IP 失败.."
|
||||||
}
|
}
|
||||||
@@ -409,7 +409,8 @@ create() {
|
|||||||
is_ban_ad='{type:"field",domain:["geosite:category-ads-all"],marktag:"ban_ad",outboundTag:"block"}'
|
is_ban_ad='{type:"field",domain:["geosite:category-ads-all"],marktag:"ban_ad",outboundTag:"block"}'
|
||||||
is_ban_bt='{type:"field",protocol:["bittorrent"],marktag:"ban_bt",outboundTag:"block"}'
|
is_ban_bt='{type:"field",protocol:["bittorrent"],marktag:"ban_bt",outboundTag:"block"}'
|
||||||
is_ban_cn='{type:"field",ip:["geoip:cn"],marktag:"ban_geoip_cn",outboundTag:"block"}'
|
is_ban_cn='{type:"field",ip:["geoip:cn"],marktag:"ban_geoip_cn",outboundTag:"block"}'
|
||||||
is_routing='routing:{domainStrategy:"IPIfNonMatch",rules:[{type:"field",inboundTag:["api"],outboundTag:"api"},'"$is_ban_bt"','"$is_ban_cn"',{type:"field",ip:["geoip:private"],outboundTag:"block"}]}'
|
is_openai='{type:"field",domain:["domain:openai.com"],marktag:"fix_openai",outboundTag:"direct"}'
|
||||||
|
is_routing='routing:{domainStrategy:"IPIfNonMatch",rules:[{type:"field",inboundTag:["api"],outboundTag:"api"},'"$is_ban_bt"','"$is_ban_cn"','"$is_openai"',{type:"field",ip:["geoip:private"],outboundTag:"block"}]}'
|
||||||
is_inbounds='inbounds:[{tag:"api",port:'"$tmp_port"',listen:"127.0.0.1",protocol:"dokodemo-door",settings:{address:"127.0.0.1"}}]'
|
is_inbounds='inbounds:[{tag:"api",port:'"$tmp_port"',listen:"127.0.0.1",protocol:"dokodemo-door",settings:{address:"127.0.0.1"}}]'
|
||||||
is_outbounds='outbounds:[{tag:"direct",protocol:"freedom"},{tag:"block",protocol:"blackhole"}]'
|
is_outbounds='outbounds:[{tag:"direct",protocol:"freedom"},{tag:"block",protocol:"blackhole"}]'
|
||||||
is_server_config_json=$(jq '{'"$is_log"','"$is_dns"','"$is_api"','"$is_stats"','"$is_policy"','"$is_routing"','"$is_inbounds"','"$is_outbounds"'}' <<<{})
|
is_server_config_json=$(jq '{'"$is_log"','"$is_dns"','"$is_api"','"$is_stats"','"$is_policy"','"$is_routing"','"$is_inbounds"','"$is_outbounds"'}' <<<{})
|
||||||
@@ -917,6 +918,7 @@ add() {
|
|||||||
is_use_host=$2
|
is_use_host=$2
|
||||||
is_use_uuid=$3
|
is_use_uuid=$3
|
||||||
is_use_path=$4
|
is_use_path=$4
|
||||||
|
is_add_opts="[host] [uuid] [/path]"
|
||||||
;;
|
;;
|
||||||
vmess*)
|
vmess*)
|
||||||
is_use_port=$2
|
is_use_port=$2
|
||||||
@@ -925,6 +927,11 @@ add() {
|
|||||||
is_use_dynamic_port_start=$5
|
is_use_dynamic_port_start=$5
|
||||||
is_use_dynamic_port_end=$6
|
is_use_dynamic_port_end=$6
|
||||||
[[ $(grep dynamic-port <<<$is_new_protocol) ]] && is_dynamic_port=1
|
[[ $(grep dynamic-port <<<$is_new_protocol) ]] && is_dynamic_port=1
|
||||||
|
if [[ $is_dynamic_port ]]; then
|
||||||
|
is_add_opts="[port] [uuid] [type] [start_port] [end_port]"
|
||||||
|
else
|
||||||
|
is_add_opts="[port] [uuid] [type]"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
# *reality*)
|
# *reality*)
|
||||||
# is_reality=1
|
# is_reality=1
|
||||||
@@ -936,24 +943,32 @@ add() {
|
|||||||
is_use_port=$2
|
is_use_port=$2
|
||||||
is_use_pass=$3
|
is_use_pass=$3
|
||||||
is_use_method=$4
|
is_use_method=$4
|
||||||
|
is_add_opts="[port] [password] [method]"
|
||||||
;;
|
;;
|
||||||
*door)
|
*door)
|
||||||
is_use_port=$2
|
is_use_port=$2
|
||||||
is_use_door_addr=$3
|
is_use_door_addr=$3
|
||||||
is_use_door_port=$4
|
is_use_door_port=$4
|
||||||
|
is_add_opts="[port] [remote_addr] [remote_port]"
|
||||||
;;
|
;;
|
||||||
socks)
|
socks)
|
||||||
is_socks=1
|
is_socks=1
|
||||||
is_use_port=$2
|
is_use_port=$2
|
||||||
is_use_socks_user=$3
|
is_use_socks_user=$3
|
||||||
is_use_socks_pass=$4
|
is_use_socks_pass=$4
|
||||||
|
is_add_opts="[port] [username] [password]"
|
||||||
;;
|
;;
|
||||||
*http)
|
*http)
|
||||||
is_use_port=$2
|
is_use_port=$2
|
||||||
|
is_add_opts="[port]"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
[[ $1 && ! $is_change ]] && msg "\n使用协议: $is_new_protocol"
|
[[ $1 && ! $is_change ]] && {
|
||||||
|
msg "\n使用协议: $is_new_protocol"
|
||||||
|
# err msg tips
|
||||||
|
is_err_tips="\n\n请使用: $(_green $is_core add $1 $is_add_opts) 来添加 $is_new_protocol 配置"
|
||||||
|
}
|
||||||
|
|
||||||
# remove old protocol args
|
# remove old protocol args
|
||||||
if [[ $is_set_new_protocol ]]; then
|
if [[ $is_set_new_protocol ]]; then
|
||||||
@@ -1002,28 +1017,28 @@ add() {
|
|||||||
|
|
||||||
if [[ $is_use_port ]]; then
|
if [[ $is_use_port ]]; then
|
||||||
[[ ! $(is_test port ${is_use_port}) ]] && {
|
[[ ! $(is_test port ${is_use_port}) ]] && {
|
||||||
err "($is_use_port) 不是一个有效的端口."
|
err "($is_use_port) 不是一个有效的端口. $is_err_tips"
|
||||||
}
|
}
|
||||||
[[ $(is_test port_used $is_use_port) ]] && {
|
[[ $(is_test port_used $is_use_port) ]] && {
|
||||||
err "无法使用 ($is_use_port) 端口."
|
err "无法使用 ($is_use_port) 端口. $is_err_tips"
|
||||||
}
|
}
|
||||||
port=$is_use_port
|
port=$is_use_port
|
||||||
fi
|
fi
|
||||||
if [[ $is_use_door_port ]]; then
|
if [[ $is_use_door_port ]]; then
|
||||||
[[ ! $(is_test port ${is_use_door_port}) ]] && {
|
[[ ! $(is_test port ${is_use_door_port}) ]] && {
|
||||||
err "(${is_use_door_port}) 不是一个有效的目标端口."
|
err "(${is_use_door_port}) 不是一个有效的目标端口. $is_err_tips"
|
||||||
}
|
}
|
||||||
door_port=$is_use_door_port
|
door_port=$is_use_door_port
|
||||||
fi
|
fi
|
||||||
if [[ $is_use_uuid ]]; then
|
if [[ $is_use_uuid ]]; then
|
||||||
[[ ! $(is_test uuid $is_use_uuid) ]] && {
|
[[ ! $(is_test uuid $is_use_uuid) ]] && {
|
||||||
err "($is_use_uuid) 不是一个有效的 UUID."
|
err "($is_use_uuid) 不是一个有效的 UUID. $is_err_tips"
|
||||||
}
|
}
|
||||||
uuid=$is_use_uuid
|
uuid=$is_use_uuid
|
||||||
fi
|
fi
|
||||||
if [[ $is_use_path ]]; then
|
if [[ $is_use_path ]]; then
|
||||||
[[ ! $(is_test path $is_use_path) ]] && {
|
[[ ! $(is_test path $is_use_path) ]] && {
|
||||||
err "($is_use_path) 不是有效的路径."
|
err "($is_use_path) 不是有效的路径. $is_err_tips"
|
||||||
}
|
}
|
||||||
path=$is_use_path
|
path=$is_use_path
|
||||||
fi
|
fi
|
||||||
@@ -1043,7 +1058,7 @@ add() {
|
|||||||
for v in ${is_tmp_list[@]}; do
|
for v in ${is_tmp_list[@]}; do
|
||||||
msg "\t\t$v"
|
msg "\t\t$v"
|
||||||
done
|
done
|
||||||
msg
|
msg "$is_err_tips\n"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
ss_method=$is_tmp_use_type
|
ss_method=$is_tmp_use_type
|
||||||
@@ -1388,7 +1403,7 @@ get() {
|
|||||||
# is_host_dns=$(ping $host $is_ip_type -c 1 -W 2 | head -1)
|
# is_host_dns=$(ping $host $is_ip_type -c 1 -W 2 | head -1)
|
||||||
is_dns_type="a"
|
is_dns_type="a"
|
||||||
[[ $(grep ":" <<<$ip) ]] && is_dns_type="aaaa"
|
[[ $(grep ":" <<<$ip) ]] && is_dns_type="aaaa"
|
||||||
is_host_dns=$(_wget -qO- --header="accept: application/dns-json" "https://cloudflare-dns.com/dns-query?name=$host&type=$is_dns_type")
|
is_host_dns=$(_wget -qO- --header="accept: application/dns-json" "https://one.one.one.one/dns-query?name=$host&type=$is_dns_type")
|
||||||
;;
|
;;
|
||||||
log | logerr)
|
log | logerr)
|
||||||
msg "\n 提醒: 按 $(_green Ctrl + C) 退出\n"
|
msg "\n 提醒: 按 $(_green Ctrl + C) 退出\n"
|
||||||
|
@@ -54,7 +54,7 @@ show_help() {
|
|||||||
" t, test 测试运行"
|
" t, test 测试运行"
|
||||||
" reinstall 重装脚本\n"
|
" reinstall 重装脚本\n"
|
||||||
"测试:"
|
"测试:"
|
||||||
" client, genc [name] 显示用于客户端 JOSN, 仅供参考"
|
" client, genc [name] 显示用于客户端 JSON, 仅供参考"
|
||||||
" debug [name] 显示一些 debug 信息, 仅供参考"
|
" debug [name] 显示一些 debug 信息, 仅供参考"
|
||||||
" gen [...] 同等于 add, 但只显示 JSON 内容, 不创建文件, 测试使用"
|
" gen [...] 同等于 add, 但只显示 JSON 内容, 不创建文件, 测试使用"
|
||||||
" no-auto-tls [...] 同等于 add, 但禁止自动配置 TLS, 可用于 *TLS 相关协议"
|
" no-auto-tls [...] 同等于 add, 但禁止自动配置 TLS, 可用于 *TLS 相关协议"
|
||||||
|
Reference in New Issue
Block a user