Guest User

v2ray one-key install

a guest
Jul 10th, 2018
421
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 58.33 KB | None | 0 0
  1. v2ray的一键安装脚本
  2.  
  3. #!/bin/bash
  4.  
  5. red='\e[91m'
  6. green='\e[92m'
  7. yellow='\e[93m'
  8. magenta='\e[95m'
  9. cyan='\e[96m'
  10. none='\e[0m'
  11.  
  12. # Root
  13. [[ $(id -u) != 0 ]] && echo -e " 哎呀……请使用 ${red}root ${none}用户运行 ${yellow}~(^_^) ${none}" && exit 1
  14.  
  15. cmd="apt-get"
  16.  
  17. sys_bit=$(uname -m)
  18.  
  19. if [[ $sys_bit == "i386" || $sys_bit == "i686" ]]; then
  20. v2ray_bit="32"
  21. elif [[ $sys_bit == "x86_64" ]]; then
  22. v2ray_bit="64"
  23. else
  24. echo -e " 哈哈……这个 ${red}辣鸡脚本${none} 不支持你的系统。 ${yellow}(-_-) ${none}" && exit 1
  25. fi
  26.  
  27. # 笨笨的检测方法
  28. if [[ -f /usr/bin/apt-get ]] || [[ -f /usr/bin/yum && -f /bin/systemctl ]]; then
  29.  
  30. if [[ -f /usr/bin/yum ]]; then
  31.  
  32. cmd="yum"
  33.  
  34. fi
  35. if [[ -f /bin/systemctl ]]; then
  36. systemd=true
  37. fi
  38.  
  39. else
  40.  
  41. echo -e " 哈哈……这个 ${red}辣鸡脚本${none} 不支持你的系统。 ${yellow}(-_-) ${none}" && exit 1
  42.  
  43. fi
  44.  
  45. uuid=$(cat /proc/sys/kernel/random/uuid)
  46. old_id="23332333-2333-2333-2333-233boy233boy"
  47. v2ray_server_config="/etc/v2ray/config.json"
  48. v2ray_client_config="/etc/v2ray/233blog_v2ray_config.json"
  49. backup="/etc/v2ray/233blog_v2ray_backup.conf"
  50.  
  51. transport=(
  52. TCP
  53. TCP_HTTP
  54. WebSocket
  55. "WebSocket + TLS"
  56. mKCP
  57. mKCP_utp
  58. mKCP_srtp
  59. mKCP_wechat-video
  60. TCP_dynamicPort
  61. TCP_HTTP_dynamicPort
  62. WebSocket_dynamicPort
  63. mKCP_dynamicPort
  64. mKCP_utp_dynamicPort
  65. mKCP_srtp_dynamicPort
  66. mKCP_wechat-video_dynamicPort
  67. HTTP/2
  68. Socks5
  69. )
  70.  
  71. ciphers=(
  72. aes-128-cfb
  73. aes-256-cfb
  74. chacha20
  75. chacha20-ietf
  76. aes-128-gcm
  77. aes-256-gcm
  78. chacha20-ietf-poly1305
  79. )
  80.  
  81. v2ray_config() {
  82. # clear
  83. echo
  84. while :; do
  85. echo -e "请选择 "$yellow"V2Ray"$none" 传输协议 [${magenta}1-${#transport[*]}$none]"
  86. echo
  87. for ((i = 1; i <= ${#transport[*]}; i++)); do
  88. Stream="${transport[$i - 1]}"
  89. if [[ "$i" -le 9 ]]; then
  90. # echo
  91. echo -e "$yellow $i. $none${Stream}"
  92. else
  93. # echo
  94. echo -e "$yellow $i. $none${Stream}"
  95. fi
  96. done
  97. echo
  98. echo "备注1: 含有 [dynamicPort] 的即启用动态端口.."
  99. echo "备注2: [utp | srtp | wechat-video] 分别为 伪装成 [BT下载 | 视频通话 | 微信视频通话]"
  100. echo
  101. read -p "$(echo -e "(默认协议: ${cyan}TCP$none)"):" v2ray_transport_opt
  102. [ -z "$v2ray_transport_opt" ] && v2ray_transport_opt=1
  103. case $v2ray_transport_opt in
  104. [1-9] | 1[0-7])
  105. echo
  106. echo
  107. echo -e "$yellow V2Ray 传输协议 = $cyan${transport[$v2ray_transport_opt - 1]}$none"
  108. echo "----------------------------------------------------------------"
  109. echo
  110. break
  111. ;;
  112. *)
  113. error
  114. ;;
  115. esac
  116. done
  117. v2ray_port_config
  118. }
  119. v2ray_port_config() {
  120. case $v2ray_transport_opt in
  121. [1-3] | [5-9] | 1[0-5] | 17)
  122. local random=$(shuf -i20001-65535 -n1)
  123. while :; do
  124. echo -e "请输入 "$yellow"V2Ray"$none" 端口 ["$magenta"1-65535"$none"]"
  125. read -p "$(echo -e "(默认端口: ${cyan}${random}$none):")" v2ray_port
  126. [ -z "$v2ray_port" ] && v2ray_port=$random
  127. case $v2ray_port in
  128. [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])
  129. echo
  130. echo
  131. echo -e "$yellow V2Ray 端口 = $cyan$v2ray_port$none"
  132. echo "----------------------------------------------------------------"
  133. echo
  134. break
  135. ;;
  136. *)
  137. error
  138. ;;
  139. esac
  140. done
  141. if [[ $v2ray_transport_opt -ge 9 && $v2ray_transport_opt -le 15 ]]; then
  142. v2ray_dynamic_port_start
  143. elif [[ $v2ray_transport_opt == 17 ]]; then
  144. socks_user_config
  145. socks_pass_config
  146. fi
  147. ;;
  148. *)
  149. tls_config
  150. ;;
  151. esac
  152. }
  153.  
  154. v2ray_dynamic_port_start() {
  155.  
  156. while :; do
  157. echo -e "请输入 "$yellow"V2Ray 动态端口开始 "$none"范围 ["$magenta"1-65535"$none"]"
  158. read -p "$(echo -e "(默认开始端口: ${cyan}10000$none):")" v2ray_dynamic_port_start_input
  159. [ -z $v2ray_dynamic_port_start_input ] && v2ray_dynamic_port_start_input=10000
  160. case $v2ray_dynamic_port_start_input in
  161. $v2ray_port)
  162. echo
  163. echo " 不能和 V2Ray 端口一毛一样...."
  164. error
  165. ;;
  166. [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])
  167. echo
  168. echo
  169. echo -e "$yellow V2Ray 动态端口开始 = $cyan$v2ray_dynamic_port_start_input$none"
  170. echo "----------------------------------------------------------------"
  171. echo
  172. break
  173. ;;
  174. *)
  175. error
  176. ;;
  177. esac
  178.  
  179. done
  180.  
  181. if [[ $v2ray_dynamic_port_start_input -lt $v2ray_port ]]; then
  182. lt_v2ray_port=true
  183. fi
  184.  
  185. v2ray_dynamic_port_end
  186. }
  187. v2ray_dynamic_port_end() {
  188.  
  189. while :; do
  190. echo -e "请输入 "$yellow"V2Ray 动态端口结束 "$none"范围 ["$magenta"1-65535"$none"]"
  191. read -p "$(echo -e "(默认结束端口: ${cyan}20000$none):")" v2ray_dynamic_port_end_input
  192. [ -z $v2ray_dynamic_port_end_input ] && v2ray_dynamic_port_end_input=20000
  193. case $v2ray_dynamic_port_end_input in
  194. [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])
  195.  
  196. if [[ $v2ray_dynamic_port_end_input -le $v2ray_dynamic_port_start_input ]]; then
  197. echo
  198. echo " 不能小于或等于 V2Ray 动态端口开始范围"
  199. error
  200. elif [ $lt_v2ray_port ] && [[ ${v2ray_dynamic_port_end_input} -ge $v2ray_port ]]; then
  201. echo
  202. echo " V2Ray 动态端口结束范围 不能包括 V2Ray 端口..."
  203. error
  204. else
  205. echo
  206. echo
  207. echo -e "$yellow V2Ray 动态端口结束 = $cyan$v2ray_dynamic_port_end_input$none"
  208. echo "----------------------------------------------------------------"
  209. echo
  210. break
  211. fi
  212. ;;
  213. *)
  214. error
  215. ;;
  216. esac
  217.  
  218. done
  219.  
  220. }
  221.  
  222. socks_user_config() {
  223. while :; do
  224. read -p "$(echo -e "请输入$yellow用户名$none...(默认用户名: ${cyan}233blog$none)"): " username
  225. [ -z "$username" ] && username="233blog"
  226. case $username in
  227. *[/$]* | *\&*)
  228. echo
  229. echo -e " 由于这个脚本太辣鸡了..所以用户名不能包含$red / $none或$red $ $none或$red & $none这三个符号.... "
  230. echo
  231. error
  232. ;;
  233. *)
  234. echo
  235. echo
  236. echo -e "$yellow 用户名 = $cyan$username$none"
  237. echo "----------------------------------------------------------------"
  238. echo
  239. break
  240. ;;
  241. esac
  242. done
  243.  
  244. }
  245. socks_pass_config() {
  246. while :; do
  247. read -p "$(echo -e "请输入$yellow密码$none...(默认密码: ${cyan}233blog.com$none)"): " userpass
  248. [ -z "$userpass" ] && userpass="233blog.com"
  249. case $userpass in
  250. *[/$]* | *\&*)
  251. echo
  252. echo -e " 由于这个脚本太辣鸡了..所以密码不能包含$red / $none或$red $ $none或$red & $none这三个符号.... "
  253. echo
  254. error
  255. ;;
  256. *)
  257. echo
  258. echo
  259. echo -e "$yellow 密码 = $cyan$userpass$none"
  260. echo "----------------------------------------------------------------"
  261. echo
  262. break
  263. ;;
  264. esac
  265. done
  266. }
  267.  
  268. tls_config() {
  269.  
  270. echo
  271. local random=$(shuf -i20001-65535 -n1)
  272. while :; do
  273. echo -e "请输入 "$yellow"V2Ray"$none" 端口 ["$magenta"1-65535"$none"],不能选择 "$magenta"80"$none" 或 "$magenta"443"$none" 端口"
  274. read -p "$(echo -e "(默认端口: ${cyan}${random}$none):")" v2ray_port
  275. [ -z "$v2ray_port" ] && v2ray_port=$random
  276. case $v2ray_port in
  277. 80)
  278. echo
  279. echo " ...都说了不能选择 80 端口了咯....."
  280. error
  281. ;;
  282. 443)
  283. echo
  284. echo " ..都说了不能选择 433 端口了咯....."
  285. error
  286. ;;
  287. [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])
  288. echo
  289. echo
  290. echo -e "$yellow V2Ray 端口 = $cyan$v2ray_port$none"
  291. echo "----------------------------------------------------------------"
  292. echo
  293. break
  294. ;;
  295. *)
  296. error
  297. ;;
  298. esac
  299. done
  300.  
  301. while :; do
  302. echo
  303. echo -e "请输入一个 $magenta正确的域名$none,一定一定一定要正确,不!能!出!错!"
  304. read -p "(例如:233blog.com): " domain
  305. [ -z "$domain" ] && error && continue
  306. echo
  307. echo
  308. echo -e "$yellow 你的域名 = $cyan$domain$none"
  309. echo "----------------------------------------------------------------"
  310. break
  311. done
  312. get_ip
  313. echo
  314. echo
  315. echo -e "$yellow 请将 $magenta$domain$none $yellow解析到: $cyan$ip$none"
  316. echo
  317. echo -e "$yellow 请将 $magenta$domain$none $yellow解析到: $cyan$ip$none"
  318. echo
  319. echo -e "$yellow 请将 $magenta$domain$none $yellow解析到: $cyan$ip$none"
  320. echo "----------------------------------------------------------------"
  321. echo
  322.  
  323. while :; do
  324.  
  325. read -p "$(echo -e "(是否已经正确解析: [${magenta}Y$none]):") " record
  326. if [[ -z "$record" ]]; then
  327. error
  328. else
  329. if [[ "$record" == [Yy] ]]; then
  330. echo
  331. echo
  332. echo -e "$yellow 域名解析 = ${cyan}我确定已经有解析了$none"
  333. echo "----------------------------------------------------------------"
  334. echo
  335. break
  336. else
  337. error
  338. fi
  339. fi
  340.  
  341. done
  342.  
  343. if [[ $v2ray_transport_opt -ne 16 ]]; then
  344. auto_tls_config
  345. else
  346. caddy=true
  347. install_caddy_info="打开"
  348. fi
  349.  
  350. if [[ $caddy ]]; then
  351. path_config_ask
  352. fi
  353. }
  354. auto_tls_config() {
  355. echo -e "
  356.  
  357. 安装 Caddy 来实现 自动配置 TLS
  358.  
  359. 如果你已经安装 Nginx 或 Caddy
  360.  
  361. $yellow并且..自己能搞定配置 TLS$none
  362.  
  363. 那么就不需要 打开自动配置 TLS
  364. "
  365. echo "----------------------------------------------------------------"
  366. echo
  367.  
  368. while :; do
  369.  
  370. read -p "$(echo -e "(是否自动配置 TLS: [${magenta}Y/N$none]):") " auto_install_caddy
  371. if [[ -z "$auto_install_caddy" ]]; then
  372. error
  373. else
  374. if [[ "$auto_install_caddy" == [Yy] ]]; then
  375. caddy=true
  376. install_caddy_info="打开"
  377. echo
  378. echo
  379. echo -e "$yellow 自动配置 TLS = $cyan$install_caddy_info$none"
  380. echo "----------------------------------------------------------------"
  381. echo
  382. break
  383. elif [[ "$auto_install_caddy" == [Nn] ]]; then
  384. install_caddy_info="关闭"
  385. echo
  386. echo
  387. echo -e "$yellow 自动配置 TLS = $cyan$install_caddy_info$none"
  388. echo "----------------------------------------------------------------"
  389. echo
  390. break
  391. else
  392. error
  393. fi
  394. fi
  395.  
  396. done
  397. }
  398. path_config_ask() {
  399. echo
  400. while :; do
  401. echo -e "是否开启 网站伪装 和 路径分流 [${magenta}Y/N$none]"
  402. read -p "$(echo -e "(默认: [${cyan}N$none]):")" is_path
  403. [[ -z $is_path ]] && is_path="n"
  404.  
  405. case $is_path in
  406. Y | y)
  407. path_config
  408. break
  409. ;;
  410. N | n)
  411. echo
  412. echo
  413. echo -e "$yellow 网站伪装 和 路径分流 = $cyan不想配置$none"
  414. echo "----------------------------------------------------------------"
  415. echo
  416. break
  417. ;;
  418. *)
  419. error
  420. ;;
  421. esac
  422. done
  423. }
  424. path_config() {
  425. echo
  426. while :; do
  427. echo -e "请输入想要 ${magenta}用来分流的路径$none , 例如 /233blog , 那么只需要输入 233blog 即可"
  428. read -p "$(echo -e "(默认: [${cyan}233blog$none]):")" path
  429. [[ -z $path ]] && path="233blog"
  430.  
  431. case $path in
  432. *[/$]*)
  433. echo
  434. echo -e " 由于这个脚本太辣鸡了..所以分流的路径不能包含$red / $none或$red $ $none这两个符号.... "
  435. echo
  436. error
  437. ;;
  438. *)
  439. echo
  440. echo
  441. echo -e "$yellow 分流的路径 = ${cyan}/${path}$none"
  442. echo "----------------------------------------------------------------"
  443. echo
  444. break
  445. ;;
  446. esac
  447. done
  448. proxy_site_config
  449. }
  450. proxy_site_config() {
  451. echo
  452. while :; do
  453. echo -e "请输入 ${magenta}一个正确的$none ${cyan}网址$none 用来作为 ${cyan}网站的伪装$none , 例如 https://liyafly.com"
  454. echo -e "举例...你当前的域名是 $green$domain$none , 伪装的网址的是 https://liyafly.com"
  455. echo -e "然后打开你的域名时候...显示出来的内容就是来自 https://liyafly.com 的内容"
  456. echo -e "其实就是一个反代...明白就好..."
  457. echo -e "如果不能伪装成功...可以使用 v2ray config 修改伪装的网址"
  458. read -p "$(echo -e "(默认: [${cyan}https://liyafly.com$none]):")" proxy_site
  459. [[ -z $proxy_site ]] && proxy_site="https://liyafly.com"
  460.  
  461. case $proxy_site in
  462. *[#$]*)
  463. echo
  464. echo -e " 由于这个脚本太辣鸡了..所以伪装的网址不能包含$red # $none或$red $ $none这两个符号.... "
  465. echo
  466. error
  467. ;;
  468. *)
  469. echo
  470. echo
  471. echo -e "$yellow 伪装的网址 = ${cyan}${proxy_site}$none"
  472. echo "----------------------------------------------------------------"
  473. echo
  474. break
  475. ;;
  476. esac
  477. done
  478. }
  479.  
  480. blocked_hosts() {
  481. echo
  482. while :; do
  483. echo -e "是否开启广告拦截 [${magenta}Y/N$none]"
  484. read -p "$(echo -e "(默认 [${cyan}N$none]):")" blocked_ad
  485. [[ -z $blocked_ad ]] && blocked_ad="n"
  486.  
  487. case $blocked_ad in
  488. Y | y)
  489. blocked_ad_info="开启"
  490. is_blocked_ad=true
  491. echo
  492. echo
  493. echo -e "$yellow 广告拦截 = $cyan开启$none"
  494. echo "----------------------------------------------------------------"
  495. echo
  496. break
  497. ;;
  498. N | n)
  499. blocked_ad_info="关闭"
  500. echo
  501. echo
  502. echo -e "$yellow 广告拦截 = $cyan关闭$none"
  503. echo "----------------------------------------------------------------"
  504. echo
  505. break
  506. ;;
  507. *)
  508. error
  509. ;;
  510. esac
  511. done
  512. }
  513. shadowsocks_config() {
  514.  
  515. echo
  516.  
  517. while :; do
  518. echo -e "是否配置 ${yellow}Shadowsocks${none} [${magenta}Y/N$none]"
  519. read -p "$(echo -e "(默认 [${cyan}N$none]):") " install_shadowsocks
  520. [[ -z "$install_shadowsocks" ]] && install_shadowsocks="n"
  521. if [[ "$install_shadowsocks" == [Yy] ]]; then
  522. echo
  523. shadowsocks=true
  524. shadowsocks_port_config
  525. break
  526. elif [[ "$install_shadowsocks" == [Nn] ]]; then
  527. break
  528. else
  529. error
  530. fi
  531.  
  532. done
  533.  
  534. }
  535.  
  536. shadowsocks_port_config() {
  537. local random=$(shuf -i20001-65535 -n1)
  538. while :; do
  539. echo -e "请输入 "$yellow"Shadowsocks"$none" 端口 ["$magenta"1-65535"$none"],不能和 "$yellow"V2Ray"$none" 端口相同"
  540. read -p "$(echo -e "(默认端口: ${cyan}${random}$none):") " ssport
  541. [ -z "$ssport" ] && ssport=$random
  542. case $ssport in
  543. $v2ray_port)
  544. echo
  545. echo " 不能和 V2Ray 端口一毛一样...."
  546. error
  547. ;;
  548. [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])
  549. if [[ $v2ray_transport_opt == "4" || $v2ray_transport_opt == "16" ]]; then
  550. local tls=ture
  551. fi
  552. if [[ $tls && $ssport == "80" ]] || [[ $tls && $ssport == "443" ]]; then
  553. echo
  554. echo -e "由于你已选择了 "$green"WebSocket + TLS $none或$green HTTP/2"$none" 传输协议."
  555. echo
  556. echo -e "所以不能选择 "$magenta"80"$none" 或 "$magenta"443"$none" 端口"
  557. error
  558. elif [[ $v2ray_dynamic_port_start_input == $ssport || $v2ray_dynamic_port_end_input == $ssport ]]; then
  559. local multi_port="${v2ray_dynamic_port_start_input} - ${v2ray_dynamic_port_end_input}"
  560. echo
  561. echo " 抱歉,此端口和 V2Ray 动态端口 冲突,当前 V2Ray 动态端口范围为:$multi_port"
  562. error
  563. elif [[ $v2ray_dynamic_port_start_input -lt $ssport && $ssport -le $v2ray_dynamic_port_end_input ]]; then
  564. local multi_port="${v2ray_dynamic_port_start_input} - ${v2ray_dynamic_port_end_input}"
  565. echo
  566. echo " 抱歉,此端口和 V2Ray 动态端口 冲突,当前 V2Ray 动态端口范围为:$multi_port"
  567. error
  568. else
  569. echo
  570. echo
  571. echo -e "$yellow Shadowsocks 端口 = $cyan$ssport$none"
  572. echo "----------------------------------------------------------------"
  573. echo
  574. break
  575. fi
  576. ;;
  577. *)
  578. error
  579. ;;
  580. esac
  581.  
  582. done
  583.  
  584. shadowsocks_password_config
  585. }
  586. shadowsocks_password_config() {
  587.  
  588. while :; do
  589. echo -e "请输入 "$yellow"Shadowsocks"$none" 密码"
  590. read -p "$(echo -e "(默认密码: ${cyan}233blog.com$none)"): " sspass
  591. [ -z "$sspass" ] && sspass="233blog.com"
  592. case $sspass in
  593. *[/$]*)
  594. echo
  595. echo -e " 由于这个脚本太辣鸡了..所以密码不能包含$red / $none或$red $ $none这两个符号.... "
  596. echo
  597. error
  598. ;;
  599. *)
  600. echo
  601. echo
  602. echo -e "$yellow Shadowsocks 密码 = $cyan$sspass$none"
  603. echo "----------------------------------------------------------------"
  604. echo
  605. break
  606. ;;
  607. esac
  608.  
  609. done
  610.  
  611. shadowsocks_ciphers_config
  612. }
  613. shadowsocks_ciphers_config() {
  614.  
  615. while :; do
  616. echo -e "请选择 "$yellow"Shadowsocks"$none" 加密协议 [${magenta}1-${#ciphers[*]}$none]"
  617. for ((i = 1; i <= ${#ciphers[*]}; i++)); do
  618. ciphers_show="${ciphers[$i - 1]}"
  619. echo
  620. echo -e "$yellow $i. $none${ciphers_show}"
  621. done
  622. echo
  623. read -p "$(echo -e "(默认加密协议: ${cyan}${ciphers[6]}$none)"):" ssciphers_opt
  624. [ -z "$ssciphers_opt" ] && ssciphers_opt=7
  625. case $ssciphers_opt in
  626. [1-7])
  627. ssciphers=${ciphers[$ssciphers_opt - 1]}
  628. echo
  629. echo
  630. echo -e "$yellow Shadowsocks 加密协议 = $cyan${ssciphers}$none"
  631. echo "----------------------------------------------------------------"
  632. echo
  633. break
  634. ;;
  635. *)
  636. error
  637. ;;
  638. esac
  639.  
  640. done
  641. pause
  642. }
  643.  
  644. install_info() {
  645. clear
  646. echo
  647. echo " ....准备安装了咯..看看有毛有配置正确了..."
  648. echo
  649. echo "---------- 安装信息 -------------"
  650. echo
  651. echo -e "$yellow V2Ray 传输协议 = $cyan${transport[$v2ray_transport_opt - 1]}$none"
  652.  
  653. if [[ $v2ray_transport_opt == "4" || $v2ray_transport_opt == 16 ]]; then
  654. echo
  655. echo -e "$yellow V2Ray 端口 = $cyan$v2ray_port$none"
  656. echo
  657. echo -e "$yellow 你的域名 = $cyan$domain$none"
  658. echo
  659. echo -e "$yellow 域名解析 = ${cyan}我确定已经有解析了$none"
  660. echo
  661. echo -e "$yellow 自动配置 TLS = $cyan$install_caddy_info$none"
  662.  
  663. if [[ $is_blocked_ad ]]; then
  664. echo
  665. echo -e "$yellow 广告拦截 = $cyan$blocked_ad_info$none"
  666. fi
  667. if [[ $path ]]; then
  668. echo
  669. echo -e "$yellow 路径分流 = ${cyan}/${path}$none"
  670. fi
  671. elif [[ $v2ray_transport_opt -ge 9 && $v2ray_transport_opt -le 15 ]]; then
  672. echo
  673. echo -e "$yellow V2Ray 端口 = $cyan$v2ray_port$none"
  674. echo
  675. echo -e "$yellow V2Ray 动态端口范围 = $cyan${v2ray_dynamic_port_start_input} - ${v2ray_dynamic_port_end_input}$none"
  676.  
  677. if [[ $is_blocked_ad ]]; then
  678. echo
  679. echo -e "$yellow 广告拦截 = $cyan$blocked_ad_info$none"
  680. fi
  681. elif [[ $v2ray_transport_opt == 17 ]]; then
  682. echo
  683. echo -e "$yellow V2Ray 端口 = $cyan$v2ray_port$none"
  684. echo
  685. echo -e "$yellow 用户名 = $cyan$username$none"
  686. echo
  687. echo -e "$yellow 密码 = $cyan$userpass$none"
  688.  
  689. if [[ $is_blocked_ad ]]; then
  690. echo
  691. echo -e "$yellow 广告拦截 = $cyan$blocked_ad_info$none"
  692. fi
  693. else
  694. echo
  695. echo -e "$yellow V2Ray 端口 = $cyan$v2ray_port$none"
  696.  
  697. if [[ $is_blocked_ad ]]; then
  698. echo
  699. echo -e "$yellow 广告拦截 = $cyan$blocked_ad_info$none"
  700. fi
  701. fi
  702. if [ $shadowsocks ]; then
  703. echo
  704. echo -e "$yellow Shadowsocks 端口 = $cyan$ssport$none"
  705. echo
  706. echo -e "$yellow Shadowsocks 密码 = $cyan$sspass$none"
  707. echo
  708. echo -e "$yellow Shadowsocks 加密协议 = $cyan${ssciphers}$none"
  709. else
  710. echo
  711. echo -e "$yellow 是否配置 Shadowsocks = ${cyan}未配置${none}"
  712. fi
  713. echo
  714. echo "---------- END -------------"
  715. echo
  716. pause
  717. echo
  718. }
  719.  
  720. domain_check() {
  721. # if [[ $cmd == "yum" ]]; then
  722. # yum install bind-utils -y
  723. # else
  724. # $cmd install dnsutils -y
  725. # fi
  726. # test_domain=$(dig $domain +short)
  727. test_domain=$(ping $domain -c 1 | grep -oE -m1 "([0-9]{1,3}\.){3}[0-9]{1,3}")
  728. if [[ $test_domain != $ip ]]; then
  729. echo
  730. echo -e "$red 检测域名解析错误....$none"
  731. echo
  732. echo -e " 你的域名: $yellow$domain$none 未解析到: $cyan$ip$none"
  733. echo
  734. echo -e " 你的域名当前解析到: $cyan$test_domain$none"
  735. echo
  736. echo "备注...如果你的域名是使用 Cloudflare 解析的话..在 Status 那里点一下那图标..让它变灰"
  737. echo
  738. exit 1
  739. fi
  740. }
  741.  
  742. install_caddy() {
  743. local caddy_tmp="/tmp/install_caddy/"
  744. local caddy_tmp_file="/tmp/install_caddy/caddy.tar.gz"
  745. if [[ $sys_bit == "i386" || $sys_bit == "i686" ]]; then
  746. local caddy_download_link="https://caddyserver.com/download/linux/386?license=personal"
  747. elif [[ $sys_bit == "x86_64" ]]; then
  748. local caddy_download_link="https://caddyserver.com/download/linux/amd64?license=personal"
  749. else
  750. echo -e "$red 自动安装 Caddy 失败!不支持你的系统。$none" && exit 1
  751. fi
  752.  
  753. mkdir -p $caddy_tmp
  754.  
  755. if ! wget --no-check-certificate -O "$caddy_tmp_file" $caddy_download_link; then
  756. echo -e "$red 下载 Caddy 失败!$none" && exit 1
  757. fi
  758.  
  759. tar zxf $caddy_tmp_file -C $caddy_tmp
  760. cp -f ${caddy_tmp}caddy /usr/local/bin/
  761.  
  762. if [[ ! -f /usr/local/bin/caddy ]]; then
  763. echo -e "$red 安装 Caddy 出错!" && exit 1
  764. fi
  765.  
  766. setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/caddy
  767.  
  768. if [[ $systemd ]]; then
  769. cp -f ${caddy_tmp}init/linux-systemd/caddy.service /lib/systemd/system/
  770. # sed -i "s/www-data/root/g" /lib/systemd/system/caddy.service
  771. systemctl enable caddy
  772. else
  773. cp -f ${caddy_tmp}init/linux-sysvinit/caddy /etc/init.d/caddy
  774. # sed -i "s/www-data/root/g" /etc/init.d/caddy
  775. chmod +x /etc/init.d/caddy
  776. update-rc.d -f caddy defaults
  777. fi
  778.  
  779. mkdir -p /etc/ssl/caddy
  780.  
  781. if [ -z "$(grep www-data /etc/passwd)" ]; then
  782. useradd -M -s /usr/sbin/nologin www-data
  783. fi
  784. chown -R www-data.www-data /etc/ssl/caddy
  785.  
  786. mkdir -p /etc/caddy/
  787. rm -rf $caddy_tmp
  788. caddy_config
  789.  
  790. }
  791. caddy_config() {
  792. local email=$(shuf -i1-10000000000 -n1)
  793. case $v2ray_transport_opt in
  794. 4)
  795. if [[ $path ]]; then
  796. cat >/etc/caddy/Caddyfile <<-EOF
  797. $domain {
  798. tls ${email}@gmail.com
  799. gzip
  800. timeouts none
  801. proxy / $proxy_site {
  802. without /${path}
  803. }
  804. proxy /${path} 127.0.0.1:${v2ray_port} {
  805. without /${path}
  806. websocket
  807. }
  808. }
  809. EOF
  810. else
  811. cat >/etc/caddy/Caddyfile <<-EOF
  812. $domain {
  813. tls ${email}@gmail.com
  814. timeouts none
  815. proxy / 127.0.0.1:${v2ray_port} {
  816. websocket
  817. }
  818. }
  819. EOF
  820. fi
  821. ;;
  822. 16)
  823. if [[ $path ]]; then
  824. cat >/etc/caddy/Caddyfile <<-EOF
  825. $domain {
  826. tls ${email}@gmail.com
  827. gzip
  828. timeouts none
  829. proxy / $proxy_site {
  830. without /${path}
  831. }
  832. proxy /${path} https://127.0.0.1:${v2ray_port} {
  833. header_upstream Host {host}
  834. header_upstream X-Forwarded-Proto {scheme}
  835. insecure_skip_verify
  836. }
  837. }
  838. EOF
  839. else
  840. cat >/etc/caddy/Caddyfile <<-EOF
  841. $domain {
  842. tls ${email}@gmail.com
  843. timeouts none
  844. proxy / https://127.0.0.1:${v2ray_port} {
  845. header_upstream Host {host}
  846. header_upstream X-Forwarded-Proto {scheme}
  847. insecure_skip_verify
  848. }
  849. }
  850. EOF
  851. fi
  852. ;;
  853.  
  854. esac
  855.  
  856. # systemctl restart caddy
  857. do_service restart caddy
  858. }
  859.  
  860. install_v2ray() {
  861. $cmd update -y
  862. # if [[ $cmd == "apt-get" ]]; then
  863. # $cmd install -y lrzsz git zip unzip curl wget qrencode dnsutils
  864. # else
  865. # $cmd install -y lrzsz git zip unzip curl wget qrencode bind-utils iptables-services
  866. # fi
  867. if [[ $cmd == "apt-get" ]]; then
  868. $cmd install -y lrzsz git zip unzip curl wget qrencode libcap2-bin
  869. else
  870. $cmd install -y lrzsz git zip unzip curl wget qrencode libcap iptables-services
  871. fi
  872. ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  873. [ -d /etc/v2ray ] && rm -rf /etc/v2ray
  874.  
  875. if [[ $local_install ]]; then
  876. if [[ ! -d $(pwd)/config ]]; then
  877. echo
  878. echo -e "$red 哎呀呀...安装失败了咯...$none"
  879. echo
  880. echo -e " 请确保你有完整的上传 233blog.com V2Ray 一键安装脚本 & 管理脚本到当前 ${green}$(pwd) $none目录下"
  881. echo
  882. exit 1
  883. fi
  884. mkdir -p /etc/v2ray/233boy/v2ray
  885. cp -rf $(pwd)/* /etc/v2ray/233boy/v2ray
  886. else
  887. git clone https://github.com/233boy/v2ray /etc/v2ray/233boy/v2ray
  888. fi
  889.  
  890. [ -d /tmp/v2ray ] && rm -rf /tmp/v2ray
  891. mkdir -p /tmp/v2ray
  892.  
  893. v2ray_tmp_file="/tmp/v2ray/v2ray.zip"
  894. v2ray_ver="$(curl -s https://api.github.com/repos/v2ray/v2ray-core/releases/latest | grep 'tag_name' | cut -d\" -f4)"
  895. v2ray_download_link="https://github.com/v2ray/v2ray-core/releases/download/$v2ray_ver/v2ray-linux-${v2ray_bit}.zip"
  896.  
  897. if ! wget --no-check-certificate -O "$v2ray_tmp_file" $v2ray_download_link; then
  898. echo -e "
  899. $red 下载 V2Ray 失败啦..可能是你的小鸡鸡的网络太辣鸡了...重新安装也许能解决$none
  900. " && exit 1
  901. fi
  902.  
  903. unzip $v2ray_tmp_file -d "/tmp/v2ray/"
  904. mkdir -p /usr/bin/v2ray
  905. cp -f "/tmp/v2ray/v2ray-${v2ray_ver}-linux-${v2ray_bit}/v2ray" "/usr/bin/v2ray/v2ray"
  906. chmod +x "/usr/bin/v2ray/v2ray"
  907. cp -f "/tmp/v2ray/v2ray-${v2ray_ver}-linux-${v2ray_bit}/v2ctl" "/usr/bin/v2ray/v2ctl"
  908. chmod +x "/usr/bin/v2ray/v2ctl"
  909.  
  910. if [[ $systemd ]]; then
  911. cp -f "/tmp/v2ray/v2ray-${v2ray_ver}-linux-${v2ray_bit}/systemd/v2ray.service" "/lib/systemd/system/"
  912. systemctl enable v2ray
  913. else
  914. apt-get install -y daemon
  915. cp "/tmp/v2ray/v2ray-${v2ray_ver}-linux-${v2ray_bit}/systemv/v2ray" "/etc/init.d/v2ray"
  916. chmod +x "/etc/init.d/v2ray"
  917. update-rc.d -f v2ray defaults
  918. fi
  919.  
  920. mkdir -p /var/log/v2ray
  921. mkdir -p /etc/v2ray
  922.  
  923. rm -rf /tmp/v2ray
  924.  
  925. if [ $shadowsocks ]; then
  926. if [[ $is_blocked_ad ]]; then
  927. case $v2ray_transport_opt in
  928. 1)
  929. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/tcp_ss.json"
  930. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/tcp.json"
  931. ;;
  932. 2)
  933. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/http_ss.json"
  934. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/http.json"
  935. ;;
  936. 3)
  937. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/ws_ss.json"
  938. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws.json"
  939. ;;
  940. 4)
  941. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/ws_ss.json"
  942. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws_tls.json"
  943. ;;
  944. 5 | 6 | 7 | 8)
  945. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/kcp_ss.json"
  946. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/kcp.json"
  947. ;;
  948. 9)
  949. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/tcp_ss_dynamic.json"
  950. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/tcp.json"
  951. ;;
  952. 10)
  953. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/http_ss_dynamic.json"
  954. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/http.json"
  955. ;;
  956. 11)
  957. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/ws_ss_dynamic.json"
  958. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws.json"
  959. ;;
  960. 12 | 13 | 14 | 15)
  961. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/kcp_ss_dynamic.json"
  962. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/kcp.json"
  963. ;;
  964. 16)
  965. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/h2_ss.json"
  966. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/h2.json"
  967. ;;
  968. 17)
  969. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/socks_ss.json"
  970. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/socks.json"
  971. ;;
  972. esac
  973. else
  974. case $v2ray_transport_opt in
  975. 1)
  976. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/tcp_ss.json"
  977. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/tcp.json"
  978. ;;
  979. 2)
  980. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/http_ss.json"
  981. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/http.json"
  982. ;;
  983. 3)
  984. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/ws_ss.json"
  985. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws.json"
  986. ;;
  987. 4)
  988. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/ws_ss.json"
  989. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws_tls.json"
  990. ;;
  991. 5 | 6 | 7 | 8)
  992. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/kcp_ss.json"
  993. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/kcp.json"
  994. ;;
  995. 9)
  996. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/tcp_ss_dynamic.json"
  997. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/tcp.json"
  998. ;;
  999. 10)
  1000. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/http_ss_dynamic.json"
  1001. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/http.json"
  1002. ;;
  1003. 11)
  1004. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/ws_ss_dynamic.json"
  1005. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws.json"
  1006. ;;
  1007. 12 | 13 | 14 | 15)
  1008. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/kcp_ss_dynamic.json"
  1009. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/kcp.json"
  1010. ;;
  1011. 16)
  1012. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/h2_ss.json"
  1013. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/h2.json"
  1014. ;;
  1015. 17)
  1016. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/socks_ss.json"
  1017. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/socks.json"
  1018. ;;
  1019. esac
  1020. fi
  1021. else
  1022. if [[ $is_blocked_ad ]]; then
  1023. case $v2ray_transport_opt in
  1024. 1)
  1025. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/tcp.json"
  1026. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/tcp.json"
  1027. ;;
  1028. 2)
  1029. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/http.json"
  1030. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/http.json"
  1031. ;;
  1032. 3)
  1033. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/ws.json"
  1034. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws.json"
  1035. ;;
  1036. 4)
  1037. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/ws.json"
  1038. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws_tls.json"
  1039. ;;
  1040. 5 | 6 | 7 | 8)
  1041. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/kcp.json"
  1042. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/kcp.json"
  1043. ;;
  1044. 9)
  1045. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/sblocked_hosts/erver/tcp_dynamic.json"
  1046. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/tcp.json"
  1047. ;;
  1048. 10)
  1049. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/http_dynamic.json"
  1050. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/http.json"
  1051. ;;
  1052. 11)
  1053. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/ws_dynamic.json"
  1054. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws.json"
  1055. ;;
  1056. 12 | 13 | 14 | 15)
  1057. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/kcp_dynamic.json"
  1058. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/kcp.json"
  1059. ;;
  1060. 16)
  1061. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/h2.json"
  1062. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/h2.json"
  1063. ;;
  1064. 17)
  1065. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/blocked_hosts/server/socks.json"
  1066. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/socks.json"
  1067. ;;
  1068. esac
  1069. else
  1070. case $v2ray_transport_opt in
  1071. 1)
  1072. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/tcp.json"
  1073. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/tcp.json"
  1074. ;;
  1075. 2)
  1076. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/http.json"
  1077. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/http.json"
  1078. ;;
  1079. 3)
  1080. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/ws.json"
  1081. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws.json"
  1082. ;;
  1083. 4)
  1084. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/ws.json"
  1085. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws_tls.json"
  1086. ;;
  1087. 5 | 6 | 7 | 8)
  1088. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/kcp.json"
  1089. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/kcp.json"
  1090. ;;
  1091. 9)
  1092. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/tcp_dynamic.json"
  1093. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/tcp.json"
  1094. ;;
  1095. 10)
  1096. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/http_dynamic.json"
  1097. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/http.json"
  1098. ;;
  1099. 11)
  1100. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/ws_dynamic.json"
  1101. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/ws.json"
  1102. ;;
  1103. 12 | 13 | 14 | 15)
  1104. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/kcp_dynamic.json"
  1105. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/kcp.json"
  1106. ;;
  1107. 16)
  1108. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/h2.json"
  1109. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/h2.json"
  1110. ;;
  1111. 17)
  1112. v2ray_server_config_file="/etc/v2ray/233boy/v2ray/config/server/socks.json"
  1113. v2ray_client_config_file="/etc/v2ray/233boy/v2ray/config/client/socks.json"
  1114. ;;
  1115. esac
  1116. fi
  1117.  
  1118. fi
  1119.  
  1120. }
  1121.  
  1122. open_port() {
  1123. if [[ $1 != "multiport" ]]; then
  1124.  
  1125. iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport $1 -j ACCEPT
  1126. iptables -I INPUT -m state --state NEW -m udp -p udp --dport $1 -j ACCEPT
  1127. ip6tables -I INPUT -m state --state NEW -m tcp -p tcp --dport $1 -j ACCEPT
  1128. ip6tables -I INPUT -m state --state NEW -m udp -p udp --dport $1 -j ACCEPT
  1129.  
  1130. # firewall-cmd --permanent --zone=public --add-port=$1/tcp
  1131. # firewall-cmd --permanent --zone=public --add-port=$1/udp
  1132. # firewall-cmd --reload
  1133.  
  1134. else
  1135.  
  1136. local multiport="${v2ray_dynamic_port_start_input}:${v2ray_dynamic_port_end_input}"
  1137. iptables -I INPUT -p tcp --match multiport --dports $multiport -j ACCEPT
  1138. iptables -I INPUT -p udp --match multiport --dports $multiport -j ACCEPT
  1139. ip6tables -I INPUT -p tcp --match multiport --dports $multiport -j ACCEPT
  1140. ip6tables -I INPUT -p udp --match multiport --dports $multiport -j ACCEPT
  1141.  
  1142. # local multi_port="${v2ray_dynamic_port_start_input}-${v2ray_dynamic_port_end_input}"
  1143. # firewall-cmd --permanent --zone=public --add-port=$multi_port/tcp
  1144. # firewall-cmd --permanent --zone=public --add-port=$multi_port/udp
  1145. # firewall-cmd --reload
  1146.  
  1147. fi
  1148. if [[ $cmd == "apt-get" ]]; then
  1149. iptables-save >/etc/iptables.rules.v4
  1150. ip6tables-save >/etc/iptables.rules.v6
  1151. else
  1152. service iptables save >/dev/null 2>&1
  1153. service ip6tables save >/dev/null 2>&1
  1154. fi
  1155. }
  1156. del_port() {
  1157. if [[ $1 != "multiport" ]]; then
  1158. # if [[ $cmd == "apt-get" ]]; then
  1159. iptables -D INPUT -m state --state NEW -m tcp -p tcp --dport $1 -j ACCEPT
  1160. iptables -D INPUT -m state --state NEW -m udp -p udp --dport $1 -j ACCEPT
  1161. ip6tables -D INPUT -m state --state NEW -m tcp -p tcp --dport $1 -j ACCEPT
  1162. ip6tables -D INPUT -m state --state NEW -m udp -p udp --dport $1 -j ACCEPT
  1163. # else
  1164. # firewall-cmd --permanent --zone=public --remove-port=$1/tcp
  1165. # firewall-cmd --permanent --zone=public --remove-port=$1/udp
  1166. # fi
  1167. else
  1168. # if [[ $cmd == "apt-get" ]]; then
  1169. if [[ $v2ray_transport ]]; then
  1170. local ports="${v2ray_dynamicPort_start}:${v2ray_dynamicPort_end}"
  1171. else
  1172. local port_start=$(sed -n '23p' $backup)
  1173. local port_end=$(sed -n '25p' $backup)
  1174. local ports="${port_start}:${port_end}"
  1175. fi
  1176.  
  1177. iptables -D INPUT -p tcp --match multiport --dports $ports -j ACCEPT
  1178. iptables -D INPUT -p udp --match multiport --dports $ports -j ACCEPT
  1179. ip6tables -D INPUT -p tcp --match multiport --dports $ports -j ACCEPT
  1180. ip6tables -D INPUT -p udp --match multiport --dports $ports -j ACCEPT
  1181. # else
  1182. # local port_start=$(sed -n '23p' $backup)
  1183. # local port_end=$(sed -n '25p' $backup)
  1184. # local ports="${port_start}-${port_end}"
  1185. # firewall-cmd --permanent --zone=public --remove-port=$ports/tcp
  1186. # firewall-cmd --permanent --zone=public --remove-port=$ports/udp
  1187. # fi
  1188. fi
  1189.  
  1190. if [[ $cmd == "apt-get" ]]; then
  1191. iptables-save >/etc/iptables.rules.v4
  1192. ip6tables-save >/etc/iptables.rules.v6
  1193. else
  1194. service iptables save >/dev/null 2>&1
  1195. service ip6tables save >/dev/null 2>&1
  1196. fi
  1197.  
  1198. }
  1199.  
  1200. config() {
  1201. cp -f $v2ray_server_config_file $v2ray_server_config
  1202. cp -f $v2ray_client_config_file $v2ray_client_config
  1203. cp -f /etc/v2ray/233boy/v2ray/config/backup.conf $backup
  1204. cp -f /etc/v2ray/233boy/v2ray/v2ray.sh /usr/local/bin/v2ray
  1205. chmod +x /usr/local/bin/v2ray
  1206.  
  1207. local multi_port="${v2ray_dynamic_port_start_input}-${v2ray_dynamic_port_end_input}"
  1208. if [ $shadowsocks ]; then
  1209. case $v2ray_transport_opt in
  1210. 1)
  1211. sed -i "28s/6666/$ssport/; 30s/chacha20-ietf/$ssciphers/; 31s/233blog.com/$sspass/" $v2ray_server_config
  1212. ;;
  1213. 2)
  1214. sed -i "64s/6666/$ssport/; 66s/chacha20-ietf/$ssciphers/; 67s/233blog.com/$sspass/" $v2ray_server_config
  1215. ;;
  1216. 3 | 4)
  1217. sed -i "31s/6666/$ssport/; 33s/chacha20-ietf/$ssciphers/; 34s/233blog.com/$sspass/" $v2ray_server_config
  1218. ;;
  1219. 5 | 6 | 7 | 8)
  1220. sed -i "43s/6666/$ssport/; 45s/chacha20-ietf/$ssciphers/; 46s/233blog.com/$sspass/" $v2ray_server_config
  1221. ;;
  1222. 9)
  1223. sed -i "31s/6666/$ssport/; 33s/chacha20-ietf/$ssciphers/; 34s/233blog.com/$sspass/; 42s/10000-20000/$multi_port/" $v2ray_server_config
  1224. ;;
  1225. 10)
  1226. sed -i "67s/6666/$ssport/; 69s/chacha20-ietf/$ssciphers/; 70s/233blog.com/$sspass/; 78s/10000-20000/$multi_port/" $v2ray_server_config
  1227. ;;
  1228. 1[1-5])
  1229. sed -i "34s/6666/$ssport/; 36s/chacha20-ietf/$ssciphers/; 37s/233blog.com/$sspass/; 45s/10000-20000/$multi_port/" $v2ray_server_config
  1230. ;;
  1231. 16)
  1232. sed -i "46s/6666/$ssport/; 48s/chacha20-ietf/$ssciphers/; 49s/233blog.com/$sspass/" $v2ray_server_config
  1233. ;;
  1234. 17)
  1235. sed -i "30s/6666/$ssport/; 32s/chacha20-ietf/$ssciphers/; 33s/233blog.com/$sspass/" $v2ray_server_config
  1236. ;;
  1237. esac
  1238.  
  1239. case $v2ray_transport_opt in
  1240. 6)
  1241. sed -i "31s/none/utp/" $v2ray_server_config
  1242. sed -i "44s/none/utp/" $v2ray_client_config
  1243. ;;
  1244. 7)
  1245. sed -i "31s/none/srtp/" $v2ray_server_config
  1246. sed -i "44s/none/srtp/" $v2ray_client_config
  1247. ;;
  1248. 8)
  1249. sed -i "31s/none/wechat-video/" $v2ray_server_config
  1250. sed -i "44s/none/wechat-video/" $v2ray_client_config
  1251. ;;
  1252. 13)
  1253. sed -i "74s/none/utp/" $v2ray_server_config
  1254. sed -i "44s/none/utp/" $v2ray_client_config
  1255. ;;
  1256. 14)
  1257. sed -i "74s/none/srtp/" $v2ray_server_config
  1258. sed -i "44s/none/srtp/" $v2ray_client_config
  1259. ;;
  1260. 15)
  1261. sed -i "74s/none/wechat-video/" $v2ray_server_config
  1262. sed -i "44s/none/wechat-video/" $v2ray_client_config
  1263. ;;
  1264. esac
  1265.  
  1266. else
  1267. case $v2ray_transport_opt in
  1268. 9)
  1269. sed -i "31s/10000-20000/$multi_port/" $v2ray_server_config
  1270. ;;
  1271. 10)
  1272. sed -i "67s/10000-20000/$multi_port/" $v2ray_server_config
  1273. ;;
  1274. 1[1-5])
  1275. sed -i "34s/10000-20000/$multi_port/" $v2ray_server_config
  1276. ;;
  1277. esac
  1278.  
  1279. case $v2ray_transport_opt in
  1280. 6)
  1281. sed -i "31s/none/utp/" $v2ray_server_config
  1282. sed -i "44s/none/utp/" $v2ray_client_config
  1283. ;;
  1284. 7)
  1285. sed -i "31s/none/srtp/" $v2ray_server_config
  1286. sed -i "44s/none/srtp/" $v2ray_client_config
  1287. ;;
  1288. 8)
  1289. sed -i "31s/none/wechat-video/" $v2ray_server_config
  1290. sed -i "44s/none/wechat-video/" $v2ray_client_config
  1291. ;;
  1292. 13)
  1293. sed -i "63s/none/utp/" $v2ray_server_config
  1294. sed -i "44s/none/utp/" $v2ray_client_config
  1295. ;;
  1296. 14)
  1297. sed -i "63s/none/srtp/" $v2ray_server_config
  1298. sed -i "44s/none/srtp/" $v2ray_client_config
  1299. ;;
  1300. 15)
  1301. sed -i "63s/none/wechat-video/" $v2ray_server_config
  1302. sed -i "44s/none/wechat-video/" $v2ray_client_config
  1303. ;;
  1304. esac
  1305.  
  1306. fi
  1307.  
  1308. if [[ $v2ray_transport_opt == 17 ]]; then
  1309. sed -i "8s/2333/$v2ray_port/; 14s/233blog/$username/; 15s/233blog.com/$userpass/" $v2ray_server_config
  1310. else
  1311. sed -i "8s/2333/$v2ray_port/; 14s/$old_id/$uuid/" $v2ray_server_config
  1312. fi
  1313.  
  1314. if [[ $v2ray_transport_opt -eq 16 ]]; then
  1315. sed -i "24s/233blog.com/$domain/" $v2ray_server_config
  1316. if [[ $path ]]; then
  1317. sed -i "26s/233blog/$path/" $v2ray_server_config
  1318. else
  1319. sed -i "26s/233blog//" $v2ray_server_config
  1320. fi
  1321. fi
  1322.  
  1323. if [[ $v2ray_transport_opt -eq 4 || $v2ray_transport_opt -eq 16 ]]; then
  1324. sed -i "s/233blog.com/$domain/; 22s/2333/443/; 25s/$old_id/$uuid/" $v2ray_client_config
  1325. if [[ $path ]]; then
  1326. sed -i "40s/233blog/$path/" $v2ray_client_config
  1327. else
  1328. sed -i "40s/233blog//" $v2ray_client_config
  1329. fi
  1330. elif [[ $v2ray_transport_opt == 17 ]]; then
  1331. sed -i "21s/233blog.com/$ip/; 22s/2333/$v2ray_port/; 25s/233blog/$username/; 26s/233blog.com/$userpass/" $v2ray_client_config
  1332. else
  1333. sed -i "s/233blog.com/$ip/; 22s/2333/$v2ray_port/; 25s/$old_id/$uuid/" $v2ray_client_config
  1334. fi
  1335.  
  1336. # zip -q -r -j --password "233blog.com" /etc/v2ray/233blog_v2ray.zip $v2ray_client_config
  1337.  
  1338. if [[ $cmd == "apt-get" ]]; then
  1339. cat >/etc/network/if-pre-up.d/iptables <<-EOF
  1340. #!/bin/sh
  1341. /sbin/iptables-restore < /etc/iptables.rules.v4
  1342. /sbin/ip6tables-restore < /etc/iptables.rules.v6
  1343. EOF
  1344. chmod +x /etc/network/if-pre-up.d/iptables
  1345. else
  1346. [ $(pgrep "firewall") ] && systemctl stop firewalld
  1347. systemctl mask firewalld
  1348. systemctl disable firewalld
  1349. systemctl enable iptables
  1350. systemctl enable ip6tables
  1351. systemctl start iptables
  1352. systemctl start ip6tables
  1353. fi
  1354.  
  1355. [ $shadowsocks ] && open_port $ssport
  1356. if [[ $v2ray_transport_opt == "4" || $v2ray_transport_opt == 16 ]]; then
  1357. open_port "80"
  1358. open_port "443"
  1359. open_port $v2ray_port
  1360. elif [[ $v2ray_transport_opt -ge 9 && $v2ray_transport_opt -le 15 ]]; then
  1361. open_port $v2ray_port
  1362. open_port "multiport"
  1363. else
  1364. open_port $v2ray_port
  1365. fi
  1366. # systemctl restart v2ray
  1367. do_service restart v2ray
  1368. backup_config
  1369.  
  1370. }
  1371.  
  1372. backup_config() {
  1373. sed -i "18s/=1/=$v2ray_transport_opt/; 21s/=2333/=$v2ray_port/; 24s/=$old_id/=$uuid/" $backup
  1374. if [[ $v2ray_transport_opt -ge 9 && $v2ray_transport_opt -le 15 ]]; then
  1375. sed -i "30s/=10000/=$v2ray_dynamic_port_start_input/; 33s/=20000/=$v2ray_dynamic_port_end_input/" $backup
  1376. fi
  1377. if [ $shadowsocks ]; then
  1378. sed -i "42s/=/=true/; 45s/=6666/=$ssport/; 48s/=233blog.com/=$sspass/; 51s/=chacha20-ietf/=$ssciphers/" $backup
  1379. fi
  1380. [[ $v2ray_transport_opt == "4" || $v2ray_transport_opt == 16 ]] && sed -i "36s/=233blog.com/=$domain/" $backup
  1381. [ $caddy ] && sed -i "39s/=/=true/" $backup
  1382. [ $is_blocked_ad ] && sed -i "54s/=/=true/" $backup
  1383. if [[ $path ]]; then
  1384. sed -i "57s/=/=true/; 60s/=233blog/=$path/" $backup
  1385. sed -i "63s#=https://liyafly.com#=$proxy_site#" $backup
  1386. fi
  1387. if [[ $v2ray_transport_opt == 17 ]]; then
  1388. sed -i "66s/=233blog/=$username/; 69s/=233blog.com/=$userpass/" $backup
  1389. fi
  1390. }
  1391.  
  1392. try_enable_bbr() {
  1393. if [[ $(uname -r | cut -b 1) -eq 4 ]]; then
  1394. case $(uname -r | cut -b 3-4) in
  1395. 9. | [1-9][0-9])
  1396. sed -i '/net.ipv4.tcp_congestion_control/d' /etc/sysctl.conf
  1397. sed -i '/net.core.default_qdisc/d' /etc/sysctl.conf
  1398. echo "net.ipv4.tcp_congestion_control = bbr" >>/etc/sysctl.conf
  1399. echo "net.core.default_qdisc = fq" >>/etc/sysctl.conf
  1400. sysctl -p >/dev/null 2>&1
  1401. ;;
  1402. esac
  1403. fi
  1404. }
  1405.  
  1406. get_ip() {
  1407. ip=$(curl -s ipinfo.io/ip)
  1408. }
  1409.  
  1410. error() {
  1411.  
  1412. echo -e "\n$red 输入错误!$none\n"
  1413.  
  1414. }
  1415.  
  1416. pause() {
  1417.  
  1418. read -rsp "$(echo -e "按$green Enter 回车键 $none继续....或按$red Ctrl + C $none取消.")" -d $'\n'
  1419. echo
  1420. }
  1421. do_service() {
  1422. if [[ $systemd ]]; then
  1423. systemctl $1 $2
  1424. else
  1425. service $2 $1
  1426. fi
  1427. }
  1428. show_config_info() {
  1429. local header="none"
  1430. if [[ $path ]]; then
  1431. local _path="/$path"
  1432. else
  1433. local _path="/"
  1434. fi
  1435.  
  1436. case $v2ray_transport_opt in
  1437. 1 | 9)
  1438. local net="tcp"
  1439. # local network="tcp"
  1440. # local obfs="none"
  1441. ;;
  1442. 2 | 10)
  1443. local net="tcp"
  1444. # local network="tcp"
  1445. local header="http"
  1446. local host="www.baidu.com"
  1447. # local obfs="http"
  1448. ;;
  1449. 3 | 4 | 11)
  1450. local net="ws"
  1451. # local network="ws"
  1452. # local obfs="websocket"
  1453. ;;
  1454. 5 | 12)
  1455. local net="kcp"
  1456. # local network="kcp"
  1457. ;;
  1458. 6 | 13)
  1459. local net="kcp"
  1460. # local network="kcp"
  1461. local header="utp"
  1462. ;;
  1463. 7 | 14)
  1464. local net="kcp"
  1465. # local network="kcp"
  1466. local header="srtp"
  1467. ;;
  1468. 8 | 15)
  1469. local net="kcp"
  1470. # local network="kcp"
  1471. local header="wechat-video"
  1472. ;;
  1473. 16)
  1474. local net="h2"
  1475. # local network="h2"
  1476. ;;
  1477. esac
  1478. if [[ $v2ray_transport_opt == "4" || $v2ray_transport_opt == 16 ]]; then
  1479. cat >/etc/v2ray/vmess_qr.json <<-EOF
  1480. {
  1481. "v": "2",
  1482. "ps": "233blog_v2ray_${domain}",
  1483. "add": "${domain}",
  1484. "port": "443",
  1485. "id": "${uuid}",
  1486. "aid": "233",
  1487. "net": "${net}",
  1488. "type": "none",
  1489. "host": "${domain}",
  1490. "path": "$_path",
  1491. "tls": "tls"
  1492. }
  1493. EOF
  1494. elif [[ $v2ray_transport_opt != 17 ]]; then
  1495. cat >/etc/v2ray/vmess_qr.json <<-EOF
  1496. {
  1497. "v": "2",
  1498. "ps": "233blog_v2ray_${ip}",
  1499. "add": "${ip}",
  1500. "port": "${v2ray_port}",
  1501. "id": "${uuid}",
  1502. "aid": "233",
  1503. "net": "${net}",
  1504. "type": "${header}",
  1505. "host": "${host}",
  1506. "path": "",
  1507. "tls": ""
  1508. }
  1509. EOF
  1510. fi
  1511. clear
  1512. echo
  1513. echo "---------- V2Ray 安装完成 -------------"
  1514. echo
  1515. echo -e " $yellow输入 ${cyan}v2ray${none} $yellow即可管理 V2Ray${none}"
  1516. echo
  1517. echo -e " ${yellow}V2Ray 客户端使用教程: https://233blog.com/post/20/$none"
  1518. echo
  1519. if [[ $v2ray_transport_opt == "4" && ! $caddy ]]; then
  1520. echo -e " $red警告!$none$yellow请自行配置 TLS...教程: https://233blog.com/post/19/$none"
  1521. echo
  1522. fi
  1523. echo "---------- V2Ray 配置信息 -------------"
  1524. if [[ $v2ray_transport_opt == "4" || $v2ray_transport_opt == 16 ]]; then
  1525. echo
  1526. echo -e "$yellow 地址 (Address) = $cyan${domain}$none"
  1527. echo
  1528. echo -e "$yellow 端口 (Port) = ${cyan}443${none}"
  1529. echo
  1530. echo -e "$yellow 用户ID (User ID / UUID) = $cyan${uuid}$none"
  1531. echo
  1532. echo -e "$yellow 额外ID (Alter Id) = ${cyan}233${none}"
  1533. echo
  1534. echo -e "$yellow 传输协议 (Network) = ${cyan}${net}$none"
  1535. echo
  1536. echo -e "$yellow 伪装类型 (header type) = ${cyan}${header}$none"
  1537. echo
  1538. echo -e "$yellow 伪装域名 (host) = ${cyan}${domain}$none"
  1539. echo
  1540. echo -e "$yellow 路径 (path) = ${cyan}${_path}$none"
  1541. echo
  1542. echo -e "$yellow TLS (Enable TLS) = ${cyan}打开$none"
  1543. echo
  1544. elif [[ $v2ray_transport_opt == 17 ]]; then
  1545. echo
  1546. echo -e "$yellow 主机 (Hostname) = $cyan${ip}$none"
  1547. echo
  1548. echo -e "$yellow 端口 (Port) = $cyan$v2ray_port$none"
  1549. echo
  1550. echo -e "$yellow 用户名 (Username) = $cyan${username}$none"
  1551. echo
  1552. echo -e "$yellow 密码 (Password) = $cyan${userpass}$none"
  1553. echo
  1554. echo -e "$yellow Telegram 代理配置链接 = ${cyan}tg://socks?server=${ip}&port=${v2ray_port}&user=${username}&pass=${userpass}$none"
  1555. echo
  1556. echo " 这是 Socks5 协议相关的配置啦.... 不用在乎一些 V2Ray 客户端 怎么没有这些东东配置的"
  1557. echo
  1558. else
  1559. echo
  1560. echo -e "$yellow 地址 (Address) = $cyan${ip}$none"
  1561. echo
  1562. echo -e "$yellow 端口 (Port) = $cyan$v2ray_port$none"
  1563. echo
  1564. echo -e "$yellow 用户ID (User ID / UUID) = $cyan${uuid}$none"
  1565. echo
  1566. echo -e "$yellow 额外ID (Alter Id) = ${cyan}233${none}"
  1567. echo
  1568. echo -e "$yellow 传输协议 (Network) = ${cyan}${net}$none"
  1569. echo
  1570. echo -e "$yellow 伪装类型 (header type) = ${cyan}${header}$none"
  1571. echo
  1572. fi
  1573. if [[ $v2ray_transport_opt -ge 9 && $v2ray_transport_opt -le 15 ]] && [[ $is_blocked_ad ]]; then
  1574. echo " 备注: 动态端口已启用...广告拦截已开启..."
  1575. echo
  1576. elif [[ $v2ray_transport_opt -ge 9 && $v2ray_transport_opt -le 15 ]]; then
  1577. echo " 备注: 动态端口已启用..."
  1578. echo
  1579. elif [[ $is_blocked_ad ]]; then
  1580. echo " 备注: 广告拦截已开启.."
  1581. echo
  1582. fi
  1583. if [ $shadowsocks ]; then
  1584. local ss="ss://$(echo -n "${ssciphers}:${sspass}@${ip}:${ssport}" | base64 -w 0)#233blog_ss_${ip}"
  1585. echo
  1586. echo "---------- Shadowsocks 配置信息 -------------"
  1587. echo
  1588. echo -e "$yellow 服务器地址 = $cyan${ip}$none"
  1589. echo
  1590. echo -e "$yellow 服务器端口 = $cyan$ssport$none"
  1591. echo
  1592. echo -e "$yellow 密码 = $cyan$sspass$none"
  1593. echo
  1594. echo -e "$yellow 加密协议 = $cyan${ssciphers}$none"
  1595. echo
  1596. echo -e "$yellow SS 链接 = ${cyan}$ss$none"
  1597. echo
  1598. echo -e " 备注:$red Shadowsocks Win 4.0.6 $none客户端可能无法识别该 SS 链接"
  1599. echo
  1600. if [[ $v2ray_transport_opt == 17 ]]; then
  1601. echo -e " 温馨提示: 使用${cyan} v2ray ssqr ${none}即可生成 Shadowsocks 配置信息二维码"
  1602. echo
  1603. fi
  1604. fi
  1605.  
  1606. }
  1607. create_qr_link_ask() {
  1608. if [[ $shadowsocks && $v2ray_transport_opt != 17 ]]; then
  1609. echo
  1610. while :; do
  1611. echo -e "是否需要生成$yellow V2Ray 和 Shadowsocks $none配置信息二维码链接 [${magenta}Y/N$none]"
  1612. read -p "$(echo -e "默认 [${magenta}N$none]:")" y_n
  1613. [ -z $y_n ] && y_n="n"
  1614. if [[ $y_n == [Yy] ]]; then
  1615. get_qr_link 1
  1616. break
  1617. elif [[ $y_n == [Nn] ]]; then
  1618. rm -rf /etc/v2ray/vmess_qr.json
  1619. # rm -rf /etc/v2ray/shadowray_qr.txt
  1620. break
  1621. else
  1622. error
  1623. fi
  1624. done
  1625. elif [[ $v2ray_transport_opt != 17 ]]; then
  1626. echo
  1627. while :; do
  1628. echo -e "是否需要生成$yellow V2Ray 配置信息 $none二维码链接 [${magenta}Y/N$none]"
  1629. read -p "$(echo -e "默认 [${magenta}N$none]:")" y_n
  1630. [ -z $y_n ] && y_n="n"
  1631. if [[ $y_n == [Yy] ]]; then
  1632. get_qr_link
  1633. break
  1634. elif [[ $y_n == [Nn] ]]; then
  1635. rm -rf /etc/v2ray/vmess_qr.json
  1636. # rm -rf /etc/v2ray/shadowray_qr.txt
  1637. break
  1638. else
  1639. error
  1640. fi
  1641. done
  1642. fi
  1643. }
  1644. get_qr_link() {
  1645.  
  1646. echo
  1647. echo -e "$green 正在生成链接.... 稍等片刻即可....$none"
  1648. echo
  1649.  
  1650. if [[ $1 ]]; then
  1651. local random1=$(echo $RANDOM-$RANDOM-$RANDOM | base64 -w 0)
  1652. local random2=$(echo $RANDOM-$RANDOM-$RANDOM | base64 -w 0)
  1653. local vmess="vmess://$(cat /etc/v2ray/vmess_qr.json | tr -d '\n' | base64 -w 0)"
  1654. echo $vmess | tr -d '\n' >/etc/v2ray/vmess.txt
  1655. cat /etc/v2ray/vmess.txt | qrencode -s 50 -o /tmp/233blog_v2ray.png
  1656. local link1=$(curl -s --upload-file /tmp/233blog_v2ray.png "https://transfer.sh/${random1}_233blog_v2ray.png")
  1657. local ss="ss://$(echo -n "${ssciphers}:${sspass}@${ip}:${ssport}" | base64 -w 0)#233blog_ss_${ip}"
  1658. echo "${ss}" >/tmp/233blog_shadowsocks.txt
  1659. cat /tmp/233blog_shadowsocks.txt | qrencode -s 50 -o /tmp/233blog_shadowsocks.png
  1660. local link2=$(curl -s --upload-file /tmp/233blog_shadowsocks.png "https://transfer.sh/${random2}_233blog_shadowsocks.png")
  1661. if [[ $link1 && $link2 ]]; then
  1662. echo
  1663. echo "---------- V2Ray 二维码链接 -------------"
  1664. echo
  1665. echo -e "$yellow 适用于 V2RayNG v0.4.1+ / Kitsunebi = $cyan${link1}$none"
  1666. echo
  1667. echo
  1668. echo
  1669. echo "---------- Shadowsocks 二维码链接 -------------"
  1670. echo
  1671. echo -e "$yellow 链接 = $cyan${link2}$none"
  1672. echo
  1673. echo -e " 温馨提示...$red Shadowsocks Win 4.0.6 $none客户端可能无法识别该二维码"
  1674. echo
  1675. echo
  1676. echo "----------------------------------------------------------------"
  1677. echo
  1678. echo "备注...链接将在 14 天后失效"
  1679. echo
  1680. echo "提醒...请不要把链接分享出去...除非你有特别的理由...."
  1681. echo
  1682. else
  1683. echo
  1684. echo -e "$red 哎呀呀呀...出错咯...$none"
  1685. echo
  1686. echo -e " 请尝试使用${cyan} v2ray qr ${none}生成 V2Ray 配置信息二维码"
  1687. echo
  1688. echo -e " 请尝试使用${cyan} v2ray ssqr ${none}生成 Shadowsocks 配置信息二维码"
  1689. echo
  1690. fi
  1691.  
  1692. rm -rf /tmp/233blog_shadowsocks.png
  1693. rm -rf /tmp/233blog_shadowsocks.txt
  1694. else
  1695. local random1=$(echo $RANDOM-$RANDOM-$RANDOM | base64 -w 0)
  1696. local vmess="vmess://$(cat /etc/v2ray/vmess_qr.json | tr -d '\n' | base64 -w 0)"
  1697. echo $vmess | tr -d '\n' >/etc/v2ray/vmess.txt
  1698. cat /etc/v2ray/vmess.txt | qrencode -s 50 -o /tmp/233blog_v2ray.png
  1699. local link1=$(curl -s --upload-file /tmp/233blog_v2ray.png "https://transfer.sh/${random1}_233blog_v2ray.png")
  1700.  
  1701. if [[ $link1 ]]; then
  1702. echo
  1703. echo "---------- V2Ray 二维码链接 -------------"
  1704. echo
  1705.  
  1706. echo -e "$yellow 适用于 V2RayNG v0.4.1+ / Kitsunebi = $cyan${link1}$none"
  1707. echo
  1708. echo
  1709. echo
  1710. echo "----------------------------------------------------------------"
  1711. echo
  1712. echo "备注...链接将在 14 天后失效"
  1713. echo
  1714. echo "提醒...请不要把链接分享出去...除非你有特别的理由...."
  1715. echo
  1716. else
  1717. echo
  1718. echo -e "$red 哎呀呀呀...出错咯...请重试$none"
  1719. echo
  1720. echo -e " 请尝试使用${cyan} v2ray qr ${none}生成 V2Ray 配置信息二维码"
  1721. echo
  1722. fi
  1723. fi
  1724.  
  1725. rm -rf /tmp/233blog_v2ray.png
  1726. rm -rf /etc/v2ray/vmess_qr.json
  1727. rm -rf /etc/v2ray/vmess.txt
  1728.  
  1729. }
  1730.  
  1731. install() {
  1732. if [[ -f /usr/bin/v2ray/v2ray && -f /etc/v2ray/config.json ]] && [[ -f $backup && -d /etc/v2ray/233boy/v2ray ]]; then
  1733. echo
  1734. echo " 大佬...你已经安装 V2Ray 啦...无需重新安装"
  1735. echo
  1736. echo -e " $yellow输入 ${cyan}v2ray${none} $yellow即可管理 V2Ray${none}"
  1737. echo
  1738. exit 1
  1739. elif [[ -f /usr/bin/v2ray/v2ray && -f /etc/v2ray/config.json ]] && [[ -f /etc/v2ray/233blog_v2ray_backup.txt && -d /etc/v2ray/233boy/v2ray ]]; then
  1740. echo
  1741. echo " 大佬... 如果你需要继续安装.. 请先卸载旧版本"
  1742. echo
  1743. echo -e " $yellow输入 ${cyan}v2ray uninstall${none} $yellow即可卸载${none}"
  1744. echo
  1745. exit 1
  1746. fi
  1747. v2ray_config
  1748. blocked_hosts
  1749. shadowsocks_config
  1750. install_info
  1751. try_enable_bbr
  1752. [ $caddy ] && domain_check
  1753. install_v2ray
  1754. if [[ $caddy || $v2ray_port == "80" ]]; then
  1755. if [[ $cmd == "yum" ]]; then
  1756. [[ $(pgrep "httpd") ]] && systemctl stop httpd
  1757. [[ $(command -v httpd) ]] && yum remove httpd -y
  1758. else
  1759. [[ $(pgrep "apache2") ]] && service apache2 stop
  1760. [[ $(command -v apache2) ]] && apt-get remove apache2* -y
  1761. fi
  1762. fi
  1763. [ $caddy ] && install_caddy
  1764. get_ip
  1765. config
  1766. show_config_info
  1767. create_qr_link_ask
  1768. }
  1769. uninstall() {
  1770.  
  1771. if [[ -f /usr/bin/v2ray/v2ray && -f /etc/v2ray/config.json ]] && [[ -f $backup && -d /etc/v2ray/233boy/v2ray ]]; then
  1772. . $backup
  1773. while :; do
  1774. echo
  1775. read -p "$(echo -e "是否卸载 ${yellow}V2Ray$none [${magenta}Y/N$none]:")" uninstall_v2ray_ask
  1776. if [[ -z $uninstall_v2ray_ask ]]; then
  1777. error
  1778. else
  1779. case $uninstall_v2ray_ask in
  1780. Y | y)
  1781. is_uninstall_v2ray=true
  1782. echo
  1783. echo -e "$yellow 卸载 V2Ray = ${cyan}是${none}"
  1784. echo
  1785. break
  1786. ;;
  1787. N | n)
  1788. echo
  1789. echo -e "$red 卸载已取消...$none"
  1790. echo
  1791. break
  1792. ;;
  1793. *)
  1794. error
  1795. ;;
  1796. esac
  1797. fi
  1798. done
  1799.  
  1800. if [[ $caddy_status ]] && [[ -f /usr/local/bin/caddy && -f /etc/caddy/Caddyfile ]]; then
  1801. while :; do
  1802. echo
  1803. read -p "$(echo -e "是否卸载 ${yellow}Caddy$none [${magenta}Y/N$none]:")" uninstall_caddy_ask
  1804. if [[ -z $uninstall_caddy_ask ]]; then
  1805. error
  1806. else
  1807. case $uninstall_caddy_ask in
  1808. Y | y)
  1809. is_uninstall_caddy=true
  1810. echo
  1811. echo -e "$yellow 卸载 Caddy = ${cyan}是${none}"
  1812. echo
  1813. break
  1814. ;;
  1815. N | n)
  1816. echo
  1817. echo -e "$yellow 卸载 Caddy = ${cyan}否${none}"
  1818. echo
  1819. break
  1820. ;;
  1821. *)
  1822. error
  1823. ;;
  1824. esac
  1825. fi
  1826. done
  1827. fi
  1828.  
  1829. if [[ $is_uninstall_v2ray && $is_uninstall_caddy ]]; then
  1830. pause
  1831. echo
  1832.  
  1833. if [[ $shadowsocks_status ]]; then
  1834. del_port $ssport
  1835. fi
  1836.  
  1837. if [[ $v2ray_transport == "4" || $v2ray_transport == 16 ]]; then
  1838. del_port "80"
  1839. del_port "443"
  1840. del_port $v2ray_port
  1841. elif [[ $v2ray_transport -ge 9 && $v2ray_transport -le 15 ]]; then
  1842. del_port $v2ray_port
  1843. del_port "multiport"
  1844. else
  1845. del_port $v2ray_port
  1846. fi
  1847.  
  1848. [ $cmd == "apt-get" ] && rm -rf /etc/network/if-pre-up.d/iptables
  1849.  
  1850. v2ray_pid=$(ps ux | grep "/usr/bin/v2ray/v2ray" | grep -v grep | awk '{print $2}')
  1851. # [ $v2ray_pid ] && systemctl stop v2ray
  1852. [ $v2ray_pid ] && do_service stop v2ray
  1853.  
  1854. rm -rf /usr/bin/v2ray
  1855. rm -rf /usr/local/bin/v2ray
  1856. rm -rf /etc/v2ray
  1857. rm -rf /var/log/v2ray
  1858.  
  1859. caddy_pid=$(pgrep "caddy")
  1860. # [ $caddy_pid ] && systemctl stop caddy
  1861. [ $caddy_pid ] && do_service stop caddy
  1862. rm -rf /usr/local/bin/caddy
  1863. rm -rf /etc/caddy
  1864. rm -rf /etc/ssl/caddy
  1865.  
  1866. if [[ $systemd ]]; then
  1867. systemctl disable v2ray >/dev/null 2>&1
  1868. rm -rf /lib/systemd/system/v2ray.service
  1869. systemctl disable caddy >/dev/null 2>&1
  1870. rm -rf /lib/systemd/system/caddy.service
  1871. else
  1872. update-rc.d -f caddy remove >/dev/null 2>&1
  1873. update-rc.d -f v2ray remove >/dev/null 2>&1
  1874. rm -rf /etc/init.d/caddy
  1875. rm -rf /etc/init.d/v2ray
  1876. fi
  1877.  
  1878. # clear
  1879. echo
  1880. echo -e "$green V2Ray 卸载完成啦 ....$none"
  1881. echo
  1882. echo "如果你觉得这个脚本有哪些地方不够好的话...请告诉我"
  1883. echo
  1884. echo "反馈问题: https://github.com/233boy/v2ray/issus"
  1885. echo
  1886.  
  1887. elif [[ $is_uninstall_v2ray ]]; then
  1888. pause
  1889. echo
  1890.  
  1891. if [[ $shadowsocks_status ]]; then
  1892. del_port $ssport
  1893. fi
  1894.  
  1895. if [[ $v2ray_transport == "4" || $v2ray_transport == 16 ]]; then
  1896. del_port "80"
  1897. del_port "443"
  1898. del_port $v2ray_port
  1899. elif [[ $v2ray_transport -ge 9 && $v2ray_transport -le 15 ]]; then
  1900. del_port $v2ray_port
  1901. del_port "multiport"
  1902. else
  1903. del_port $v2ray_port
  1904. fi
  1905.  
  1906. [ $cmd == "apt-get" ] && rm -rf /etc/network/if-pre-up.d/iptables
  1907.  
  1908. v2ray_pid=$(ps ux | grep "/usr/bin/v2ray/v2ray" | grep -v grep | awk '{print $2}')
  1909. # [ $v2ray_pid ] && systemctl stop v2ray
  1910. [ $v2ray_pid ] && do_service stop v2ray
  1911. rm -rf /usr/bin/v2ray
  1912. rm -rf /usr/local/bin/v2ray
  1913. rm -rf /etc/v2ray
  1914. rm -rf /var/log/v2ray
  1915. if [[ $systemd ]]; then
  1916. systemctl disable v2ray >/dev/null 2>&1
  1917. rm -rf /lib/systemd/system/v2ray.service
  1918. else
  1919. update-rc.d -f v2ray remove >/dev/null 2>&1
  1920. rm -rf /etc/init.d/v2ray
  1921. fi
  1922. # clear
  1923. echo
  1924. echo -e "$green V2Ray 卸载完成啦 ....$none"
  1925. echo
  1926. echo "如果你觉得这个脚本有哪些地方不够好的话...请告诉我"
  1927. echo
  1928. echo "反馈问题: https://github.com/233boy/v2ray/issus"
  1929. echo
  1930.  
  1931. fi
  1932. elif [[ -f /usr/bin/v2ray/v2ray && -f /etc/v2ray/config.json ]] && [[ -f /etc/v2ray/233blog_v2ray_backup.txt && -d /etc/v2ray/233boy/v2ray ]]; then
  1933. backup="/etc/v2ray/233blog_v2ray_backup.txt"
  1934. while :; do
  1935. echo
  1936. read -p "$(echo -e "是否卸载 ${yellow}V2Ray$none [${magenta}Y/N$none]:")" uninstall_v2ray_ask
  1937. if [[ -z $uninstall_v2ray_ask ]]; then
  1938. error
  1939. else
  1940. case $uninstall_v2ray_ask in
  1941. Y | y)
  1942. is_uninstall_v2ray=true
  1943. echo
  1944. echo -e "$yellow 卸载 V2Ray = ${cyan}是${none}"
  1945. echo
  1946. break
  1947. ;;
  1948. N | n)
  1949. echo
  1950. echo -e "$red 卸载已取消...$none"
  1951. echo
  1952. break
  1953. ;;
  1954. *)
  1955. error
  1956. ;;
  1957. esac
  1958. fi
  1959. done
  1960. if [[ $(sed -n '29p' $backup) == "true" ]]; then
  1961. caddy_installed=true
  1962. fi
  1963.  
  1964. if [[ $caddy_installed ]] && [[ -f /usr/local/bin/caddy && -f /etc/caddy/Caddyfile ]]; then
  1965. while :; do
  1966. echo
  1967. read -p "$(echo -e "是否卸载 ${yellow}Caddy$none [${magenta}Y/N$none]:")" uninstall_caddy_ask
  1968. if [[ -z $uninstall_caddy_ask ]]; then
  1969. error
  1970. else
  1971. case $uninstall_caddy_ask in
  1972. Y | y)
  1973. is_uninstall_caddy=true
  1974. echo
  1975. echo -e "$yellow 卸载 Caddy = ${cyan}是${none}"
  1976. echo
  1977. break
  1978. ;;
  1979. N | n)
  1980. echo
  1981. echo -e "$yellow 卸载 Caddy = ${cyan}否${none}"
  1982. echo
  1983. break
  1984. ;;
  1985. *)
  1986. error
  1987. ;;
  1988. esac
  1989. fi
  1990. done
  1991. fi
  1992.  
  1993. if [[ $is_uninstall_v2ray && $is_uninstall_caddy ]]; then
  1994. pause
  1995. echo
  1996.  
  1997. shadowsocks=$(sed -n '31p' $backup)
  1998.  
  1999. if [[ $shadowsocks == "true" ]]; then
  2000. ssport=$(sed -n '33p' $backup)
  2001. del_port $ssport
  2002. fi
  2003.  
  2004. v2ray_transport_opt=$(sed -n '17p' $backup)
  2005. v2ray_port=$(sed -n '19p' $backup)
  2006. if [[ $v2ray_transport_opt == "4" ]]; then
  2007. del_port "80"
  2008. del_port "443"
  2009. del_port $v2ray_port
  2010. elif [[ $v2ray_transport_opt -ge 9 ]]; then
  2011. del_port $v2ray_port
  2012. del_port "multiport"
  2013. else
  2014. del_port $v2ray_port
  2015. fi
  2016.  
  2017. [ $cmd == "apt-get" ] && rm -rf /etc/network/if-pre-up.d/iptables
  2018.  
  2019. v2ray_pid=$(ps ux | grep "/usr/bin/v2ray/v2ray" | grep -v grep | awk '{print $2}')
  2020. # [ $v2ray_pid ] && systemctl stop v2ray
  2021. [ $v2ray_pid ] && do_service stop v2ray
  2022.  
  2023. rm -rf /usr/bin/v2ray
  2024. rm -rf /usr/local/bin/v2ray
  2025. rm -rf /etc/v2ray
  2026. rm -rf /var/log/v2ray
  2027.  
  2028. caddy_pid=$(pgrep "caddy")
  2029. # [ $caddy_pid ] && systemctl stop caddy
  2030. [ $caddy_pid ] && do_service stop caddy
  2031. rm -rf /usr/local/bin/caddy
  2032. rm -rf /etc/caddy
  2033. rm -rf /etc/ssl/caddy
  2034.  
  2035. if [[ $systemd ]]; then
  2036. systemctl disable v2ray >/dev/null 2>&1
  2037. rm -rf /lib/systemd/system/v2ray.service
  2038. systemctl disable caddy >/dev/null 2>&1
  2039. rm -rf /lib/systemd/system/caddy.service
  2040. else
  2041. update-rc.d -f caddy remove >/dev/null 2>&1
  2042. update-rc.d -f v2ray remove >/dev/null 2>&1
  2043. rm -rf /etc/init.d/caddy
  2044. rm -rf /etc/init.d/v2ray
  2045. fi
  2046.  
  2047. # clear
  2048. echo
  2049. echo -e "$green V2Ray 卸载完成啦 ....$none"
  2050. echo
  2051. echo "如果你觉得这个脚本有哪些地方不够好的话...请告诉我"
  2052. echo
  2053. echo "反馈问题: https://github.com/233boy/v2ray/issus"
  2054. echo
  2055.  
  2056. elif [[ $is_uninstall_v2ray ]]; then
  2057. pause
  2058. echo
  2059.  
  2060. shadowsocks=$(sed -n '31p' $backup)
  2061.  
  2062. if [[ $shadowsocks == "true" ]]; then
  2063. ssport=$(sed -n '33p' $backup)
  2064. del_port $ssport
  2065. fi
  2066.  
  2067. v2ray_transport_opt=$(sed -n '17p' $backup)
  2068. v2ray_port=$(sed -n '19p' $backup)
  2069. if [[ $v2ray_transport_opt == "4" ]]; then
  2070. del_port "80"
  2071. del_port "443"
  2072. del_port $v2ray_port
  2073. elif [[ $v2ray_transport_opt -ge 9 ]]; then
  2074. del_port $v2ray_port
  2075. del_port "multiport"
  2076. else
  2077. del_port $v2ray_port
  2078. fi
  2079.  
  2080. [ $cmd == "apt-get" ] && rm -rf /etc/network/if-pre-up.d/iptables
  2081.  
  2082. v2ray_pid=$(ps ux | grep "/usr/bin/v2ray/v2ray" | grep -v grep | awk '{print $2}')
  2083. # [ $v2ray_pid ] && systemctl stop v2ray
  2084. [ $v2ray_pid ] && do_service stop v2ray
  2085. rm -rf /usr/bin/v2ray
  2086. rm -rf /usr/local/bin/v2ray
  2087. rm -rf /etc/v2ray
  2088. rm -rf /var/log/v2ray
  2089. if [[ $systemd ]]; then
  2090. systemctl disable v2ray >/dev/null 2>&1
  2091. rm -rf /lib/systemd/system/v2ray.service
  2092. else
  2093. update-rc.d -f v2ray remove >/dev/null 2>&1
  2094. rm -rf /etc/init.d/v2ray
  2095. fi
  2096. # clear
  2097. echo
  2098. echo -e "$green V2Ray 卸载完成啦 ....$none"
  2099. echo
  2100. echo "如果你觉得这个脚本有哪些地方不够好的话...请告诉我"
  2101. echo
  2102. echo "反馈问题: https://github.com/233boy/v2ray/issus"
  2103. echo
  2104.  
  2105. fi
  2106. else
  2107. echo -e "
  2108. $red 大胸弟...你貌似毛有安装 V2Ray ....卸载个鸡鸡哦...$none
  2109.  
  2110. 备注...仅支持卸载使用我 (233blog.com) 提供的 V2Ray 一键安装脚本
  2111. " && exit 1
  2112. fi
  2113.  
  2114. }
  2115.  
  2116. args=$1
  2117. [ -z $1 ] && args="online"
  2118. case $args in
  2119. online)
  2120. #hello world
  2121. ;;
  2122. local)
  2123. local_install=true
  2124. ;;
  2125. *)
  2126. echo
  2127. echo -e " 大佬...你输入的这个参数 <$red $args $none> ...这个是什么鬼啊...脚本不认识它哇"
  2128. echo
  2129. echo -e " 这个辣鸡脚本仅支持输入$green local / online $none参数"
  2130. echo
  2131. echo -e " 输入$yellow local $none即是使用本地安装"
  2132. echo
  2133. echo -e " 输入$yellow online $none即是使用在线安装 (默认)"
  2134. echo
  2135. exit 1
  2136. ;;
  2137. esac
  2138.  
  2139. clear
  2140. while :; do
  2141. echo
  2142. echo "........... V2Ray 一键安装脚本 & 管理脚本 by 233blog.com .........."
  2143. echo
  2144. echo "帮助说明: https://233blog.com/post/16/"
  2145. echo
  2146. echo "搭建教程: https://233blog.com/post/17/"
  2147. echo
  2148. echo " 1. 安装"
  2149. echo
  2150. echo " 2. 卸载"
  2151. echo
  2152. if [[ $local_install ]]; then
  2153. echo -e "$yellow 温馨提示.. 本地安装已启用 ..$none"
  2154. echo
  2155. fi
  2156. read -p "$(echo -e "请选择 [${magenta}1-2$none]:")" choose
  2157. case $choose in
  2158. 1)
  2159. install
  2160. break
  2161. ;;
  2162. 2)
  2163. uninstall
  2164. break
  2165. ;;
  2166. *)
  2167. error
  2168. ;;
  2169. esac
  2170. done
  2171.  
  2172. from https://raw.githubusercontent.com/233boy/v2ray/master/install.sh
Add Comment
Please, Sign In to add comment