Skip to content

Commit

Permalink
fix bug and add update dat file
Browse files Browse the repository at this point in the history
  • Loading branch information
233boy committed Jun 10, 2024
1 parent 4d1279d commit f75e3f1
Show file tree
Hide file tree
Showing 9 changed files with 74 additions and 32 deletions.
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
使用: `v2ray help`

```
V2Ray script v4.0 by 233boy
V2Ray script v4.21 by 233boy
Usage: v2ray [options]... [args]...
基本:
Expand Down Expand Up @@ -95,17 +95,18 @@ Usage: v2ray [options]... [args]...
管理:
un, uninstall 卸载
u, update [core | sh | caddy] [ver] 更新
u, update [core | sh | dat | caddy] [ver] 更新
U, update.sh 更新脚本
s, status 运行状态
start, stop, restart [caddy] 启动, 停止, 重启
t, test 测试运行
reinstall 重装脚本
测试:
client, genc [name] 显示用于客户端 JSON, 仅供参考
client [name] 显示用于客户端 JSON, 仅供参考
debug [name] 显示一些 debug 信息, 仅供参考
gen [...] 同等于 add, 但只显示 JSON 内容, 不创建文件, 测试使用
genc [name] 显示用于客户端部分 JSON, 仅供参考
no-auto-tls [...] 同等于 add, 但禁止自动配置 TLS, 可用于 *TLS 相关协议
xapi [...] 同等于 v2ray api, 但 API 后端使用当前运行的 V2Ray 服务
Expand Down
2 changes: 1 addition & 1 deletion install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ download() {
is_ok=$is_sh_ok
;;
jq)
link=https://github.com/jqlang/jq/releases/download/jq-1.7rc1/jq-linux-$is_jq_arch
link=https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-$is_jq_arch
name="jq"
tmpfile=$tmpjq
is_ok=$is_jq_ok
Expand Down
8 changes: 5 additions & 3 deletions src/caddy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,28 +11,30 @@ caddy_config() {
# https://caddyserver.com/docs/caddyfile/options
{
admin off
http_port $is_http_port
https_port $is_https_port
}
import $is_caddy_conf/*.conf
import $is_caddy_dir/sites/*.conf
EOF
;;
*ws*)
cat >${is_caddy_site_file} <<<"
${host}:${tlsport} {
${host}:${is_https_port} {
reverse_proxy ${path} 127.0.0.1:${port}
import ${is_caddy_site_file}.add
}"
;;
*h2*)
cat >${is_caddy_site_file} <<<"
${host}:${tlsport} {
${host}:${is_https_port} {
reverse_proxy ${path} h2c:https://127.0.0.1:${port}
import ${is_caddy_site_file}.add
}"
;;
*grpc*)
cat >${is_caddy_site_file} <<<"
${host}:${tlsport} {
${host}:${is_https_port} {
reverse_proxy /${path}/* h2c:https://127.0.0.1:${port}
import ${is_caddy_site_file}.add
}"
Expand Down
52 changes: 38 additions & 14 deletions src/core.sh
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,13 @@ create() {
get info $2
[[ ! $is_client_id_json ]] && err "($is_config_name) 不支持生成客户端配置."
is_new_json=$(jq '{outbounds:[{tag:'\"$is_config_name\"',protocol:'\"$is_protocol\"','"$is_client_id_json"','"$is_stream"'}]}' <<<{})
if [[ $is_full_client ]]; then
is_dns='dns:{servers:[{address:"223.5.5.5",domain:["geosite:cn","geosite:geolocation-cn"],expectIPs:["geoip:cn"]},"1.1.1.1","8.8.8.8"]}'
is_route='routing:{rules:[{type:"field",outboundTag:"direct",ip:["geoip:cn","geoip:private"]},{type:"field",outboundTag:"direct",domain:["geosite:cn","geosite:geolocation-cn"]}]}'
is_inbounds='inbounds:[{port:2333,listen:"127.0.0.1",protocol:"socks",settings:{udp:true},sniffing:{enabled:true,destOverride:["http","tls"]}}]'
is_outbounds='outbounds:[{tag:'\"$is_config_name\"',protocol:'\"$is_protocol\"','"$is_client_id_json"','"$is_stream"'},{tag:"direct",protocol:"freedom"}]'
is_new_json=$(jq '{'$is_dns,$is_route,$is_inbounds,$is_outbounds'}' <<<{})
fi
msg
jq <<<$is_new_json
msg
Expand Down Expand Up @@ -527,7 +534,7 @@ change() {
[[ ! $is_new_port ]] && ask string is_new_port "请输入新端口:"
if [[ $is_caddy && $host ]]; then
net=$is_old_net
tlsport=$is_new_port
is_https_port=$is_new_port
load caddy.sh
caddy_config $net
manage restart caddy &
Expand Down Expand Up @@ -978,7 +985,7 @@ add() {
;;
kcp | quic)
kcp_seed=
[[ $(grep tcp <<<$is_new_protocol) ]] && header_type=
[[ $(grep -i tcp <<<$is_new_protocol) ]] && header_type=
;;
h2 | ws | grpc)
old_host=$host
Expand All @@ -989,6 +996,7 @@ add() {
path=/$path
}
fi
[[ ! $(grep -i trojan <<<$is_new_protocol) ]] && is_trojan=
;;
reality)
[[ ! $(grep -i reality <<<$is_new_protocol) ]] && is_reality=
Expand All @@ -1001,7 +1009,7 @@ add() {
is_dynamic_port=
}

[[ $is_trojan && ! $(is_test uuid $trojan_password) ]] && uuid=
[[ ! $(is_test uuid $uuid) ]] && uuid=
fi

# no-auto-tls only use h2,ws,grpc
Expand Down Expand Up @@ -1079,9 +1087,15 @@ add() {
if [[ ! $is_no_auto_tls && ! $is_caddy && ! $is_gen ]]; then
# test auto tls
[[ $(is_test port_used 80) || $(is_test port_used 443) ]] && {
warn "端口 (80 或 443) 已经被占用, 无法完成自动配置 TLS. 请考虑使用 no-auto-tls"
msg "\e[41m帮助(help)\e[0m: $(msg_ul https://233boy.com/$is_core/no-auto-tls/)\n"
exit 1
get_port
is_http_port=$tmp_port
get_port
is_https_port=$tmp_port
warn "端口 (80 或 443) 已经被占用, 你也可以考虑使用 no-auto-tls"
msg "\e[41m no-auto-tls 帮助(help)\e[0m: $(msg_ul https://233boy.com/$is_core/no-auto-tls/)\n"
msg "\n Caddy 将使用非标准端口实现自动配置 TLS, HTTP:$is_http_port HTTPS:$is_https_port\n"
msg "请确定是否继续???"
pause
}
is_install_caddy=1
fi
Expand Down Expand Up @@ -1226,10 +1240,10 @@ get() {
[[ $? != 0 ]] && err "无法读取动态端口文件: $is_dynamic_port"
fi
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/.*:https://)
is_tmp_https_port=$(egrep -o "$host:[1-9][0-9]?+" $is_caddy_conf/$host.conf | sed s/.*:https://)
fi
[[ $tmp_tlsport ]] && tlsport=$tmp_tlsport
[[ $is_client && $host ]] && port=$tlsport
[[ $is_tmp_https_port ]] && is_https_port=$is_tmp_https_port
[[ $is_client && $host ]] && port=$is_https_port
get protocol $is_protocol-$net
fi
;;
Expand Down Expand Up @@ -1501,19 +1515,18 @@ info() {
is_url_path=serviceName
}
[[ $is_protocol == 'vmess' ]] && {
is_vmess_url=$(jq -c '{v:2,ps:'\"233boy-$net-$host\"',add:'\"$is_addr\"',port:'\"$tlsport\"',id:'\"$uuid\"',aid:"0",net:'\"$net\"',host:'\"$host\"',path:'\"$path\"',tls:'\"tls\"'}' <<<{})
is_vmess_url=$(jq -c '{v:2,ps:'\"233boy-$net-$host\"',add:'\"$is_addr\"',port:'\"$is_https_port\"',id:'\"$uuid\"',aid:"0",net:'\"$net\"',host:'\"$host\"',path:'\"$path\"',tls:'\"tls\"'}' <<<{})
is_url=vmess:https://$(echo -n $is_vmess_url | base64 -w 0)
} || {
[[ $is_trojan ]] && {
uuid=$trojan_password
is_info_str=($is_protocol $is_addr $tlsport $trojan_password $net $host $path 'tls')
is_can_change=(0 1 2 3 4)
is_info_show=(0 1 2 10 4 6 7 8)
}
is_url="$is_protocol:https://$uuid@$host:$tlsport?encryption=none&security=tls&type=$net&host=$host&${is_url_path}=$(sed 's#/#%2F#g' <<<$path)#233boy-$net-$host"
is_url="$is_protocol:https://$uuid@$host:$is_https_port?encryption=none&security=tls&type=$net&host=$host&${is_url_path}=$(sed 's#/#%2F#g' <<<$path)#233boy-$net-$host"
}
[[ $is_caddy ]] && is_can_change+=(13)
is_info_str=($is_protocol $is_addr $tlsport $uuid $net $host $path 'tls')
is_info_str=($is_protocol $is_addr $is_https_port $uuid $net $host $path 'tls')
;;
reality)
is_color=41
Expand Down Expand Up @@ -1550,6 +1563,9 @@ info() {
fi
msg "$a $tt= \e[${is_color}m${is_info_str[$i]}\e[0m"
done
if [[ $is_new_install ]]; then
warn "首次安装请查看脚本帮助文档: $(msg_ul https://233boy.com/$is_core/$is_core-script/)"
fi
if [[ $is_url ]]; then
msg "------------- ${info_list[12]} -------------"
msg "\e[4;${is_color}m${is_url}\e[0m"
Expand Down Expand Up @@ -1760,6 +1776,7 @@ main() {
change ${@:2}
;;
client | genc)
[[ $1 == 'client' ]] && is_full_client=1
create client $2
;;
d | del | rm)
Expand Down Expand Up @@ -1845,7 +1862,14 @@ main() {
is_update_name=sh
is_update_ver=
}
update $is_update_name $is_update_ver
if [[ $2 == 'dat' ]]; then
load download.sh
download dat
msg "$(_green 更新 geoip.dat geosite.dat 成功.)\n"
manage restart &
else
update $is_update_name $is_update_ver
fi
;;
ssss | ss2022)
get $@
Expand Down
10 changes: 4 additions & 6 deletions src/dns.sh
Original file line number Diff line number Diff line change
Expand Up @@ -41,18 +41,16 @@ dns_set() {
esac
else
is_tmp_list=(${is_dns_list[@]})
ask list dns_pick
is_dns_use=${is_dns_list[$REPLY - 1]}
ask list is_dns_use null "\n请选择 DNS:\n"
if [[ $is_dns_use == "set" ]]; then
ask string is_dns_use "请输入 DNS: "
fi
fi
is_new_dns=$(sed s/https/https+local/ <<<$is_dns_use)
if [[ $is_new_dns == "none" ]]; then
if [[ $is_dns_use == "none" ]]; then
cat <<<$(jq '.dns={}' $is_config_json) >$is_config_json
else
cat <<<$(jq '.dns.servers=["'$is_new_dns'"]' $is_config_json) >$is_config_json
cat <<<$(jq '.dns.servers=["'${is_dns_use/https/https+local}'"]' $is_config_json) >$is_config_json
fi
manage restart &
msg "\n已更新 DNS 为: $(_green $is_new_dns)\n"
msg "\n已更新 DNS 为: $(_green $is_dns_use)\n"
}
13 changes: 12 additions & 1 deletion src/download.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ get_latest_version() {
}
download() {
latest_ver=$2
[[ ! $latest_ver ]] && get_latest_version $1
[[ ! $latest_ver && $1 != 'dat' ]] && get_latest_version $1
# tmp dir
tmpdir=$(mktemp -u)
[[ ! $tmpdir ]] && {
Expand All @@ -45,6 +45,17 @@ download() {
unzip -qo $tmpfile -d $is_sh_dir
chmod +x $is_sh_bin
;;
dat)
name="geoip.dat"
tmpfile=$tmpdir/geoip.dat
link="https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat"
download_file
name="geosite.dat"
tmpfile=$tmpdir/geosite.dat
link="https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat"
download_file
cp -f $tmpdir/*.dat $is_core_dir/bin/
;;
caddy)
name="Caddy"
tmpfile=$tmpdir/caddy.tar.gz
Expand Down
5 changes: 3 additions & 2 deletions src/help.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,16 +48,17 @@ show_help() {
" fix-config.json 修复 config.json\n"
"管理:"
" un, uninstall 卸载"
" u, update [core | sh | caddy] [ver] 更新"
" u, update [core | sh | dat | caddy] [ver] 更新"
" U, update.sh 更新脚本"
" s, status 运行状态"
" start, stop, restart [caddy] 启动, 停止, 重启"
" t, test 测试运行"
" reinstall 重装脚本\n"
"测试:"
" client, genc [name] 显示用于客户端 JSON, 仅供参考"
" client [name] 显示用于客户端 JSON, 仅供参考"
" debug [name] 显示一些 debug 信息, 仅供参考"
" gen [...] 同等于 add, 但只显示 JSON 内容, 不创建文件, 测试使用"
" genc [name] 显示用于客户端部分 JSON, 仅供参考"
" no-auto-tls [...] 同等于 add, 但禁止自动配置 TLS, 可用于 *TLS 相关协议"
" xapi [...] 同等于 $is_core api, 但 API 后端使用当前运行的 $is_core_name 服务\n"
"其他:"
Expand Down
7 changes: 6 additions & 1 deletion src/init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,8 @@ is_caddy_repo=caddyserver/caddy
is_caddyfile=$is_caddy_dir/Caddyfile
is_caddy_conf=$is_caddy_dir/$author
is_caddy_service=$(systemctl list-units --full -all | grep caddy.service)
tlsport=443
is_http_port=80
is_https_port=443

# core ver
is_core_ver=$($is_core_bin version | head -n1 | cut -d " " -f1-2)
Expand Down Expand Up @@ -129,6 +130,10 @@ if [[ -f $is_caddy_bin && -d $is_caddy_dir && $is_caddy_service ]]; then
systemctl restart caddy &
}
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_https_port=$(egrep '^ {2,}https_port|^https_port' $is_caddyfile | egrep -o [0-9]+)
[[ $is_tmp_http_port ]] && is_http_port=$is_tmp_http_port
[[ $is_tmp_https_port ]] && is_https_port=$is_tmp_https_port
if [[ $(pgrep -f $is_caddy_bin) ]]; then
is_caddy_status=$(_green running)
else
Expand Down
2 changes: 1 addition & 1 deletion v2ray.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash

args=$@
is_sh_ver=v4.20
is_sh_ver=v4.21

. /etc/v2ray/sh/src/init.sh

0 comments on commit f75e3f1

Please sign in to comment.