This commit is contained in:
233boy
2019-01-05 16:04:16 +08:00
parent 3ecb6847e6
commit 620ec46f5a
100 changed files with 4910 additions and 261164 deletions

6
src/ban_ad.sh Normal file
View File

@@ -0,0 +1,6 @@
# ban ad
if [[ $ban_ad ]]; then
ban_ad_file="/etc/v2ray/233boy/v2ray/config/server/include/ad.json"
sed -i "/\/\/include_ban_ad/r $ban_ad_file" $v2ray_server_config
sed -i "s#//include_ban_ad#,#" $v2ray_server_config
fi

6
src/ban_bt.sh Normal file
View File

@@ -0,0 +1,6 @@
# ban bt
if [[ $ban_bt ]]; then
ban_bt_file="/etc/v2ray/233boy/v2ray/config/server/include/bt.json"
sed -i "/\/\/include_ban_bt/r $ban_bt_file" $v2ray_server_config
sed -i "s#//include_ban_bt#,#" $v2ray_server_config
fi

71
src/bt.sh Normal file
View File

@@ -0,0 +1,71 @@
_ban_bt_main() {
if [[ $ban_bt ]]; then
local _info="$green已开启$none"
else
local _info="$red已关闭$none"
fi
_opt=''
while :; do
echo
echo -e "$yellow 1. $none开启 BT 屏蔽"
echo
echo -e "$yellow 2. $none关闭 BT 屏蔽"
echo
echo -e "当前 BT 屏蔽状态: $_info"
echo
read -p "$(echo -e "请选择 [${magenta}1-2$none]:")" _opt
if [[ -z $_opt ]]; then
error
else
case $_opt in
1)
if [[ $ban_bt ]]; then
echo
echo -e " 大胸弟...难不成你没有看到 (当前 BT 屏蔽状态: $_info) 这个帅帅的提示么.....还开启个鸡鸡哦"
echo
else
echo
echo
echo -e "$yellow BT 屏蔽 = $cyan开启$none"
echo "----------------------------------------------------------------"
echo
pause
backup_config +bt
ban_bt=true
config
echo
echo
echo -e "$green BT 屏蔽已开启...如果出现异常..那就关闭它咯$none"
echo
fi
break
;;
2)
if [[ $ban_bt ]]; then
echo
echo
echo -e "$yellow BT 屏蔽 = $cyan关闭$none"
echo "----------------------------------------------------------------"
echo
pause
backup_config -bt
ban_bt=''
config
echo
echo
echo -e "$red BT 屏蔽已关闭...不过你也可以随时重新开启 ...只要你喜欢$none"
echo
else
echo
echo -e " 大胸弟...难不成你没有看到 (当前 BT 屏蔽状态: $_info) 这个帅帅的提示么.....还关闭个鸡鸡哦"
echo
fi
break
;;
*)
error
;;
esac
fi
done
}

67
src/caddy-config.sh Normal file
View File

