From 15bab2b2ed195af59bf1989cd0ba46f0717f1f6c Mon Sep 17 00:00:00 2001 From: 233boy <31657650+233boy@users.noreply.github.com> Date: Wed, 25 Jun 2025 11:03:26 +0800 Subject: [PATCH] support set log level --- src/core.sh | 23 +++++++++++---------- src/download.sh | 2 +- src/init.sh | 4 ++-- src/log.sh | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ src/old.sh | 2 +- v2ray.sh | 2 +- 6 files changed, 71 insertions(+), 16 deletions(-) create mode 100644 src/log.sh diff --git a/src/core.sh b/src/core.sh index c0ce0b3..b522ff6 100644 --- a/src/core.sh +++ b/src/core.sh @@ -167,7 +167,7 @@ show_list() { is_test() { case $1 in number) - echo $2 | egrep '^[1-9][0-9]?+$' + echo $2 | grep -E '^[1-9][0-9]?+$' ;; port) if [[ $(is_test number $2) ]]; then @@ -178,13 +178,13 @@ is_test() { [[ $(is_port_used $2) && ! $is_cant_test_port ]] && echo ok ;; domain) - echo $2 | egrep -i '^\w(\w|\-|\.)?+\.\w+$' + echo $2 | grep -E -i '^\w(\w|\-|\.)?+\.\w+$' ;; path) - echo $2 | egrep -i '^\/\w(\w|\-|\/)?+\w$' + echo $2 | grep -E -i '^\/\w(\w|\-|\/)?+\w$' ;; uuid) - echo $2 | egrep -i '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' + echo $2 | grep -E -i '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' ;; esac @@ -911,7 +911,7 @@ add() { ;; *) for v in ${protocol_list[@]}; do - [[ $(egrep -i "^$is_lower$" <<<$v) ]] && is_new_protocol=$v && break + [[ $(grep -E -i "^$is_lower$" <<<$v) ]] && is_new_protocol=$v && break done [[ ! $is_new_protocol ]] && err "无法识别 ($1), 请使用: $is_core add [protocol] [args... | auto]" @@ -1061,7 +1061,7 @@ add() { ask set_header_type } for v in ${is_tmp_list[@]}; do - [[ $(egrep -i "^${is_use_header_type}${is_use_method}$" <<<$v) ]] && is_tmp_use_type=$v && break + [[ $(grep -E -i "^${is_use_header_type}${is_use_method}$" <<<$v) ]] && is_tmp_use_type=$v && break done [[ ! ${is_tmp_use_type} ]] && { warn "(${is_use_header_type}${is_use_method}) 不是一个可用的${is_tmp_use_name}." @@ -1198,8 +1198,8 @@ get() { file) is_file_str=$2 [[ ! $is_file_str ]] && is_file_str='.json$' - # is_all_json=("$(ls $is_conf_dir | egrep $is_file_str)") - readarray -t is_all_json <<<"$(ls $is_conf_dir | egrep -i "$is_file_str" | sed '/dynamic-port-.*-link/d' | head -233)" # limit max 233 lines for show. + # is_all_json=("$(ls $is_conf_dir | grep -E $is_file_str)") + readarray -t is_all_json <<<"$(ls $is_conf_dir | grep -E -i "$is_file_str" | sed '/dynamic-port-.*-link/d' | head -233)" # limit max 233 lines for show. [[ ! $is_all_json ]] && err "无法找到相关的配置文件: $2" [[ ${#is_all_json[@]} -eq 1 ]] && is_config_file=$is_all_json && is_auto_get_config=1 [[ ! $is_config_file ]] && { @@ -1244,7 +1244,7 @@ get() { [[ $? != 0 ]] && err "无法读取动态端口文件: $is_dynamic_port" fi if [[ $is_caddy && $host && -f $is_caddy_conf/$host.conf ]]; then - is_tmp_https_port=$(egrep -o "$host:[1-9][0-9]?+" $is_caddy_conf/$host.conf | sed s/.*://) + is_tmp_https_port=$(grep -E -o "$host:[1-9][0-9]?+" $is_caddy_conf/$host.conf | sed s/.*://) fi [[ $is_tmp_https_port ]] && is_https_port=$is_tmp_https_port [[ $is_client && $host ]] && port=$is_https_port @@ -1849,8 +1849,9 @@ main() { get_ip msg $ip ;; - log | logerr) - get $@ + log | logerr | errlog) + load log.sh + log_set $@ ;; url | qr) url_qr $@ diff --git a/src/download.sh b/src/download.sh index de72495..21c3364 100644 --- a/src/download.sh +++ b/src/download.sh @@ -13,7 +13,7 @@ get_latest_version() { url="https://api.github.com/repos/$is_caddy_repo/releases/latest?v=$RANDOM" ;; esac - latest_ver=$(_wget -qO- $url | grep tag_name | egrep -o 'v([0-9.]+)') + latest_ver=$(_wget -qO- $url | grep tag_name | grep -E -o 'v([0-9.]+)') [[ ! $latest_ver ]] && { err "获取 ${name} 最新版本失败." } diff --git a/src/init.sh b/src/init.sh index c9f77e4..064ed9a 100644 --- a/src/init.sh +++ b/src/init.sh @@ -130,8 +130,8 @@ if [[ -f $is_caddy_bin && -d $is_caddy_dir && $is_caddy_service ]]; then systemctl restart caddy & } is_caddy_ver=$($is_caddy_bin version | head -n1 | cut -d " " -f1) - is_tmp_http_port=$(egrep '^ {2,}http_port|^http_port' $is_caddyfile | egrep -o [0-9]+) - is_tmp_https_port=$(egrep '^ {2,}https_port|^https_port' $is_caddyfile | egrep -o [0-9]+) + 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 diff --git a/src/log.sh b/src/log.sh new file mode 100644 index 0000000..863e784 --- /dev/null +++ b/src/log.sh @@ -0,0 +1,54 @@ +is_log_level_list=( + debug + info + warning + error + none + del +) +log_set() { + if [[ $2 ]]; then + for v in ${is_log_level_list[@]}; do + [[ $(grep -E -i "^${2,,}$" <<<$v) ]] && is_log_level_use=$v && break + done + [[ ! $is_log_level_use ]] && { + err "无法识别 log 参数: $@ \n请使用 $is_core log [${is_log_level_list[@]}] 进行相关设定.\n备注: del 参数仅临时删除 log 文件; none 参数将不会生成 log 文件." + } + case $is_log_level_use in + del) + rm -rf $is_log_dir/*.log + msg "\n $(_green 已临时删除 log 文件, 如果你想要完全禁止生成 log 文件请使用: $is_core log none)\n" + ;; + none) + rm -rf $is_log_dir/*.log + cat <<<$(jq '.log={"loglevel":"none"}' $is_config_json) >$is_config_json + ;; + *) + cat <<<$(jq '.log={access:"/var/log/'$is_core'/access.log",error:"/var/log/'$is_core'/error.log",loglevel:"'$is_log_level_use'"}' $is_config_json) >$is_config_json + ;; + esac + + manage restart & + [[ $2 != 'del' ]] && msg "\n已更新 Log 设定为: $(_green $is_log_level_use)\n" + else + case $1 in + log) + if [[ -f $is_log_dir/access.log ]]; then + msg "\n 提醒: 按 $(_green Ctrl + C) 退出\n" + tail -f $is_log_dir/access.log + else + err "无法找到 log 文件." + fi + ;; + *) + if [[ -f $is_log_dir/error.log ]]; then + msg "\n 提醒: 按 $(_green Ctrl + C) 退出\n" + tail -f $is_log_dir/error.log + else + err "无法找到 log 文件." + fi + ;; + esac + + fi +} \ No newline at end of file diff --git a/src/old.sh b/src/old.sh index 2e66194..4138b77 100644 --- a/src/old.sh +++ b/src/old.sh @@ -100,7 +100,7 @@ if [[ $is_old_use ]]; then is_dont_show_info=1 if [[ $shadowsocks ]]; then for v in ${ss_method_list[@]}; do - [[ $(egrep -i "^${ssciphers}$" <<<$v) ]] && ss_method=$v && break + [[ $(grep -E -i "^${ssciphers}$" <<<$v) ]] && ss_method=$v && break done if [[ $ss_method ]]; then add ss $ssport $sspass $ss_method diff --git a/v2ray.sh b/v2ray.sh index f8eab98..9d96ed1 100644 --- a/v2ray.sh +++ b/v2ray.sh @@ -1,6 +1,6 @@ #!/bin/bash args=$@ -is_sh_ver=v4.24 +is_sh_ver=v4.25 . /etc/v2ray/sh/src/init.sh