| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- #!/bin/bash
- author=233boy
- # github=https://github.com/233boy/sing-box
- # bash fonts colors
- red='\e[31m'
- yellow='\e[33m'
- gray='\e[90m'
- green='\e[92m'
- blue='\e[94m'
- magenta='\e[95m'
- cyan='\e[96m'
- none='\e[0m'
- _red() { echo -e ${red}$@${none}; }
- _blue() { echo -e ${blue}$@${none}; }
- _cyan() { echo -e ${cyan}$@${none}; }
- _green() { echo -e ${green}$@${none}; }
- _yellow() { echo -e ${yellow}$@${none}; }
- _magenta() { echo -e ${magenta}$@${none}; }
- _red_bg() { echo -e "\e[41m$@${none}"; }
- _rm() {
- rm -rf "$@"
- }
- _cp() {
- cp -rf "$@"
- }
- _sed() {
- sed -i "$@"
- }
- _mkdir() {
- mkdir -p "$@"
- }
- is_err=$(_red_bg 错误!)
- is_warn=$(_red_bg 警告!)
- err() {
- echo -e "\n$is_err $@\n"
- [[ $is_dont_auto_exit ]] && return
- exit 1
- }
- warn() {
- echo -e "\n$is_warn $@\n"
- }
- # load bash script.
- load() {
- . $is_sh_dir/src/$1
- }
- # wget add --no-check-certificate
- _wget() {
- # [[ $proxy ]] && export https_proxy=$proxy
- wget --no-check-certificate "$@"
- }
- # yum or apt-get
- cmd=$(type -P apt-get || type -P yum)
- # x64
- case $(arch) in
- amd64 | x86_64)
- is_arch="amd64"
- ;;
- *aarch64* | *armv8*)
- is_arch="arm64"
- ;;
- *)
- err "此脚本仅支持 64 位系统..."
- ;;
- esac
- is_core=sing-box
- is_core_name=sing-box
- is_core_dir=/develop/$is_core
- is_core_bin=$is_core_dir/bin/$is_core
- is_core_repo=SagerNet/$is_core
- is_conf_dir=$is_core_dir/conf
- is_log_dir=/var/log/$is_core
- is_sh_bin=/usr/local/bin/$is_core
- is_sh_dir=$is_core_dir/sh
- is_sh_repo=$author/$is_core
- is_pkg="wget unzip tar qrencode"
- is_config_json=$is_core_dir/config.json
- is_caddy_bin=/usr/local/bin/caddy
- is_caddy_dir=/etc/caddy
- is_caddy_repo=caddyserver/caddy
- is_caddyfile=$is_caddy_dir/Caddyfile
- is_caddy_conf=$is_caddy_dir/$author
- is_caddy_service=$(systemctl list-units --full -all | grep caddy.service)
- is_http_port=80
- is_https_port=443
- # core ver
- is_core_ver=$($is_core_bin version | head -n1 | cut -d " " -f3)
- # tmp tls key
- is_tls_cer=$is_core_dir/bin/tls.cer
- is_tls_key=$is_core_dir/bin/tls.key
- [[ ! -f $is_tls_cer || ! -f $is_tls_key ]] && {
- is_tls_tmp=${is_tls_key/key/tmp}
- $is_core_bin generate tls-keypair tls -m 456 >$is_tls_tmp
- awk '/BEGIN PRIVATE KEY/,/END PRIVATE KEY/' $is_tls_tmp >$is_tls_key
- awk '/BEGIN CERTIFICATE/,/END CERTIFICATE/' $is_tls_tmp >$is_tls_cer
- rm $is_tls_tmp
- }
- if [[ $(pgrep -f $is_core_bin) ]]; then
- is_core_status=$(_green running)
- else
- is_core_status=$(_red_bg stopped)
- is_core_stop=1
- fi
- if [[ -f $is_caddy_bin && -d $is_caddy_dir && $is_caddy_service ]]; then
- is_caddy=1
- # fix caddy run; ver >= 2.8.2
- [[ ! $(grep '\-\-adapter caddyfile' /lib/systemd/system/caddy.service) ]] && {
- load systemd.sh
- install_service caddy
- systemctl restart caddy &
- }
- is_caddy_ver=$($is_caddy_bin version | head -n1 | cut -d " " -f1)
- is_tmp_http_port=$(grep -E '^ {2,}http_port|^http_port' $is_caddyfile | grep -E -o [0-9]+)
- is_tmp_https_port=$(grep -E '^ {2,}https_port|^https_port' $is_caddyfile | grep -E -o [0-9]+)
- [[ $is_tmp_http_port ]] && is_http_port=$is_tmp_http_port
- [[ $is_tmp_https_port ]] && is_https_port=$is_tmp_https_port
- if [[ $(pgrep -f $is_caddy_bin) ]]; then
- is_caddy_status=$(_green running)
- else
- is_caddy_status=$(_red_bg stopped)
- is_caddy_stop=1
- fi
- fi
- load core.sh
- [[ ! $args ]] && args=main
- main $args
|