@@ -0,0 +1,67 @@
local email=$(((RANDOM << 22)))
case $v2ray_transport in
4)
if [[ $is_path ]]; then
cat >/etc/caddy/Caddyfile <<-EOF
$domain {
tls ${email}@gmail.com
gzip
timeouts none
proxy / $proxy_site {
except /${path}
}
proxy /${path} 127.0.0.1:${v2ray_port} {
without /${path}
websocket
}
}
import sites/*
EOF
else
cat >/etc/caddy/Caddyfile <<-EOF
$domain {
tls ${email}@gmail.com
timeouts none
proxy / 127.0.0.1:${v2ray_port} {
websocket
}
}
import sites/*
EOF
fi
;;
5)
if [[ $is_path ]]; then
cat >/etc/caddy/Caddyfile <<-EOF
$domain {
tls ${email}@gmail.com
gzip
timeouts none
proxy / $proxy_site {
except /${path}
}
proxy /${path} https://127.0.0.1:${v2ray_port} {
header_upstream Host {host}
header_upstream X-Forwarded-Proto {scheme}
insecure_skip_verify
}
}
import sites/*
EOF
else
cat >/etc/caddy/Caddyfile <<-EOF
$domain {
tls ${email}@gmail.com
timeouts none
proxy / https://127.0.0.1:${v2ray_port} {
header_upstream Host {host}
header_upstream X-Forwarded-Proto {scheme}
insecure_skip_verify
}
}
import sites/*
EOF
fi
;;
esac

24
src/config.sh Normal file
View File

@@ -0,0 +1,24 @@
# vmess
_load vmess-config.sh
# ban bt
_load ban_bt.sh
# ban ad
_load ban_ad.sh
# custom rules
_load custom_rules.sh
# ss
_load ss-config.sh
# socks
_load socks-config.sh
# mtproto
_load mtproto-config.sh
# custom config
_load custom_config.sh

6
src/custom_config.sh Normal file
View File

@@ -0,0 +1,6 @@
# custom config
if [[ -f /etc/v2ray/custom/config.json ]]; then
custom_config_file="/etc/v2ray/custom/config.json"
sed -i "/\/\/include_config/r $custom_config_file" $v2ray_server_config
sed -i "s#//include_config#,#" $v2ray_server_config
fi

6
src/custom_rules.sh Normal file
View File

@@ -0,0 +1,6 @@
# custom rules
if [[ -f /etc/v2ray/custom/rules.json ]]; then
custom_rules_file="/etc/v2ray/custom/rules.json"
sed -i "/\/\/include_rules/r $custom_rules_file" $v2ray_server_config
sed -i "s#//include_rules#,#" $v2ray_server_config
fi

47
src/download-caddy.sh Normal file
View File

@@ -0,0 +1,47 @@
_download_caddy_file() {
caddy_tmp="/tmp/install_caddy/"
caddy_tmp_file="/tmp/install_caddy/caddy.tar.gz"
[[ -d $caddy_tmp ]] && rm -rf $caddy_tmp
if [[ $sys_bit == "i386" || $sys_bit == "i686" ]]; then
local caddy_download_link="https://caddyserver.com/download/linux/386?license=personal"
else
local caddy_download_link="https://caddyserver.com/download/linux/amd64?license=personal"
fi
mkdir -p $caddy_tmp
if ! wget --no-check-certificate -O "$caddy_tmp_file" $caddy_download_link; then
echo -e "$red 下载 Caddy 失败!$none" && exit 1
fi
tar zxf $caddy_tmp_file -C $caddy_tmp
cp -f ${caddy_tmp}caddy /usr/local/bin/
if [[ ! -f /usr/local/bin/caddy ]]; then
echo -e "$red 安装 Caddy 出错!" && exit 1
fi
}
_install_caddy_service() {
setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/caddy
if [[ $systemd ]]; then
cp -f ${caddy_tmp}init/linux-systemd/caddy.service /lib/systemd/system/
# sed -i "s/www-data/root/g" /lib/systemd/system/caddy.service
sed -i "s/on-abnormal/always/" /lib/systemd/system/caddy.service
systemctl enable caddy
else
cp -f ${caddy_tmp}init/linux-sysvinit/caddy /etc/init.d/caddy
# sed -i "s/www-data/root/g" /etc/init.d/caddy
chmod +x /etc/init.d/caddy
update-rc.d -f caddy defaults
fi
mkdir -p /etc/ssl/caddy
if [ -z "$(grep www-data /etc/passwd)" ]; then
useradd -M -s /usr/sbin/nologin www-data
fi
chown -R www-data.www-data /etc/ssl/caddy
mkdir -p /etc/caddy/
}

73
src/download-v2ray.sh Normal file
View File

@@ -0,0 +1,73 @@
_get_latest_version() {
v2ray_latest_ver="$(curl -H 'Cache-Control: no-cache' -s https://api.github.com/repos/v2ray/v2ray-core/releases/latest | grep 'tag_name' | cut -d\" -f4)"
if [[ ! $v2ray_latest_ver ]]; then
echo
echo -e " $red获取 V2Ray 最新版本失败!!!$none"
echo
echo -e " 请尝试执行如下命令: $green echo 'nameserver 8.8.8.8' >/etc/resolv.conf $none"
echo
echo " 然后再重新运行脚本...."
echo
exit 1
fi
}
_download_v2ray_file() {
_get_latest_version
[[ -d /tmp/v2ray ]] && rm -rf /tmp/v2ray
mkdir -p /tmp/v2ray
v2ray_tmp_file="/tmp/v2ray/v2ray.zip"
v2ray_download_link="https://github.com/v2ray/v2ray-core/releases/download/$v2ray_latest_ver/v2ray-linux-${v2ray_bit}.zip"
if ! wget --no-check-certificate -O "$v2ray_tmp_file" $v2ray_download_link; then
echo -e "
$red 下载 V2Ray 失败啦..可能是你的 VPS 网络太辣鸡了...请重试...$none
" && exit 1
fi
unzip $v2ray_tmp_file -d "/tmp/v2ray/"
mkdir -p /usr/bin/v2ray
cp -f "/tmp/v2ray/v2ray" "/usr/bin/v2ray/v2ray"
chmod +x "/usr/bin/v2ray/v2ray"
cp -f "/tmp/v2ray/v2ctl" "/usr/bin/v2ray/v2ctl"
chmod +x "/usr/bin/v2ray/v2ctl"
}
_install_v2ray_service() {
if [[ $systemd ]]; then
cp -f "/tmp/v2ray/systemd/v2ray.service" "/lib/systemd/system/"
sed -i "s/on-failure/always/" /lib/systemd/system/v2ray.service
systemctl enable v2ray
else
apt-get install -y daemon
cp "/tmp/v2ray/systemv/v2ray" "/etc/init.d/v2ray"
chmod +x "/etc/init.d/v2ray"
update-rc.d -f v2ray defaults
fi
}
_update_v2ray_version() {
_get_latest_version
if [[ $v2ray_ver != $v2ray_latest_ver ]]; then
echo
echo -e " $green 咦...发现新版本耶....正在拼命更新.......$none"
echo
_download_v2ray_file
do_service restart v2ray
echo
echo -e " $green 更新成功啦...当前 V2Ray 版本: ${cyan}$v2ray_latest_ver$none"
echo
echo -e " $yellow 温馨提示: 为了避免出现莫名其妙的问题...V2Ray 客户端的版本最好和服务器的版本保持一致$none"
echo
else
echo
echo -e " $green 木有发现新版本....$none"
echo
fi
}
_mkdir_dir() {
mkdir -p /var/log/v2ray
mkdir -p /etc/v2ray
}

17
src/init.sh Normal file
View File

@@ -0,0 +1,17 @@
_rm() {
rm -rf "$@"
}
_cp() {
cp -f "$@"
}
_sed() {
sed -i "$@"
}
_mkdir() {
mkdir -p "$@"
}
_load() {
local _dir="/etc/v2ray/233boy/v2ray/src/"
. "${_dir}$@"
}

10
src/mtproto-config.sh Normal file
View File

@@ -0,0 +1,10 @@
# shadowsocks config
if [[ $mtproto ]]; then
mtproto_file="/etc/v2ray/233boy/v2ray/config/server/include/mtproto.json"
mtproto_file_tmp="/tmp/ss.json.tmp"
cp -f $mtproto_file $mtproto_file_tmp
sed -i "s/6666/$mtproto_port/; s/bb8a7fbd7190e345024845f07373ec48/$mtproto_secret/" $mtproto_file_tmp
sed -i "/\/\/include_mtproto/r $mtproto_file_tmp" $v2ray_server_config
sed -i "s#//include_mtproto#,#" $v2ray_server_config
rm -rf $mtproto_file_tmp
fi

288
src/mtproto.sh Normal file
View File

@@ -0,0 +1,288 @@
_view_mtproto_info() {
if [[ $mtproto ]]; then
_mtproto_info
else
_mtproto_ask
fi
}
_mtproto_info() {
[[ -z $ip ]] && get_ip
echo
echo "---------- Telegram MTProto 配置信息 -------------"
echo
echo -e "$yellow 主机 (Hostname) = $cyan${ip}$none"
echo
echo -e "$yellow 端口 (Port) = $cyan$mtproto_port$none"
echo
echo -e "$yellow 密钥 (Secret) = $cyan$mtproto_secret$none"
echo
echo -e "$yellow Telegram 代理配置链接 = ${cyan}tg://proxy?server=${ip}&port=${mtproto_port}&secret=${mtproto_secret}$none"
echo
}
_mtproto_main() {
if [[ $mtproto ]]; then
while :; do
echo
echo -e "$yellow 1. $none查看 Telegram MTProto 配置信息"
echo
echo -e "$yellow 2. $none修改 Telegram MTProto 端口"
echo
echo -e "$yellow 3. $none修改 Telegram MTProto 密钥"
echo
echo -e "$yellow 4. $none关闭 Telegram MTProto"
echo
read -p "$(echo -e "请选择 [${magenta}1-4$none]:")" _opt
if [[ -z $_opt ]]; then
error
else
case $_opt in
1)
_mtproto_info
break
;;
2)
change_mtproto_port
break
;;
3)
change_mtproto_secret
break
;;
4)
disable_mtproto
break
;;
*)
error
;;
esac
fi
done
else
_mtproto_ask
fi
}
_mtproto_ask() {
echo
echo
echo -e " $red大佬...你没有配置 Telegram MTProto $none...不过现在想要配置的话也是可以的 ^_^"
echo
echo
new_mtproto_secret=$(date | md5sum | cut -c-32)
while :; do
echo -e "是否配置 ${yellow}Telegram MTProto${none} [${magenta}Y/N$none]"
read -p "$(echo -e "(默认 [${cyan}N$none]):") " new_mtproto
[[ -z "$new_mtproto" ]] && new_mtproto="n"
if [[ "$new_mtproto" == [Yy] ]]; then
echo
mtproto=true
mtproto_port_config
pause
open_port $new_mtproto_port
backup_config +mtproto
mtproto_port=$new_mtproto_port
mtproto_secret=$new_mtproto_secret
config
clear
_mtproto_info
break
elif [[ "$new_mtproto" == [Nn] ]]; then
echo
echo -e " $green已取消配置 Telegram MTProto ....$none"
echo
break
else
error
fi
done
}
disable_mtproto() {
echo
while :; do
echo -e "是否关闭 ${yellow}Telegram MTProto${none} [${magenta}Y/N$none]"
read -p "$(echo -e "(默认 [${cyan}N$none]):") " y_n
[[ -z "$y_n" ]] && y_n="n"
if [[ "$y_n" == [Yy] ]]; then
echo
echo
echo -e "$yellow 关闭 Telegram MTProto = $cyan是$none"
echo "----------------------------------------------------------------"
echo
pause
backup_config -mtproto
del_port $mtproto_port
mtproto=''
config
echo
echo
echo
echo -e "$green Telegram MTProto 已关闭...不过你也可以随时重新启用 Telegram MTProto ...只要你喜欢$none"
echo
break
elif [[ "$y_n" == [Nn] ]]; then
echo
echo -e " $green已取消关闭 Telegram MTProto ....$none"
echo
break
else
error
fi
done
}
mtproto_port_config() {
local random=$(shuf -i20001-65535 -n1)
echo
while :; do
echo -e "请输入 "$yellow"Telegram MTProto"$none" 端口 ["$magenta"1-65535"$none"],不能和 "$yellow"V2Ray"$none" 端口相同"
read -p "$(echo -e "(默认端口: ${cyan}${random}$none):") " new_mtproto_port
[ -z "$new_mtproto_port" ] && new_mtproto_port=$random
case $new_mtproto_port in
$v2ray_port)
echo
echo " 不能和 V2Ray 端口一毛一样...."
error
;;
[1-9] | [1-9][0-9] | [1-9][0-9][0-9] | [1-9][0-9][0-9][0-9] | [1-5][0-9][0-9][0-9][0-9] | 6[0-4][0-9][0-9][0-9] | 65[0-4][0-9][0-9] | 655[0-3][0-5])
if [[ $v2ray_transport == [45] ]]; then
local tls=ture
fi
if [[ $tls && $new_mtproto_port == "80" ]] || [[ $tls && $new_mtproto_port == "443" ]]; then
echo
echo -e "由于你已选择了 "$green"WebSocket + TLS $none或$green HTTP/2"$none" 传输协议."
echo
echo -e "所以不能选择 "$magenta"80"$none" 或 "$magenta"443"$none" 端口"
error
elif [[ $dynamicPort ]] && [[ $v2ray_dynamicPort_start == $new_mtproto_port || $v2ray_dynamicPort_end == $new_mtproto_port ]]; then
echo
echo -e " 抱歉,此端口和 V2Ray 动态端口 冲突,当前 V2Ray 动态端口范围为:${cyan}$port_range${none}"
error
elif [[ $dynamicPort ]] && [[ $v2ray_dynamicPort_start -lt $new_mtproto_port && $new_mtproto_port -le $v2ray_dynamicPort_end ]]; then
echo
echo -e " 抱歉,此端口和 V2Ray 动态端口 冲突,当前 V2Ray 动态端口范围为:${cyan}$port_range${none}"
error
elif [[ $shadowsocks && $new_mtproto_port == $ssport ]]; then
echo
echo -e "抱歉, 此端口跟 Shadowsocks 端口冲突...当前 Shadowsocks 端口: ${cyan}$ssport$none"
error
elif [[ $socks && $new_mtproto_port == $socks_port ]]; then
echo
echo -e "抱歉, 此端口跟 Socks 端口冲突...当前 Socks 端口: ${cyan}$socks_port$none"
error
else
echo
echo
echo -e "$yellow Telegram MTProto 端口 = $cyan$new_mtproto_port$none"
echo "----------------------------------------------------------------"
echo
break
fi
;;
*)
error
;;
esac
done
}
change_mtproto_secret() {
new_mtproto_secret=$(date | md5sum | cut -c-32)
echo
while :; do
read -p "$(echo -e "是否更改 ${yellow}Telegram MTProto 密钥${none} [${magenta}Y/N$none]"): " y_n
[ -z "$y_n" ] && error && continue
case $y_n in
n | N)
echo
echo -e " 已取消更改.... "
echo
break
;;
y | Y)
echo
echo
echo -e "$yellow 更改 Telegram MTProto 密钥 = $cyan是$none"
echo "----------------------------------------------------------------"
echo
pause
backup_config mtproto_secret
mtproto_secret=$new_mtproto_secret
config
clear
_mtproto_info
break
;;
esac
done
}
change_mtproto_port() {
echo
while :; do
echo -e "请输入新的 "$yellow"Telegram MTProto"$none" 端口 ["$magenta"1-65535"$none"]"
read -p "$(echo -e "(当前端口: ${cyan}${mtproto_port}$none):") " new_mtproto_port
[ -z "$new_mtproto_port" ] && error && continue
case $new_mtproto_port in
$mtproto_port)
echo
echo " 不能跟当前端口一毛一样...."
error
;;
$v2ray_port)
echo
echo " 不能和 V2Ray 端口一毛一样...."
error
;;
[1-9] | [1-9][0-9] | [1-9][0-9][0-9] | [1-9][0-9][0-9][0-9] | [1-5][0-9][0-9][0-9][0-9] | 6[0-4][0-9][0-9][0-9] | 65[0-4][0-9][0-9] | 655[0-3][0-5])
if [[ $v2ray_transport == [45] ]]; then
local tls=ture
fi
if [[ $tls && $new_mtproto_port == "80" ]] || [[ $tls && $new_mtproto_port == "443" ]]; then
echo
echo -e "由于你已选择了 "$green"WebSocket + TLS $none或$green HTTP/2"$none" 传输协议."
echo
echo -e "所以不能选择 "$magenta"80"$none" 或 "$magenta"443"$none" 端口"
error
elif [[ $dynamicPort ]] && [[ $v2ray_dynamicPort_start == $new_mtproto_port || $v2ray_dynamicPort_end == $new_mtproto_port ]]; then
echo
echo -e " 抱歉,此端口和 V2Ray 动态端口 冲突,当前 V2Ray 动态端口范围为:${cyan}$port_range${none}"
error
elif [[ $dynamicPort ]] && [[ $v2ray_dynamicPort_start -lt $new_mtproto_port && $new_mtproto_port -le $v2ray_dynamicPort_end ]]; then
echo
echo -e " 抱歉,此端口和 V2Ray 动态端口 冲突,当前 V2Ray 动态端口范围为:${cyan}$port_range${none}"
error
elif [[ $shadowsocks && $new_mtproto_port == $ssport ]]; then
echo
echo -e "抱歉, 此端口跟 Shadowsocks 端口冲突...当前 Shadowsocks 端口: ${cyan}$ssport$none"
error
elif [[ $socks && $new_mtproto_port == $socks_port ]]; then
echo
echo -e "抱歉, 此端口跟 Socks 端口冲突...当前 Socks 端口: ${cyan}$socks_port$none"
error
else
echo
echo
echo -e "$yellow socks 端口 = $cyan$new_mtproto_port$none"
echo "----------------------------------------------------------------"
echo
pause
backup_config mtproto_port
mtproto_port=$new_mtproto_port
config
clear
_mtproto_info
break
fi
;;
*)
error
;;
esac
done
}

10
src/socks-config.sh Normal file
View File

@@ -0,0 +1,10 @@
# Socks config
if [[ $socks ]]; then
socks_file="/etc/v2ray/233boy/v2ray/config/server/include/socks.json"
socks_file_tmp="/tmp/socks.json.tmp"
cp -f $socks_file $socks_file_tmp
sed -i "s/6666/$socks_port/; s/v2ray66.com/$socks_username/; s/233blog.com/$socks_userpass/" $socks_file_tmp
sed -i "/\/\/include_socks/r $socks_file_tmp" $v2ray_server_config
sed -i "s#//include_socks#,#" $v2ray_server_config
rm -rf $socks_file_tmp
fi

386
src/socks.sh Normal file
View File

@@ -0,0 +1,386 @@
_view_socks_info() {
if [[ $socks ]]; then
_socks_info
else
_socks_ask
fi
}
_socks_info() {
[[ -z $ip ]] && get_ip
echo
echo "---------- Socks 配置信息 -------------"
echo
echo -e "$yellow 主机 (Hostname) = $cyan${ip}$none"
echo
echo -e "$yellow 端口 (Port) = $cyan$socks_port$none"
echo
echo -e "$yellow 用户名 (Username) = $cyan$socks_username$none"
echo
echo -e "$yellow 密码 (Password) = $cyan$socks_userpass$none"
echo
echo -e "$yellow Telegram 代理配置链接 = ${cyan}tg://socks?server=${ip}&port=${socks_port}&user=${socks_username}&pass=${socks_userpass}$none"
echo
}
_socks_main() {
if [[ $socks ]]; then
while :; do
echo
echo -e "$yellow 1. $none查看 Socks 配置信息"
echo
echo -e "$yellow 2. $none修改 Socks 端口"
echo
echo -e "$yellow 3. $none修改 Socks 用户名"
echo
echo -e "$yellow 4. $none修改 Socks 密码"
echo
echo -e "$yellow 5. $none关闭 Socks"
echo
read -p "$(echo -e "请选择 [${magenta}1-4$none]:")" _opt
if [[ -z $_opt ]]; then
error
else
case $_opt in
1)
_socks_info
break
;;
2)
change_socks_port_config
break
;;
3)
change_socks_user_config
break
;;
4)
change_socks_pass_config
break
;;
5)
disable_socks
break
;;
*)
error
;;
esac
fi
done
else
_socks_ask
fi
}
_socks_ask() {
echo
echo
echo -e " $red大佬...你没有配置 Socks $none...不过现在想要配置的话也是可以的 ^_^"
echo
echo
while :; do
echo -e "是否配置 ${yellow}Socks${none} [${magenta}Y/N$none]"
read -p "$(echo -e "(默认 [${cyan}N$none]):") " new_socks
[[ -z "$new_socks" ]] && new_socks="n"
if [[ "$new_socks" == [Yy] ]]; then
echo
socks=true
socks_port_config
socks_user_config
socks_pass_config
pause
open_port $new_socks_port
backup_config +socks
socks_port=$new_socks_port
socks_username=$new_socks_username
socks_userpass=$new_socks_userpass
config
clear
_socks_info
break
elif [[ "$new_socks" == [Nn] ]]; then
echo
echo -e " $green已取消配置 Socks ....$none"
echo
break
else
error
fi
done
}
disable_socks() {
echo
while :; do
echo -e "是否关闭 ${yellow}Socks${none} [${magenta}Y/N$none]"
read -p "$(echo -e "(默认 [${cyan}N$none]):") " y_n
[[ -z "$y_n" ]] && y_n="n"
if [[ "$y_n" == [Yy] ]]; then
echo
echo
echo -e "$yellow 关闭 Socks = $cyan是$none"
echo "----------------------------------------------------------------"
echo
pause
backup_config -socks
del_port $socks_port
socks=''
config
echo
echo
echo
echo -e "$green Socks 已关闭...不过你也可以随时重新启用 Socks ...只要你喜欢$none"
echo
break
elif [[ "$y_n" == [Nn] ]]; then
echo
echo -e " $green已取消关闭 Socks ....$none"
echo
break
else
error
fi
done
}
socks_port_config() {
local random=$(shuf -i20001-65535 -n1)
echo
while :; do
echo -e "请输入 "$yellow"Socks"$none" 端口 ["$magenta"1-65535"$none"],不能和 "$yellow"V2Ray"$none" 端口相同"
read -p "$(echo -e "(默认端口: ${cyan}${random}$none):") " new_socks_port
[ -z "$new_socks_port" ] && new_socks_port=$random
case $new_socks_port in
$v2ray_port)
echo
echo " 不能和 V2Ray 端口一毛一样...."
error
;;
[1-9] | [1-9][0-9] | [1-9][0-9][0-9] | [1-9][0-9][0-9][0-9] | [1-5][0-9][0-9][0-9][0-9] | 6[0-4][0-9][0-9][0-9] | 65[0-4][0-9][0-9] | 655[0-3][0-5])
if [[ $v2ray_transport == [45] ]]; then
local tls=ture
fi
if [[ $tls && $new_socks_port == "80" ]] || [[ $tls && $new_socks_port == "443" ]]; then
echo
echo -e "由于你已选择了 "$green"WebSocket + TLS $none或$green HTTP/2"$none" 传输协议."
echo
echo -e "所以不能选择 "$magenta"80"$none" 或 "$magenta"443"$none" 端口"
error
elif [[ $dynamicPort ]] && [[ $v2ray_dynamicPort_start == $new_socks_port || $v2ray_dynamicPort_end == $new_socks_port ]]; then
echo
echo -e " 抱歉,此端口和 V2Ray 动态端口 冲突,当前 V2Ray 动态端口范围为:${cyan}$port_range${none}"
error
elif [[ $dynamicPort ]] && [[ $v2ray_dynamicPort_start -lt $new_socks_port && $new_socks_port -le $v2ray_dynamicPort_end ]]; then
echo
echo -e " 抱歉,此端口和 V2Ray 动态端口 冲突,当前 V2Ray 动态端口范围为:${cyan}$port_range${none}"
error
elif [[ $shadowsocks && $new_socks_port == $ssport ]]; then
echo
echo -e "抱歉, 此端口跟 Shadowsocks 端口冲突...当前 Shadowsocks 端口: ${cyan}$ssport$none"
error
elif [[ $mtproto && $new_socks_port == $mtproto_port ]]; then
echo
echo -e "抱歉, 此端口跟 MTProto 端口冲突...当前 MTProto 端口: ${cyan}$mtproto_port$none"
error
else
echo
echo
echo -e "$yellow Socks 端口 = $cyan$new_socks_port$none"
echo "----------------------------------------------------------------"
echo
break
fi
;;
*)
error
;;
esac
done
}
socks_user_config() {
echo
while :; do
read -p "$(echo -e "请输入$yellow用户名$none...(默认用户名: ${cyan}233blog$none)"): " new_socks_username
[ -z "$new_socks_username" ] && new_socks_username="233blog"
case $new_socks_username in
*[/$]* | *\&*)
echo
echo -e " 由于这个脚本太辣鸡了..所以用户名不能包含$red / $none或$red $ $none或$red & $none这三个符号.... "
echo
error
;;
*)
echo
echo
echo -e "$yellow 用户名 = $cyan$new_socks_username$none"
echo "----------------------------------------------------------------"
echo
break
;;
esac
done
}
socks_pass_config() {
echo
while :; do
read -p "$(echo -e "请输入$yellow密码$none...(默认密码: ${cyan}233blog.com$none)"): " new_socks_userpass
[ -z "$new_socks_userpass" ] && new_socks_userpass="233blog.com"
case $new_socks_userpass in
*[/$]* | *\&*)
echo
echo -e " 由于这个脚本太辣鸡了..所以密码不能包含$red / $none或$red $ $none或$red & $none这三个符号.... "
echo
error
;;
*)
echo
echo
echo -e "$yellow 密码 = $cyan$new_socks_userpass$none"
echo "----------------------------------------------------------------"
echo
break
;;
esac
done
}
change_socks_user_config() {
echo
while :; do
read -p "$(echo -e "请输入$yellow用户名$none...(当前用户名: ${cyan}$socks_username$none)"): " new_socks_username
[ -z "$new_socks_username" ] && error && continue
case $new_socks_username in
$socks_username)
echo
echo -e " 大佬...跟 当前用户名 一毛一样啊...修改个鸡鸡哦 "
echo
error
;;
*[/$]* | *\&*)
echo
echo -e " 由于这个脚本太辣鸡了..所以用户名不能包含$red / $none或$red $ $none或$red & $none这三个符号.... "
echo
error
;;
*)
echo
echo
echo -e "$yellow 用户名 = $cyan$new_socks_username$none"
echo "----------------------------------------------------------------"
echo
pause
backup_config socks_username
socks_username=$new_socks_username
config
clear
_socks_info
break
;;
esac
done
}
change_socks_pass_config() {
echo
while :; do
read -p "$(echo -e "请输入$yellow密码$none...(当前密码: ${cyan}$socks_userpass$none)"): " new_socks_userpass
[ -z "$new_socks_userpass" ] && error && continue
case $new_socks_userpass in
$socks_userpass)
echo
echo -e " 大佬...跟 当前密码 一毛一样啊...修改个鸡鸡哦 "
echo
error
;;
*[/$]* | *\&*)
echo
echo -e " 由于这个脚本太辣鸡了..所以密码不能包含$red / $none或$red $ $none或$red & $none这三个符号.... "
echo
error
;;
*)
echo
echo
echo -e "$yellow 密码 = $cyan$new_socks_userpass$none"
echo "----------------------------------------------------------------"
echo
pause
backup_config socks_userpass
socks_userpass=$new_socks_userpass
config
clear
_socks_info
break
;;
esac
done
}
change_socks_port_config() {
echo
while :; do
echo -e "请输入新的 "$yellow"Socks"$none" 端口 ["$magenta"1-65535"$none"]"
read -p "$(echo -e "(当前端口: ${cyan}${socks_port}$none):") " new_socks_port
[ -z "$new_socks_port" ] && error && continue
case $new_socks_port in
$socks_port)
echo
echo " 不能和当前端口一毛一样...."
error
;;
$v2ray_port)
echo
echo " 不能和 V2Ray 端口一毛一样...."
error
;;
[1-9] | [1-9][0-9] | [1-9][0-9][0-9] | [1-9][0-9][0-9][0-9] | [1-5][0-9][0-9][0-9][0-9] | 6[0-4][0-9][0-9][0-9] | 65[0-4][0-9][0-9] | 655[0-3][0-5])
if [[ $v2ray_transport == [45] ]]; then
local tls=ture
fi
if [[ $tls && $new_socks_port == "80" ]] || [[ $tls && $new_socks_port == "443" ]]; then
echo
echo -e "由于你已选择了 "$green"WebSocket + TLS $none或$green HTTP/2"$none" 传输协议."
echo
echo -e "所以不能选择 "$magenta"80"$none" 或 "$magenta"443"$none" 端口"
error
elif [[ $dynamicPort ]] && [[ $v2ray_dynamicPort_start == $new_socks_port || $v2ray_dynamicPort_end == $new_socks_port ]]; then
echo
echo -e " 抱歉,此端口和 V2Ray 动态端口 冲突,当前 V2Ray 动态端口范围为:${cyan}$port_range${none}"
error
elif [[ $dynamicPort ]] && [[ $v2ray_dynamicPort_start -lt $new_socks_port && $new_socks_port -le $v2ray_dynamicPort_end ]]; then
echo
echo -e " 抱歉,此端口和 V2Ray 动态端口 冲突,当前 V2Ray 动态端口范围为:${cyan}$port_range${none}"
error
elif [[ $shadowsocks && $new_socks_port == $ssport ]]; then
echo
echo -e "抱歉, 此端口跟 Shadowsocks 端口冲突...当前 Shadowsocks 端口: ${cyan}$ssport$none"
error
elif [[ $mtproto && $new_socks_port == $mtproto_port ]]; then
echo
echo -e "抱歉, 此端口跟 MTProto 端口冲突...当前 MTProto 端口: ${cyan}$mtproto_port$none"
error
else
echo
echo
echo -e "$yellow socks 端口 = $cyan$new_socks_port$none"
echo "----------------------------------------------------------------"
echo
pause
backup_config socks_port
socks_port=$new_socks_port
config
clear
_socks_info
break
fi
;;
*)
error
;;
esac
done
}

10
src/ss-config.sh Normal file
View File

@@ -0,0 +1,10 @@
# shadowsocks config
if [[ $shadowsocks ]]; then
ss_file="/etc/v2ray/233boy/v2ray/config/server/include/ss.json"
ss_file_tmp="/tmp/ss.json.tmp"
cp -f $ss_file $ss_file_tmp
sed -i "s/6666/$ssport/; s/chacha20-ietf/$ssciphers/; s/233blog.com/$sspass/" $ss_file_tmp
sed -i "/\/\/include_ss/r $ss_file_tmp" $v2ray_server_config
sed -i "s#//include_ss#,#" $v2ray_server_config
rm -rf $ss_file_tmp
fi

21
src/ss-info.sh Normal file
View File

@@ -0,0 +1,21 @@
[[ -z $ip ]] && get_ip
if [[ $shadowsocks ]]; then
local ss="ss://$(echo -n "${ssciphers}:${sspass}@${ip}:${ssport}" | base64 -w 0)#233yes.com_ss_${ip}"
echo
echo "---------- Shadowsocks 配置信息 -------------"
echo
echo -e "$yellow 服务器地址 = $cyan${ip}$none"
echo
echo -e "$yellow 服务器端口 = $cyan$ssport$none"
echo
echo -e "$yellow 密码 = $cyan$sspass$none"
echo
echo -e "$yellow 加密协议 = $cyan${ssciphers}$none"
echo
echo -e "$yellow SS 链接 = ${cyan}$ss$none"
echo
echo -e " 备注:$red Shadowsocks Win 4.0.6 $none客户端可能无法识别该 SS 链接"
echo
echo -e "提示: 输入$cyan v2ray ssqr $none可生成 Shadowsocks 二维码链接"
echo
fi

34
src/transport.sh Normal file
View File

@@ -0,0 +1,34 @@
transport=(
TCP
TCP_HTTP
WebSocket
"WebSocket + TLS"
HTTP/2
mKCP
mKCP_utp
mKCP_srtp
mKCP_wechat-video
mKCP_dtls
mKCP_wireguard
QUIC
QUIC_utp
QUIC_srtp
QUIC_wechat-video
QUIC_dtls
QUIC_wireguard
TCP_dynamicPort
TCP_HTTP_dynamicPort
WebSocket_dynamicPort
mKCP_dynamicPort
mKCP_utp_dynamicPort
mKCP_srtp_dynamicPort
mKCP_wechat-video_dynamicPort
mKCP_dtls_dynamicPort
mKCP_wireguard_dynamicPort
QUIC_dynamicPort
QUIC_utp_dynamicPort
QUIC_srtp_dynamicPort
QUIC_wechat-video_dynamicPort
QUIC_dtls_dynamicPort
QUIC_wireguard_dynamicPort
)

168
src/uninstall.sh Normal file
View File

@@ -0,0 +1,168 @@
while :; do
echo
read -p "$(echo -e "是否卸载 ${yellow}V2Ray$none [${magenta}Y/N$none]:")" uninstall_v2ray_ask
if [[ -z $uninstall_v2ray_ask ]]; then
error
else
case $uninstall_v2ray_ask in
Y | y)
is_uninstall_v2ray=true
echo
echo -e "$yellow 卸载 V2Ray = ${cyan}${none}"
echo
break
;;
N | n)
echo
echo -e "$red 卸载已取消...$none"
echo
break
;;
*)
error
;;
esac
fi
done
if [[ $caddy && $is_uninstall_v2ray ]] && [[ -f /usr/local/bin/caddy && -f /etc/caddy/Caddyfile ]]; then
while :; do
echo
read -p "$(echo -e "是否卸载 ${yellow}Caddy$none [${magenta}Y/N$none]:")" uninstall_caddy_ask
if [[ -z $uninstall_caddy_ask ]]; then
error
else
case $uninstall_caddy_ask in
Y | y)
is_uninstall_caddy=true
echo
echo -e "$yellow 卸载 Caddy = ${cyan}${none}"
echo
break
;;
N | n)
echo
echo -e "$yellow 卸载 Caddy = ${cyan}${none}"
echo
break
;;
*)
error
;;
esac
fi
done
fi
if [[ $is_uninstall_v2ray && $is_uninstall_caddy ]]; then
pause
echo
if [[ $shadowsocks ]]; then
del_port $ssport
fi
if [[ $socks ]]; then
del_port $socks_port
fi
if [[ $mtproto ]]; then
del_port $mtproto_port
fi
if [[ $v2ray_transport == [45] ]]; then
del_port "80"
del_port "443"
del_port $v2ray_port
elif [[ $v2ray_transport -ge 18 ]]; then
del_port $v2ray_port
del_port "multiport"
else
del_port $v2ray_port
fi
[ $cmd == "apt-get" ] && rm -rf /etc/network/if-pre-up.d/iptables
# [ $v2ray_pid ] && systemctl stop v2ray
[ $v2ray_pid ] && do_service stop v2ray
rm -rf /usr/bin/v2ray
rm -rf $_v2ray_sh
rm -rf /etc/v2ray
rm -rf /var/log/v2ray
# [ $caddy_pid ] && systemctl stop caddy
[ $caddy_pid ] && do_service stop caddy
rm -rf /usr/local/bin/caddy
rm -rf /etc/caddy
rm -rf /etc/ssl/caddy
if [[ $systemd ]]; then
systemctl disable v2ray >/dev/null 2>&1
rm -rf /lib/systemd/system/v2ray.service
systemctl disable caddy >/dev/null 2>&1
rm -rf /lib/systemd/system/caddy.service
else
update-rc.d -f caddy remove >/dev/null 2>&1
update-rc.d -f v2ray remove >/dev/null 2>&1
rm -rf /etc/init.d/caddy
rm -rf /etc/init.d/v2ray
fi
# clear
echo
echo -e "$green V2Ray 卸载完成啦 ....$none"
echo
echo "如果你觉得这个脚本有哪些地方不够好的话...请告诉我"
echo
echo "反馈问题: https://github.com/233boy/v2ray/issues"
echo
elif [[ $is_uninstall_v2ray ]]; then
pause
echo
if [[ $shadowsocks ]]; then
del_port $ssport
fi
if [[ $socks ]]; then
del_port $socks_port
fi
if [[ $mtproto ]]; then
del_port $mtproto_port
fi
if [[ $v2ray_transport == [45] ]]; then
del_port "80"
del_port "443"
del_port $v2ray_port
elif [[ $v2ray_transport -ge 18 ]]; then
del_port $v2ray_port
del_port "multiport"
else
del_port $v2ray_port
fi
[ $cmd == "apt-get" ] && rm -rf /etc/network/if-pre-up.d/iptables
# [ $v2ray_pid ] && systemctl stop v2ray
[ $v2ray_pid ] && do_service stop v2ray
rm -rf /usr/bin/v2ray
rm -rf $_v2ray_sh
rm -rf /etc/v2ray
rm -rf /var/log/v2ray
if [[ $systemd ]]; then
systemctl disable v2ray >/dev/null 2>&1
rm -rf /lib/systemd/system/v2ray.service
else
update-rc.d -f v2ray remove >/dev/null 2>&1
rm -rf /etc/init.d/v2ray
fi
# clear
echo
echo -e "$green V2Ray 卸载完成啦 ....$none"
echo
echo "如果你觉得这个脚本有哪些地方不够好的话...请告诉我"
echo
echo "反馈问题: https://github.com/233boy/v2ray/issues"
echo
fi

136
src/v2ray-info.sh Normal file
View File

@@ -0,0 +1,136 @@
[[ -z $ip ]] && get_ip
_v2_args() {
header="none"
if [[ $is_path ]]; then
_path="/$path"
else
_path="/"
fi
case $v2ray_transport in
1 | 18)
net="tcp"
;;
2 | 19)
net="tcp"
header="http"
host="www.baidu.com"
;;
3 | 4 | 20)
net="ws"
;;
5)
net="h2"
;;
6 | 21)
net="kcp"
;;
7 | 22)
net="kcp"
header="utp"
;;
8 | 23)
net="kcp"
header="srtp"
;;
9 | 24)
net="kcp"
header="wechat-video"
;;
10 | 25)
net="kcp"
header="dtls"
;;
11 | 26)
net="kcp"
header="wireguard"
;;
12 | 27)
net="quic"
;;
13 | 28)
net="quic"
header="utp"
;;
14 | 29)
net="quic"
header="srtp"
;;
15 | 30)
net="quic"
header="wechat-video"
;;
16 | 31)
net="quic"
header="dtls"
;;
17 | 32)
net="quic"
header="wireguard"
;;
esac
}
_v2_info() {
echo
echo
echo "---------- V2Ray 配置信息 -------------"
if [[ $v2ray_transport == [45] ]]; then
if [[ ! $caddy ]]; then
echo
echo -e " $red警告$none$yellow请自行配置 TLS...教程: https://233yes.com/post/3/$none"
fi
echo
echo -e "$yellow 地址 (Address) = $cyan${domain}$none"
echo
echo -e "$yellow 端口 (Port) = ${cyan}443${none}"
echo
echo -e "$yellow 用户ID (User ID / UUID) = $cyan${v2ray_id}$none"
echo
echo -e "$yellow 额外ID (Alter Id) = ${cyan}${alterId}${none}"
echo
echo -e "$yellow 传输协议 (Network) = ${cyan}${net}$none"
echo
echo -e "$yellow 伪装类型 (header type) = ${cyan}${header}$none"
echo
echo -e "$yellow 伪装域名 (host) = ${cyan}${domain}$none"
echo
echo -e "$yellow 路径 (path) = ${cyan}${_path}$none"
echo
echo -e "$yellow TLS (Enable TLS) = ${cyan}打开$none"
echo
if [[ $ban_ad ]]; then
echo " 备注: 广告拦截已开启.."
echo
fi
else
echo
echo -e "$yellow 地址 (Address) = $cyan${ip}$none"
echo
echo -e "$yellow 端口 (Port) = $cyan$v2ray_port$none"
echo
echo -e "$yellow 用户ID (User ID / UUID) = $cyan${v2ray_id}$none"
echo
echo -e "$yellow 额外ID (Alter Id) = ${cyan}${alterId}${none}"
echo
echo -e "$yellow 传输协议 (Network) = ${cyan}${net}$none"
echo
echo -e "$yellow 伪装类型 (header type) = ${cyan}${header}$none"
echo
fi
if [[ $v2ray_transport -ge 18 ]] && [[ $ban_ad ]]; then
echo " 备注: 动态端口已启用...广告拦截已开启..."
echo
elif [[ $v2ray_transport -ge 18 ]]; then
echo " 备注: 动态端口已启用..."
echo
elif [[ $ban_ad ]]; then
echo " 备注: 广告拦截已开启.."
echo
fi
echo "---------- END -------------"
echo
echo "V2Ray 客户端使用教程: https://233yes.com/post/4/"
echo
echo -e "提示: 输入$cyan v2ray url $none可生成 vmess URL 链接 / 输入$cyan v2ray qr $none可生成二维码链接"
echo
}

111
src/vmess-config.sh Normal file
View File

@@ -0,0 +1,111 @@
# config file
case $v2ray_transport in
1)
v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/tcp.json"
v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/tcp.json"
;;
2)
v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/http.json"
v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/http.json"
;;
3)
v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/ws.json"
v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws.json"
;;
4)
v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/ws.json"
v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws_tls.json"
;;
5)
v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/h2.json"
v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/h2.json"
;;
[6-9] | 10 | 11)
v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/kcp.json"
v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/kcp.json"
;;
1[2-7])
v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/quic.json"
v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/quic.json"
;;
18)
v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/dynamic/tcp.json"
v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/tcp.json"
;;
19)
v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/dynamic/http.json"
v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/http.json"
;;
20)
v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/dynamic/ws.json"
v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws.json"
;;
2[1-6])
v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/dynamic/kcp.json"
v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/kcp.json"
;;
*)
v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/dynamic/quic.json"
v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/quic.json"
;;
esac
# copy config file
cp -f $v2ray_server_config_file $v2ray_server_config
cp -f $v2ray_client_config_file $v2ray_client_config
# change port, uuid, alterId
sed -i "9s/2333/$v2ray_port/; 14s/$old_id/$v2ray_id/; 16s/233/$alterId/" $v2ray_server_config
# change dynamic port
if [[ $v2ray_transport -ge 18 ]]; then
local multi_port="${v2ray_dynamicPort_start}-${v2ray_dynamicPort_end}"
sed -i "s/10000-20000/$multi_port/" $v2ray_server_config
fi
# change domain and path, or header type
case $v2ray_transport in
5)
sed -i "24s/233blog.com/$domain/" $v2ray_server_config
if [[ $is_path ]]; then
sed -i "26s/233blog/$path/" $v2ray_server_config
else
sed -i "26s/233blog//" $v2ray_server_config
fi
;;
7 | 13 | 22 | 28)
sed -i "s/none/utp/" $v2ray_server_config
sed -i "s/none/utp/" $v2ray_client_config
;;
8 | 14 | 23 | 29)
sed -i "s/none/srtp/" $v2ray_server_config
sed -i "s/none/srtp/" $v2ray_client_config
;;
9 | 15 | 24 | 30)
sed -i "s/none/wechat-video/" $v2ray_server_config
sed -i "s/none/wechat-video/" $v2ray_client_config
;;
10 | 16 | 25 | 31)
sed -i "s/none/dtls/" $v2ray_server_config
sed -i "s/none/dtls/" $v2ray_client_config
;;
11 | 17 | 26 | 32)
sed -i "s/none/wireguard/" $v2ray_server_config
sed -i "s/none/wireguard/" $v2ray_client_config
;;
esac
## change client config file
[[ -z $ip ]] && get_ip
if [[ $v2ray_transport == [45] ]]; then
sed -i "s/233blog.com/$domain/; 13s/2333/443/; 16s/$old_id/$v2ray_id/; 17s/233/$alterId/" $v2ray_client_config
if [[ $is_path ]]; then
sed -i "31s/233blog/$path/" $v2ray_client_config
else
sed -i "31s/233blog//" $v2ray_client_config
fi
else
sed -i "s/233blog.com/$ip/; 13s/2333/$v2ray_port/; 16s/$old_id/$v2ray_id/; 17s/233/$alterId/" $v2ray_client_config
fi
# zip -q -r -j --password "233blog.com" /etc/v2ray/233blog_v2ray.zip $v2ray_client_config