diff --git a/install.sh b/install.sh deleted file mode 100644 index 850ca08..0000000 --- a/install.sh +++ /dev/null @@ -1,1122 +0,0 @@ -#!/bin/bash - -red='\e[91m' -green='\e[92m' -yellow='\e[93m' -magenta='\e[95m' -cyan='\e[96m' -none='\e[0m' -_red() { echo -e ${red}$*${none}; } -_green() { echo -e ${green}$*${none}; } -_yellow() { echo -e ${yellow}$*${none}; } -_magenta() { echo -e ${magenta}$*${none}; } -_cyan() { echo -e ${cyan}$*${none}; } - -# Root -[[ $(id -u) != 0 ]] && echo -e "\n 哎呀……请使用 ${red}root ${none}用户运行 ${yellow}~(^_^) ${none}\n" && exit 1 - -cmd="apt-get" - -sys_bit=$(uname -m) - -case $sys_bit in -i[36]86) - v2ray_bit="32" - caddy_arch="386" - ;; -x86_64) - v2ray_bit="64" - caddy_arch="amd64" - ;; -*armv6*) - v2ray_bit="arm" - caddy_arch="arm6" - ;; -*armv7*) - v2ray_bit="arm" - caddy_arch="arm7" - ;; -*aarch64* | *armv8*) - v2ray_bit="arm64" - caddy_arch="arm64" - ;; -*) - echo -e " - 哈哈……这个 ${red}辣鸡脚本${none} 不支持你的系统。 ${yellow}(-_-) ${none} - - 备注: 仅支持 Ubuntu 16+ / Debian 8+ / CentOS 7+ 系统 - " && exit 1 - ;; -esac - -# 笨笨的检测方法 -if [[ $(command -v apt-get) || $(command -v yum) ]] && [[ $(command -v systemctl) ]]; then - - if [[ $(command -v yum) ]]; then - - cmd="yum" - - fi - -else - - echo -e " - 哈哈……这个 ${red}辣鸡脚本${none} 不支持你的系统。 ${yellow}(-_-) ${none} - - 备注: 仅支持 Ubuntu 16+ / Debian 8+ / CentOS 7+ 系统 - " && exit 1 - -fi - -uuid=$(cat /proc/sys/kernel/random/uuid) -old_id="e55c8d17-2cf3-b21a-bcf1-eeacb011ed79" -v2ray_server_config="/etc/v2ray/config.json" -v2ray_client_config="/etc/v2ray/233blog_v2ray_config.json" -backup="/etc/v2ray/233blog_v2ray_backup.conf" -_v2ray_sh="/usr/local/sbin/v2ray" -systemd=true -# _test=true - -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 -) - -ciphers=( - aes-128-cfb - aes-256-cfb - chacha20 - chacha20-ietf - aes-128-gcm - aes-256-gcm - chacha20-ietf-poly1305 -) - -_load() { - local _dir="/etc/v2ray/233boy/v2ray/src/" - . "${_dir}$@" -} -_sys_timezone() { - IS_OPENVZ= - if hostnamectl status | grep -q openvz; then - IS_OPENVZ=1 - fi - - echo - timedatectl set-timezone Asia/Shanghai - timedatectl set-ntp true - echo "已将你的主机设置为Asia/Shanghai时区并通过systemd-timesyncd自动同步时间。" - echo - - if [[ $IS_OPENVZ ]]; then - echo - echo -e "你的主机环境为 ${yellow}Openvz${none} ,建议使用${yellow}v2ray mkcp${none}系列协议。" - echo -e "注意:${yellow}Openvz${none} 系统时间无法由虚拟机内程序控制同步。" - echo -e "如果主机时间跟实际相差${yellow}超过90秒${none},v2ray将无法正常通信,请发ticket联系vps主机商调整。" - fi -} - -_sys_time() { - echo -e "\n主机时间:${yellow}" - timedatectl status | sed -n '1p;4p' - echo -e "${none}" - [[ $IS_OPENV ]] && pause -} -v2ray_config() { - # clear - echo - while :; do - echo -e "请选择 "$yellow"V2Ray"$none" 传输协议 [${magenta}1-${#transport[*]}$none]" - echo - for ((i = 1; i <= ${#transport[*]}; i++)); do - Stream="${transport[$i - 1]}" - if [[ "$i" -le 9 ]]; then - # echo - echo -e "$yellow $i. $none${Stream}" - else - # echo - echo -e "$yellow $i. $none${Stream}" - fi - done - echo - echo "备注1: 含有 [dynamicPort] 的即启用动态端口.." - echo "备注2: [utp | srtp | wechat-video | dtls | wireguard] 分别伪装成 [BT下载 | 视频通话 | 微信视频通话 | DTLS 1.2 数据包 | WireGuard 数据包]" - echo - read -p "$(echo -e "(默认协议: ${cyan}TCP$none)"):" v2ray_transport - [ -z "$v2ray_transport" ] && v2ray_transport=1 - case $v2ray_transport in - [1-9] | [1-2][0-9] | 3[0-2]) - echo - echo - echo -e "$yellow V2Ray 传输协议 = $cyan${transport[$v2ray_transport - 1]}$none" - echo "----------------------------------------------------------------" - echo - break - ;; - *) - error - ;; - esac - done - v2ray_port_config -} -v2ray_port_config() { - case $v2ray_transport in - 4 | 5) - tls_config - ;; - *) - local random=$(shuf -i20001-65535 -n1) - while :; do - echo -e "请输入 "$yellow"V2Ray"$none" 端口 ["$magenta"1-65535"$none"]" - read -p "$(echo -e "(默认端口: ${cyan}${random}$none):")" v2ray_port - [ -z "$v2ray_port" ] && v2ray_port=$random - case $v2ray_port in - [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]) - echo - echo - echo -e "$yellow V2Ray 端口 = $cyan$v2ray_port$none" - echo "----------------------------------------------------------------" - echo - break - ;; - *) - error - ;; - esac - done - if [[ $v2ray_transport -ge 18 ]]; then - v2ray_dynamic_port_start - fi - ;; - esac -} - -v2ray_dynamic_port_start() { - - while :; do - echo -e "请输入 "$yellow"V2Ray 动态端口开始 "$none"范围 ["$magenta"1-65535"$none"]" - read -p "$(echo -e "(默认开始端口: ${cyan}10000$none):")" v2ray_dynamic_port_start_input - [ -z $v2ray_dynamic_port_start_input ] && v2ray_dynamic_port_start_input=10000 - case $v2ray_dynamic_port_start_input in - $v2ray_port) - echo - echo " 不能和 V2Ray 端口一毛一样...." - echo - echo -e " 当前 V2Ray 端口:${cyan}$v2ray_port${none}" - 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]) - echo - echo - echo -e "$yellow V2Ray 动态端口开始 = $cyan$v2ray_dynamic_port_start_input$none" - echo "----------------------------------------------------------------" - echo - break - ;; - *) - error - ;; - esac - - done - - if [[ $v2ray_dynamic_port_start_input -lt $v2ray_port ]]; then - lt_v2ray_port=true - fi - - v2ray_dynamic_port_end -} -v2ray_dynamic_port_end() { - - while :; do - echo -e "请输入 "$yellow"V2Ray 动态端口结束 "$none"范围 ["$magenta"1-65535"$none"]" - read -p "$(echo -e "(默认结束端口: ${cyan}20000$none):")" v2ray_dynamic_port_end_input - [ -z $v2ray_dynamic_port_end_input ] && v2ray_dynamic_port_end_input=20000 - case $v2ray_dynamic_port_end_input in - [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_dynamic_port_end_input -le $v2ray_dynamic_port_start_input ]]; then - echo - echo " 不能小于或等于 V2Ray 动态端口开始范围" - echo - echo -e " 当前 V2Ray 动态端口开始:${cyan}$v2ray_dynamic_port_start_input${none}" - error - elif [ $lt_v2ray_port ] && [[ ${v2ray_dynamic_port_end_input} -ge $v2ray_port ]]; then - echo - echo " V2Ray 动态端口结束范围 不能包括 V2Ray 端口..." - echo - echo -e " 当前 V2Ray 端口:${cyan}$v2ray_port${none}" - error - else - echo - echo - echo -e "$yellow V2Ray 动态端口结束 = $cyan$v2ray_dynamic_port_end_input$none" - echo "----------------------------------------------------------------" - echo - break - fi - ;; - *) - error - ;; - esac - - done - -} - -tls_config() { - - echo - local random=$(shuf -i20001-65535 -n1) - while :; do - echo -e "请输入 "$yellow"V2Ray"$none" 端口 ["$magenta"1-65535"$none"],不能选择 "$magenta"80"$none" 或 "$magenta"443"$none" 端口" - read -p "$(echo -e "(默认端口: ${cyan}${random}$none):")" v2ray_port - [ -z "$v2ray_port" ] && v2ray_port=$random - case $v2ray_port in - 80) - echo - echo " ...都说了不能选择 80 端口了咯....." - error - ;; - 443) - echo - echo " ..都说了不能选择 443 端口了咯....." - 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]) - echo - echo - echo -e "$yellow V2Ray 端口 = $cyan$v2ray_port$none" - echo "----------------------------------------------------------------" - echo - break - ;; - *) - error - ;; - esac - done - - while :; do - echo - echo -e "请输入一个 $magenta正确的域名$none,一定一定一定要正确,不!能!出!错!" - read -p "(例如:233blog.com): " domain - [ -z "$domain" ] && error && continue - echo - echo - echo -e "$yellow 你的域名 = $cyan$domain$none" - echo "----------------------------------------------------------------" - break - done - get_ip - echo - echo - echo -e "$yellow 请将 $magenta$domain$none $yellow解析到: $cyan$ip$none" - echo - echo -e "$yellow 请将 $magenta$domain$none $yellow解析到: $cyan$ip$none" - echo - echo -e "$yellow 请将 $magenta$domain$none $yellow解析到: $cyan$ip$none" - echo "----------------------------------------------------------------" - echo - - while :; do - - read -p "$(echo -e "(是否已经正确解析: [${magenta}Y$none]):") " record - if [[ -z "$record" ]]; then - error - else - if [[ "$record" == [Yy] ]]; then - domain_check - echo - echo - echo -e "$yellow 域名解析 = ${cyan}我确定已经有解析了$none" - echo "----------------------------------------------------------------" - echo - break - else - error - fi - fi - - done - - if [[ $v2ray_transport -ne 5 ]]; then - auto_tls_config - else - caddy=true - install_caddy_info="打开" - fi - - if [[ $caddy ]]; then - path_config_ask - fi -} -auto_tls_config() { - echo -e " - - 安装 Caddy 来实现 自动配置 TLS - - 如果你已经安装 Nginx 或 Caddy - - $yellow并且..自己能搞定配置 TLS$none - - 那么就不需要 打开自动配置 TLS - " - echo "----------------------------------------------------------------" - echo - - while :; do - - read -p "$(echo -e "(是否自动配置 TLS: [${magenta}Y/N$none]):") " auto_install_caddy - if [[ -z "$auto_install_caddy" ]]; then - error - else - if [[ "$auto_install_caddy" == [Yy] ]]; then - caddy=true - install_caddy_info="打开" - echo - echo - echo -e "$yellow 自动配置 TLS = $cyan$install_caddy_info$none" - echo "----------------------------------------------------------------" - echo - break - elif [[ "$auto_install_caddy" == [Nn] ]]; then - install_caddy_info="关闭" - echo - echo - echo -e "$yellow 自动配置 TLS = $cyan$install_caddy_info$none" - echo "----------------------------------------------------------------" - echo - break - else - error - fi - fi - - done -} -path_config_ask() { - echo - while :; do - echo -e "是否开启 网站伪装 和 路径分流 [${magenta}Y/N$none]" - read -p "$(echo -e "(默认: [${cyan}N$none]):")" path_ask - [[ -z $path_ask ]] && path_ask="n" - - case $path_ask in - Y | y) - path_config - break - ;; - N | n) - echo - echo - echo -e "$yellow 网站伪装 和 路径分流 = $cyan不想配置$none" - echo "----------------------------------------------------------------" - echo - break - ;; - *) - error - ;; - esac - done -} -path_config() { - echo - while :; do - echo -e "请输入想要 ${magenta}用来分流的路径$none , 例如 /233blog , 那么只需要输入 233blog 即可" - read -p "$(echo -e "(默认: [${cyan}233blog$none]):")" path - [[ -z $path ]] && path="233blog" - - case $path in - *[/$]*) - echo - echo -e " 由于这个脚本太辣鸡了..所以分流的路径不能包含$red / $none或$red $ $none这两个符号.... " - echo - error - ;; - *) - echo - echo - echo -e "$yellow 分流的路径 = ${cyan}/${path}$none" - echo "----------------------------------------------------------------" - echo - break - ;; - esac - done - is_path=true - proxy_site_config -} -proxy_site_config() { - echo - while :; do - echo -e "请输入 ${magenta}一个正确的$none ${cyan}网址$none 用来作为 ${cyan}网站的伪装$none , 例如 https://liyafly.com" - echo -e "举例...你当前的域名是 $green$domain$none , 伪装的网址的是 https://liyafly.com" - echo -e "然后打开你的域名时候...显示出来的内容就是来自 https://liyafly.com 的内容" - echo -e "其实就是一个反代...明白就好..." - echo -e "如果不能伪装成功...可以使用 v2ray config 修改伪装的网址" - read -p "$(echo -e "(默认: [${cyan}https://liyafly.com$none]):")" proxy_site - [[ -z $proxy_site ]] && proxy_site="https://liyafly.com" - - case $proxy_site in - *[#$]*) - echo - echo -e " 由于这个脚本太辣鸡了..所以伪装的网址不能包含$red # $none或$red $ $none这两个符号.... " - echo - error - ;; - *) - echo - echo - echo -e "$yellow 伪装的网址 = ${cyan}${proxy_site}$none" - echo "----------------------------------------------------------------" - echo - break - ;; - esac - done -} - -blocked_hosts() { - echo - while :; do - echo -e "是否开启广告拦截(会影响性能) [${magenta}Y/N$none]" - read -p "$(echo -e "(默认 [${cyan}N$none]):")" blocked_ad - [[ -z $blocked_ad ]] && blocked_ad="n" - - case $blocked_ad in - Y | y) - blocked_ad_info="开启" - ban_ad=true - echo - echo - echo -e "$yellow 广告拦截 = $cyan开启$none" - echo "----------------------------------------------------------------" - echo - break - ;; - N | n) - blocked_ad_info="关闭" - echo - echo - echo -e "$yellow 广告拦截 = $cyan关闭$none" - echo "----------------------------------------------------------------" - echo - break - ;; - *) - error - ;; - esac - done -} -shadowsocks_config() { - - echo - - while :; do - echo -e "是否配置 ${yellow}Shadowsocks${none} [${magenta}Y/N$none]" - read -p "$(echo -e "(默认 [${cyan}N$none]):") " install_shadowsocks - [[ -z "$install_shadowsocks" ]] && install_shadowsocks="n" - if [[ "$install_shadowsocks" == [Yy] ]]; then - echo - shadowsocks=true - shadowsocks_port_config - break - elif [[ "$install_shadowsocks" == [Nn] ]]; then - break - else - error - fi - - done - -} - -shadowsocks_port_config() { - local random=$(shuf -i20001-65535 -n1) - while :; do - echo -e "请输入 "$yellow"Shadowsocks"$none" 端口 ["$magenta"1-65535"$none"],不能和 "$yellow"V2Ray"$none" 端口相同" - read -p "$(echo -e "(默认端口: ${cyan}${random}$none):") " ssport - [ -z "$ssport" ] && ssport=$random - case $ssport 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 && $ssport == "80" ]] || [[ $tls && $ssport == "443" ]]; then - echo - echo -e "由于你已选择了 "$green"WebSocket + TLS $none或$green HTTP/2"$none" 传输协议." - echo - echo -e "所以不能选择 "$magenta"80"$none" 或 "$magenta"443"$none" 端口" - error - elif [[ $v2ray_dynamic_port_start_input == $ssport || $v2ray_dynamic_port_end_input == $ssport ]]; then - local multi_port="${v2ray_dynamic_port_start_input} - ${v2ray_dynamic_port_end_input}" - echo - echo " 抱歉,此端口和 V2Ray 动态端口 冲突,当前 V2Ray 动态端口范围为:$multi_port" - error - elif [[ $v2ray_dynamic_port_start_input -lt $ssport && $ssport -le $v2ray_dynamic_port_end_input ]]; then - local multi_port="${v2ray_dynamic_port_start_input} - ${v2ray_dynamic_port_end_input}" - echo - echo " 抱歉,此端口和 V2Ray 动态端口 冲突,当前 V2Ray 动态端口范围为:$multi_port" - error - else - echo - echo - echo -e "$yellow Shadowsocks 端口 = $cyan$ssport$none" - echo "----------------------------------------------------------------" - echo - break - fi - ;; - *) - error - ;; - esac - - done - - shadowsocks_password_config -} -shadowsocks_password_config() { - - while :; do - echo -e "请输入 "$yellow"Shadowsocks"$none" 密码" - read -p "$(echo -e "(默认密码: ${cyan}233blog.com$none)"): " sspass - [ -z "$sspass" ] && sspass="233blog.com" - case $sspass in - *[/$]*) - echo - echo -e " 由于这个脚本太辣鸡了..所以密码不能包含$red / $none或$red $ $none这两个符号.... " - echo - error - ;; - *) - echo - echo - echo -e "$yellow Shadowsocks 密码 = $cyan$sspass$none" - echo "----------------------------------------------------------------" - echo - break - ;; - esac - - done - - shadowsocks_ciphers_config -} -shadowsocks_ciphers_config() { - - while :; do - echo -e "请选择 "$yellow"Shadowsocks"$none" 加密协议 [${magenta}1-${#ciphers[*]}$none]" - for ((i = 1; i <= ${#ciphers[*]}; i++)); do - ciphers_show="${ciphers[$i - 1]}" - echo - echo -e "$yellow $i. $none${ciphers_show}" - done - echo - read -p "$(echo -e "(默认加密协议: ${cyan}${ciphers[6]}$none)"):" ssciphers_opt - [ -z "$ssciphers_opt" ] && ssciphers_opt=7 - case $ssciphers_opt in - [1-7]) - ssciphers=${ciphers[$ssciphers_opt - 1]} - echo - echo - echo -e "$yellow Shadowsocks 加密协议 = $cyan${ssciphers}$none" - echo "----------------------------------------------------------------" - echo - break - ;; - *) - error - ;; - esac - - done - pause -} - -install_info() { - clear - echo - echo " ....准备安装了咯..看看有毛有配置正确了..." - echo - echo "---------- 安装信息 -------------" - echo - echo -e "$yellow V2Ray 传输协议 = $cyan${transport[$v2ray_transport - 1]}$none" - - if [[ $v2ray_transport == [45] ]]; then - echo - echo -e "$yellow V2Ray 端口 = $cyan$v2ray_port$none" - echo - echo -e "$yellow 你的域名 = $cyan$domain$none" - echo - echo -e "$yellow 域名解析 = ${cyan}我确定已经有解析了$none" - echo - echo -e "$yellow 自动配置 TLS = $cyan$install_caddy_info$none" - - if [[ $ban_ad ]]; then - echo - echo -e "$yellow 广告拦截 = $cyan$blocked_ad_info$none" - fi - if [[ $is_path ]]; then - echo - echo -e "$yellow 路径分流 = ${cyan}/${path}$none" - fi - elif [[ $v2ray_transport -ge 18 ]]; then - echo - echo -e "$yellow V2Ray 端口 = $cyan$v2ray_port$none" - echo - echo -e "$yellow V2Ray 动态端口范围 = $cyan${v2ray_dynamic_port_start_input} - ${v2ray_dynamic_port_end_input}$none" - - if [[ $ban_ad ]]; then - echo - echo -e "$yellow 广告拦截 = $cyan$blocked_ad_info$none" - fi - else - echo - echo -e "$yellow V2Ray 端口 = $cyan$v2ray_port$none" - - if [[ $ban_ad ]]; then - echo - echo -e "$yellow 广告拦截 = $cyan$blocked_ad_info$none" - fi - fi - if [ $shadowsocks ]; then - echo - echo -e "$yellow Shadowsocks 端口 = $cyan$ssport$none" - echo - echo -e "$yellow Shadowsocks 密码 = $cyan$sspass$none" - echo - echo -e "$yellow Shadowsocks 加密协议 = $cyan${ssciphers}$none" - else - echo - echo -e "$yellow 是否配置 Shadowsocks = ${cyan}未配置${none}" - fi - echo - echo "---------- END -------------" - echo - pause - echo -} - -domain_check() { - # if [[ $cmd == "yum" ]]; then - # yum install bind-utils -y - # else - # $cmd install dnsutils -y - # fi - # test_domain=$(dig $domain +short) - test_domain=$(ping $domain -c 1 | grep -oE -m1 "([0-9]{1,3}\.){3}[0-9]{1,3}") - if [[ $test_domain != $ip ]]; then - echo - echo -e "$red 检测域名解析错误....$none" - echo - echo -e " 你的域名: $yellow$domain$none 未解析到: $cyan$ip$none" - echo - echo -e " 你的域名当前解析到: $cyan$test_domain$none" - echo - echo "备注...如果你的域名是使用 Cloudflare 解析的话..在 Status 那里点一下那图标..让它变灰" - echo - exit 1 - fi -} - -install_caddy() { - # download caddy file then install - _load download-caddy.sh - _download_caddy_file - _install_caddy_service - caddy_config - -} -caddy_config() { - # local email=$(shuf -i1-10000000000 -n1) - _load caddy-config.sh - - # systemctl restart caddy - do_service restart caddy -} - -install_v2ray() { - $cmd update -y - if [[ $cmd == "apt-get" ]]; then - $cmd install -y lrzsz git zip unzip curl wget qrencode libcap2-bin dbus - else - # $cmd install -y lrzsz git zip unzip curl wget qrencode libcap iptables-services - $cmd install -y lrzsz git zip unzip curl wget qrencode libcap - fi - ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime - [ -d /etc/v2ray ] && rm -rf /etc/v2ray - # date -s "$(curl -sI g.cn | grep Date | cut -d' ' -f3-6)Z" - _sys_timezone - _sys_time - - if [[ $local_install ]]; then - if [[ ! -d $(pwd)/config ]]; then - echo - echo -e "$red 哎呀呀...安装失败了咯...$none" - echo - echo -e " 请确保你有完整的上传 233v2.com 的 V2Ray 一键安装脚本 & 管理脚本到当前 ${green}$(pwd) $none目录下" - echo - exit 1 - fi - mkdir -p /etc/v2ray/233boy/v2ray - cp -rf $(pwd)/* /etc/v2ray/233boy/v2ray - else - pushd /tmp - git clone https://github.com/fangfang852004/v2ray.git -b "$_gitbranch" /etc/v2ray/233boy/v2ray --depth=1 - popd - - fi - - if [[ ! -d /etc/v2ray/233boy/v2ray ]]; then - echo - echo -e "$red 哎呀呀...克隆脚本仓库出错了...$none" - echo - echo -e " 温馨提示..... 请尝试自行安装 Git: ${green}$cmd install -y git $none 之后再安装此脚本" - echo - exit 1 - fi - - # download v2ray file then install - _load download-v2ray.sh - _download_v2ray_file - _install_v2ray_service - _mkdir_dir -} - -open_port() { - if [[ $cmd == "apt-get" ]]; then - if [[ $1 != "multiport" ]]; then - - iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport $1 -j ACCEPT - iptables -I INPUT -m state --state NEW -m udp -p udp --dport $1 -j ACCEPT - ip6tables -I INPUT -m state --state NEW -m tcp -p tcp --dport $1 -j ACCEPT - ip6tables -I INPUT -m state --state NEW -m udp -p udp --dport $1 -j ACCEPT - - # firewall-cmd --permanent --zone=public --add-port=$1/tcp - # firewall-cmd --permanent --zone=public --add-port=$1/udp - # firewall-cmd --reload - - else - - local multiport="${v2ray_dynamic_port_start_input}:${v2ray_dynamic_port_end_input}" - iptables -I INPUT -p tcp --match multiport --dports $multiport -j ACCEPT - iptables -I INPUT -p udp --match multiport --dports $multiport -j ACCEPT - ip6tables -I INPUT -p tcp --match multiport --dports $multiport -j ACCEPT - ip6tables -I INPUT -p udp --match multiport --dports $multiport -j ACCEPT - - # local multi_port="${v2ray_dynamic_port_start_input}-${v2ray_dynamic_port_end_input}" - # firewall-cmd --permanent --zone=public --add-port=$multi_port/tcp - # firewall-cmd --permanent --zone=public --add-port=$multi_port/udp - # firewall-cmd --reload - - fi - iptables-save >/etc/iptables.rules.v4 - ip6tables-save >/etc/iptables.rules.v6 - # else - # service iptables save >/dev/null 2>&1 - # service ip6tables save >/dev/null 2>&1 - fi -} -del_port() { - if [[ $cmd == "apt-get" ]]; then - if [[ $1 != "multiport" ]]; then - # if [[ $cmd == "apt-get" ]]; then - iptables -D INPUT -m state --state NEW -m tcp -p tcp --dport $1 -j ACCEPT - iptables -D INPUT -m state --state NEW -m udp -p udp --dport $1 -j ACCEPT - ip6tables -D INPUT -m state --state NEW -m tcp -p tcp --dport $1 -j ACCEPT - ip6tables -D INPUT -m state --state NEW -m udp -p udp --dport $1 -j ACCEPT - # else - # firewall-cmd --permanent --zone=public --remove-port=$1/tcp - # firewall-cmd --permanent --zone=public --remove-port=$1/udp - # fi - else - # if [[ $cmd == "apt-get" ]]; then - local ports="${v2ray_dynamicPort_start}:${v2ray_dynamicPort_end}" - iptables -D INPUT -p tcp --match multiport --dports $ports -j ACCEPT - iptables -D INPUT -p udp --match multiport --dports $ports -j ACCEPT - ip6tables -D INPUT -p tcp --match multiport --dports $ports -j ACCEPT - ip6tables -D INPUT -p udp --match multiport --dports $ports -j ACCEPT - # else - # local ports="${v2ray_dynamicPort_start}-${v2ray_dynamicPort_end}" - # firewall-cmd --permanent --zone=public --remove-port=$ports/tcp - # firewall-cmd --permanent --zone=public --remove-port=$ports/udp - # fi - fi - iptables-save >/etc/iptables.rules.v4 - ip6tables-save >/etc/iptables.rules.v6 - # else - # service iptables save >/dev/null 2>&1 - # service ip6tables save >/dev/null 2>&1 - fi - -} - -config() { - cp -f /etc/v2ray/233boy/v2ray/config/backup.conf $backup - cp -f /etc/v2ray/233boy/v2ray/v2ray.sh $_v2ray_sh - chmod +x $_v2ray_sh - - v2ray_id=$uuid - alterId=233 - ban_bt=true - if [[ $v2ray_transport -ge 18 ]]; then - v2ray_dynamicPort_start=${v2ray_dynamic_port_start_input} - v2ray_dynamicPort_end=${v2ray_dynamic_port_end_input} - fi - _load config.sh - - if [[ $cmd == "apt-get" ]]; then - cat >/etc/network/if-pre-up.d/iptables <<-EOF - #!/bin/sh - /sbin/iptables-restore < /etc/iptables.rules.v4 - /sbin/ip6tables-restore < /etc/iptables.rules.v6 - EOF - chmod +x /etc/network/if-pre-up.d/iptables - # else - # [ $(pgrep "firewall") ] && systemctl stop firewalld - # systemctl mask firewalld - # systemctl disable firewalld - # systemctl enable iptables - # systemctl enable ip6tables - # systemctl start iptables - # systemctl start ip6tables - fi - - [[ $shadowsocks ]] && open_port $ssport - if [[ $v2ray_transport == [45] ]]; then - open_port "80" - open_port "443" - open_port $v2ray_port - elif [[ $v2ray_transport -ge 18 ]]; then - open_port $v2ray_port - open_port "multiport" - else - open_port $v2ray_port - fi - # systemctl restart v2ray - do_service restart v2ray - backup_config - -} - -backup_config() { - sed -i "18s/=1/=$v2ray_transport/; 21s/=2333/=$v2ray_port/; 24s/=$old_id/=$uuid/" $backup - if [[ $v2ray_transport -ge 18 ]]; then - sed -i "30s/=10000/=$v2ray_dynamic_port_start_input/; 33s/=20000/=$v2ray_dynamic_port_end_input/" $backup - fi - if [[ $shadowsocks ]]; then - sed -i "42s/=/=true/; 45s/=6666/=$ssport/; 48s/=233blog.com/=$sspass/; 51s/=chacha20-ietf/=$ssciphers/" $backup - fi - [[ $v2ray_transport == [45] ]] && sed -i "36s/=233blog.com/=$domain/" $backup - [[ $caddy ]] && sed -i "39s/=/=true/" $backup - [[ $ban_ad ]] && sed -i "54s/=/=true/" $backup - if [[ $is_path ]]; then - sed -i "57s/=/=true/; 60s/=233blog/=$path/" $backup - sed -i "63s#=https://liyafly.com#=$proxy_site#" $backup - fi -} - -get_ip() { - ip=$(curl -s https://ipinfo.io/ip) - [[ -z $ip ]] && ip=$(curl -s https://api.ip.sb/ip) - [[ -z $ip ]] && ip=$(curl -s https://api.ipify.org) - [[ -z $ip ]] && ip=$(curl -s https://ip.seeip.org) - [[ -z $ip ]] && ip=$(curl -s https://ifconfig.co/ip) - [[ -z $ip ]] && ip=$(curl -s https://api.myip.com | grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}") - [[ -z $ip ]] && ip=$(curl -s icanhazip.com) - [[ -z $ip ]] && ip=$(curl -s myip.ipip.net | grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}") - [[ -z $ip ]] && echo -e "\n$red 这垃圾小鸡扔了吧!$none\n" && exit -} - -error() { - - echo -e "\n$red 输入错误!$none\n" - -} - -pause() { - - read -rsp "$(echo -e "按$green Enter 回车键 $none继续....或按$red Ctrl + C $none取消.")" -d $'\n' - echo -} -do_service() { - if [[ $systemd ]]; then - systemctl $1 $2 - else - service $2 $1 - fi -} -show_config_info() { - clear - _load v2ray-info.sh - _v2_args - _v2_info - _load ss-info.sh - -} - -install() { - if [[ -f /usr/bin/v2ray/v2ray && -f /etc/v2ray/config.json ]] && [[ -f $backup && -d /etc/v2ray/233boy/v2ray ]]; then - echo - echo " 大佬...你已经安装 V2Ray 啦...无需重新安装" - echo - echo -e " $yellow输入 ${cyan}v2ray${none} $yellow即可管理 V2Ray${none}" - echo - exit 1 - elif [[ -f /usr/bin/v2ray/v2ray && -f /etc/v2ray/config.json ]] && [[ -f /etc/v2ray/233blog_v2ray_backup.txt && -d /etc/v2ray/233boy/v2ray ]]; then - echo - echo " 如果你需要继续安装.. 请先卸载旧版本" - echo - echo -e " $yellow输入 ${cyan}v2ray uninstall${none} $yellow即可卸载${none}" - echo - exit 1 - fi - v2ray_config - blocked_hosts - shadowsocks_config - install_info - # [[ $caddy ]] && domain_check - install_v2ray - if [[ $caddy || $v2ray_port == "80" ]]; then - if [[ $cmd == "yum" ]]; then - [[ $(pgrep "httpd") ]] && systemctl stop httpd - [[ $(command -v httpd) ]] && yum remove httpd -y - else - [[ $(pgrep "apache2") ]] && service apache2 stop - [[ $(command -v apache2) ]] && apt-get remove apache2* -y - fi - fi - [[ $caddy ]] && install_caddy - - ## bbr - _load bbr.sh - _try_enable_bbr - - get_ip - config - show_config_info -} -uninstall() { - - if [[ -f /usr/bin/v2ray/v2ray && -f /etc/v2ray/config.json ]] && [[ -f $backup && -d /etc/v2ray/233boy/v2ray ]]; then - . $backup - if [[ $mark ]]; then - _load uninstall.sh - else - echo - echo -e " $yellow输入 ${cyan}v2ray uninstall${none} $yellow即可卸载${none}" - echo - fi - - elif [[ -f /usr/bin/v2ray/v2ray && -f /etc/v2ray/config.json ]] && [[ -f /etc/v2ray/233blog_v2ray_backup.txt && -d /etc/v2ray/233boy/v2ray ]]; then - echo - echo -e " $yellow输入 ${cyan}v2ray uninstall${none} $yellow即可卸载${none}" - echo - else - echo -e " - $red 大胸弟...你貌似毛有安装 V2Ray ....卸载个鸡鸡哦...$none - - 备注...仅支持卸载使用我 (233v2.com) 提供的 V2Ray 一键安装脚本 - " && exit 1 - fi - -} - -args=$1 -_gitbranch=$2 -[ -z $1 ] && args="online" -case $args in -online) - #hello world - [[ -z $_gitbranch ]] && _gitbranch="master" - ;; -local) - local_install=true - ;; -*) - echo - echo -e " 你输入的这个参数 <$red $args $none> ...这个是什么鬼啊...脚本不认识它哇" - echo - echo -e " 这个辣鸡脚本仅支持输入$green local / online $none参数" - echo - echo -e " 输入$yellow local $none即是使用本地安装" - echo - echo -e " 输入$yellow online $none即是使用在线安装 (默认)" - echo - exit 1 - ;; -esac - -clear -while :; do - echo - echo "........... V2Ray 一键安装脚本 & 管理脚本 by 233v2.com .........." - echo - echo "帮助说明: https://233v2.com/post/1/" - echo - echo "搭建教程: https://233v2.com/post/2/" - echo - echo " 1. 安装" - echo - echo " 2. 卸载" - echo - if [[ $local_install ]]; then - echo -e "$yellow 温馨提示.. 本地安装已启用 ..$none" - echo - fi - read -p "$(echo -e "请选择 [${magenta}1-2$none]:")" choose - case $choose in - 1) - install - break - ;; - 2) - uninstall - break - ;; - *) - error - ;; - esac -done