mirror of
https://github.com/233boy/sing-box.git
synced 2026-05-02 22:04:40 +08:00
142 lines
3.3 KiB
Bash
142 lines
3.3 KiB
Bash
#!/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 "$@"
|
|
}
|
|
|
|
# apt-get, yum or zypper
|
|
cmd=$(type -P apt-get || type -P yum || type -P zypper)
|
|
|
|
# x64
|
|
case $(uname -m) 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=/etc/$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
|