~统一缩进
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -22,7 +22,7 @@ set_core_config() {
|
||||
LC_ALL=C awk '{
|
||||
f1 = $1
|
||||
f2 = $2
|
||||
gsub(/\360[\200-\277][\200-\277][\200-\277]/,"",f1)
|
||||
gsub(/\360[\200-\277][\200-\277][\200-\277]/,"",f1)
|
||||
if (length(f1) > 12)
|
||||
f1 = substr(f1, 1, 8) ".."
|
||||
if (length(f2) > 30)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -758,7 +758,7 @@ debug() {
|
||||
. "$CRASHDIR"/libs/core_tools.sh && core_find && "$TMPDIR"/CrashCore merge "$TMPDIR"/debug.json -C "$TMPDIR"/jsons && line_break
|
||||
comp_box "\033[32m$TOOLS_MERGE_OK\033[0m"
|
||||
[ "$TMPDIR" = "$BINDIR" ] && rm -rf "$TMPDIR"/CrashCore
|
||||
debug
|
||||
debug
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
|
||||
@@ -1111,7 +1111,7 @@ saveserver() {
|
||||
setserver() {
|
||||
while true; do
|
||||
line_break
|
||||
LISTFILE="$CRASHDIR"/configs/servers_"$i18n".list
|
||||
LISTFILE="$CRASHDIR"/configs/servers_"$i18n".list
|
||||
[ -z "$release_type" ] && release_name=$UPG_SOURCE_UNSET
|
||||
[ -n "$release_type" ] && release_name="$release_type$UPG_SOURCE_ROLLBACK_TAG"
|
||||
[ "$release_type" = stable ] && release_name=$UPG_SOURCE_STABLE_TEXT
|
||||
|
||||
@@ -19,19 +19,19 @@ OFFSET=0
|
||||
|
||||
### --- 基础函数 --- ###
|
||||
web_download(){
|
||||
setproxy
|
||||
if curl --version >/dev/null 2>&1; then
|
||||
curl -kfsSl "$1" -o "$2"
|
||||
else
|
||||
wget -Y on -q --timeout=3 -O "$2" "$1"
|
||||
fi
|
||||
setproxy
|
||||
if curl --version >/dev/null 2>&1; then
|
||||
curl -kfsSl "$1" -o "$2"
|
||||
else
|
||||
wget -Y on -q --timeout=3 -O "$2" "$1"
|
||||
fi
|
||||
}
|
||||
web_upload(){
|
||||
curl -ksSfl -X POST --connect-timeout 20 "$API/sendDocument" -F "chat_id=$TG_CHATID" -F "document=@$1" >/dev/null
|
||||
curl -ksSfl -X POST --connect-timeout 20 "$API/sendDocument" -F "chat_id=$TG_CHATID" -F "document=@$1" >/dev/null
|
||||
}
|
||||
send_msg(){
|
||||
TEXT="$1"
|
||||
web_json_post "$API/sendMessage" "{\"chat_id\":\"$TG_CHATID\",\"text\":\"$TEXT\",\"parse_mode\":\"Markdown\"}"
|
||||
web_json_post "$API/sendMessage" "{\"chat_id\":\"$TG_CHATID\",\"text\":\"$TEXT\",\"parse_mode\":\"Markdown\"}"
|
||||
}
|
||||
send_help(){
|
||||
TEXT=$(cat <<EOF
|
||||
@@ -48,18 +48,18 @@ https://dler.pro/auth/register?affid=89698
|
||||
https://pub.bigmeok.me?code=2PuWY9I7
|
||||
EOF
|
||||
)
|
||||
send_msg "$TEXT"
|
||||
send_msg "$TEXT"
|
||||
}
|
||||
send_menu(){
|
||||
#获取运行状态
|
||||
PID=$(pidof CrashCore | awk '{print $NF}')
|
||||
if [ -n "$PID" ]; then
|
||||
run="$BOT_TG_RUN_ON"
|
||||
running_status
|
||||
else
|
||||
run="$BOT_TG_RUN_OFF"
|
||||
fi
|
||||
corename=$(echo $crashcore | sed 's/singboxr/SingBoxR/' | sed 's/singbox/SingBox/' | sed 's/clash/Clash/' | sed 's/meta/Mihomo/')
|
||||
#获取运行状态
|
||||
PID=$(pidof CrashCore | awk '{print $NF}')
|
||||
if [ -n "$PID" ]; then
|
||||
run="$BOT_TG_RUN_ON"
|
||||
running_status
|
||||
else
|
||||
run="$BOT_TG_RUN_OFF"
|
||||
fi
|
||||
corename=$(echo $crashcore | sed 's/singboxr/SingBoxR/' | sed 's/singbox/SingBox/' | sed 's/clash/Clash/' | sed 's/meta/Mihomo/')
|
||||
TEXT=$(cat <<EOF
|
||||
*$BOT_TG_WELCOME*_${versionsh_l}_
|
||||
$corename$BOT_TG_SERVICE$run
|
||||
@@ -78,7 +78,7 @@ EOF
|
||||
],
|
||||
[
|
||||
{"text":"$BOT_TG_BTN_LOG","callback_data":"readlog"},
|
||||
{"text":"$BOT_TG_BTN_TRANSFER","callback_data":"transport"}
|
||||
{"text":"$BOT_TG_BTN_TRANSFER","callback_data":"transport"}
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -89,31 +89,31 @@ web_json_post "$API/sendMessage" "{\"chat_id\":\"$TG_CHATID\",\"text\":\"$TEXT\"
|
||||
### --- 文件传输 --- ###
|
||||
send_transport_menu(){
|
||||
TEXT="$BOT_TG_SELECT_FILE"
|
||||
if echo "$crashcore" | grep -q 'singbox';then
|
||||
config_type=json
|
||||
else
|
||||
config_type=yaml
|
||||
fi
|
||||
if echo "$crashcore" | grep -q 'singbox';then
|
||||
config_type=json
|
||||
else
|
||||
config_type=yaml
|
||||
fi
|
||||
|
||||
if curl -h >/dev/null 2>&1;then
|
||||
CURL_KB=$(cat <<EOF
|
||||
[
|
||||
if curl -h >/dev/null 2>&1;then
|
||||
CURL_KB=$(cat <<EOF
|
||||
[
|
||||
{"text":"$BOT_TG_BTN_GET_LOG","callback_data":"ts_get_log"},
|
||||
{"text":"$BOT_TG_BTN_GET_BAK","callback_data":"ts_get_bak"},
|
||||
{"text":"$BOT_TG_BTN_GET_CFG","callback_data":"ts_get_ccf"}
|
||||
],
|
||||
EOF
|
||||
)
|
||||
else
|
||||
CURL_KB='[{"text":"$BOT_TG_NO_CURL","callback_data":"noop"}],'
|
||||
fi
|
||||
else
|
||||
CURL_KB='[{"text":"$BOT_TG_NO_CURL","callback_data":"noop"}],'
|
||||
fi
|
||||
MENU=$(cat <<EOF
|
||||
{
|
||||
"inline_keyboard":[
|
||||
$CURL_KB
|
||||
$CURL_KB
|
||||
[
|
||||
{"text":"$BOT_TG_BTN_UP_CORE","callback_data":"ts_up_core"},
|
||||
{"text":"$BOT_TG_BTN_UP_BAK","callback_data":"ts_up_bak"},
|
||||
{"text":"$BOT_TG_BTN_UP_BAK","callback_data":"ts_up_bak"},
|
||||
{"text":"$BOT_TG_BTN_UP_CFG","callback_data":"ts_up_ccf"}
|
||||
]
|
||||
]
|
||||
@@ -125,54 +125,54 @@ web_json_post "$API/sendMessage" "{\"chat_id\":\"$TG_CHATID\",\"text\":\"$TEXT\"
|
||||
|
||||
}
|
||||
process_file(){
|
||||
case "$FILE_TYPE" in
|
||||
1)
|
||||
. "$CRASHDIR"/libs/core_tools.sh
|
||||
core_check "$TMPDIR/$FILE_NAME" && res="$BOT_TG_UPLOAD_OK" || res="$BOT_TG_UPLOAD_FAIL"
|
||||
send_msg "$BOT_TG_CORE_UPDATE$res"
|
||||
sleep 2
|
||||
"$CRASHDIR"/start.sh start
|
||||
;;
|
||||
2)
|
||||
tar -zxf "$TMPDIR/$FILE_NAME" -C "$CRASHDIR"/configs && res="$BOT_TG_CFG_RESTORED" || res="$BOT_TG_RESTORE_FAIL"
|
||||
send_msg "$res"
|
||||
;;
|
||||
3)
|
||||
mv -f "$TMPDIR/$FILE_NAME" "$CRASHDIR/${config_type}s/" && res="$BOT_TG_CFG_UPLOADED" || res="$BOT_TG_UPLOAD_FAIL2"
|
||||
send_msg "$res"
|
||||
;;
|
||||
esac
|
||||
rm -f "$TMPDIR/$FILE_NAME"
|
||||
send_menu
|
||||
case "$FILE_TYPE" in
|
||||
1)
|
||||
. "$CRASHDIR"/libs/core_tools.sh
|
||||
core_check "$TMPDIR/$FILE_NAME" && res="$BOT_TG_UPLOAD_OK" || res="$BOT_TG_UPLOAD_FAIL"
|
||||
send_msg "$BOT_TG_CORE_UPDATE$res"
|
||||
sleep 2
|
||||
"$CRASHDIR"/start.sh start
|
||||
;;
|
||||
2)
|
||||
tar -zxf "$TMPDIR/$FILE_NAME" -C "$CRASHDIR"/configs && res="$BOT_TG_CFG_RESTORED" || res="$BOT_TG_RESTORE_FAIL"
|
||||
send_msg "$res"
|
||||
;;
|
||||
3)
|
||||
mv -f "$TMPDIR/$FILE_NAME" "$CRASHDIR/${config_type}s/" && res="$BOT_TG_CFG_UPLOADED" || res="$BOT_TG_UPLOAD_FAIL2"
|
||||
send_msg "$res"
|
||||
;;
|
||||
esac
|
||||
rm -f "$TMPDIR/$FILE_NAME"
|
||||
send_menu
|
||||
}
|
||||
download_file(){
|
||||
FILE_NAME=$(echo "$UPDATES" | sed 's/"callback_query".*//g' | grep -o '"file_name":"[^"]*"' | head -n1 | sed 's/.*:"//;s/"$//' | grep -E '\.(gz|upx|json|yaml)$')
|
||||
if [ -n "$FILE_NAME" ];then
|
||||
FILE_PATH=$(web_get_lite "$API/getFile?file_id=$FILE_ID" | grep -o '"file_path":"[^"]*"' | sed 's/.*:"//;s/"$//')
|
||||
API_FILE="https://api.telegram.org/file/bot$TG_TOKEN"
|
||||
web_download "$API_FILE/$FILE_PATH" "$TMPDIR/$FILE_NAME"
|
||||
if [ "$?" = 0 ];then
|
||||
process_file
|
||||
else
|
||||
send_msg "$BOT_TG_NET_UPLOAD_FAIL"
|
||||
fi
|
||||
else
|
||||
send_msg "$BOT_TG_FILE_FORMAT_FAIL"
|
||||
fi
|
||||
FILE_NAME=$(echo "$UPDATES" | sed 's/"callback_query".*//g' | grep -o '"file_name":"[^"]*"' | head -n1 | sed 's/.*:"//;s/"$//' | grep -E '\.(gz|upx|json|yaml)$')
|
||||
if [ -n "$FILE_NAME" ];then
|
||||
FILE_PATH=$(web_get_lite "$API/getFile?file_id=$FILE_ID" | grep -o '"file_path":"[^"]*"' | sed 's/.*:"//;s/"$//')
|
||||
API_FILE="https://api.telegram.org/file/bot$TG_TOKEN"
|
||||
web_download "$API_FILE/$FILE_PATH" "$TMPDIR/$FILE_NAME"
|
||||
if [ "$?" = 0 ];then
|
||||
process_file
|
||||
else
|
||||
send_msg "$BOT_TG_NET_UPLOAD_FAIL"
|
||||
fi
|
||||
else
|
||||
send_msg "$BOT_TG_FILE_FORMAT_FAIL"
|
||||
fi
|
||||
}
|
||||
### --- 具体操作函数 --- ###
|
||||
do_start_fw(){
|
||||
[ -z "$redir_mod_bf" ] && redir_mod_bf='Redir'
|
||||
redir_mod=$redir_mod_bf
|
||||
setconfig redir_mod $redir_mod
|
||||
"$CRASHDIR"/start.sh start_firewall
|
||||
[ -z "$redir_mod_bf" ] && redir_mod_bf='Redir'
|
||||
redir_mod=$redir_mod_bf
|
||||
setconfig redir_mod $redir_mod
|
||||
"$CRASHDIR"/start.sh start_firewall
|
||||
echo "$BOT_TG_FW_ENABLED*$redir_mod_bf*$BOT_TG_FW_ENABLED_SUFFIX" > "$LOGFILE"
|
||||
}
|
||||
do_stop_fw(){
|
||||
redir_mod_bf=$redir_mod
|
||||
firewall_area=4
|
||||
setconfig firewall_area 4
|
||||
"$CRASHDIR"/start.sh stop_firewall
|
||||
redir_mod_bf=$redir_mod
|
||||
firewall_area=4
|
||||
setconfig firewall_area 4
|
||||
"$CRASHDIR"/start.sh stop_firewall
|
||||
echo "$BOT_TG_SWITCH_PURE" > "$LOGFILE"
|
||||
}
|
||||
do_restart(){
|
||||
@@ -185,142 +185,142 @@ do_set_sub(){
|
||||
|
||||
}
|
||||
transport(){ #文件传输
|
||||
case "$CALLBACK" in
|
||||
"ts_get_log")
|
||||
web_upload "$TMPDIR"/ShellCrash.log
|
||||
send_menu
|
||||
;;
|
||||
"ts_get_bak")
|
||||
now=$(date +%Y%m%d_%H%M%S)
|
||||
FILE="$TMPDIR/configs_$now.tar.gz"
|
||||
tar -zcf "$FILE" -C "$CRASHDIR/configs/" .
|
||||
web_upload "$FILE"
|
||||
rm -rf "$FILE"
|
||||
send_menu
|
||||
;;
|
||||
"ts_get_ccf")
|
||||
FILE="$TMPDIR/$config_type.tar.gz"
|
||||
tar -zcf "$FILE" -C "$CRASHDIR/${config_type}s/" .
|
||||
web_upload "$FILE"
|
||||
rm -rf "$FILE"
|
||||
send_menu
|
||||
;;
|
||||
"ts_up_core")
|
||||
FILE_TYPE=1
|
||||
send_msg "$BOT_TG_SEND_CORE ${corename} $BOT_TG_SEND_CORE_SUFFIX"
|
||||
;;
|
||||
"ts_up_bak")
|
||||
FILE_TYPE=2
|
||||
send_msg "$BOT_TG_SEND_BAK"
|
||||
;;
|
||||
"ts_up_ccf")
|
||||
FILE_TYPE=3
|
||||
send_msg "$BOT_TG_SEND_CFG .${config_type} $BOT_TG_SEND_CFG_SUFFIX"
|
||||
;;
|
||||
esac
|
||||
case "$CALLBACK" in
|
||||
"ts_get_log")
|
||||
web_upload "$TMPDIR"/ShellCrash.log
|
||||
send_menu
|
||||
;;
|
||||
"ts_get_bak")
|
||||
now=$(date +%Y%m%d_%H%M%S)
|
||||
FILE="$TMPDIR/configs_$now.tar.gz"
|
||||
tar -zcf "$FILE" -C "$CRASHDIR/configs/" .
|
||||
web_upload "$FILE"
|
||||
rm -rf "$FILE"
|
||||
send_menu
|
||||
;;
|
||||
"ts_get_ccf")
|
||||
FILE="$TMPDIR/$config_type.tar.gz"
|
||||
tar -zcf "$FILE" -C "$CRASHDIR/${config_type}s/" .
|
||||
web_upload "$FILE"
|
||||
rm -rf "$FILE"
|
||||
send_menu
|
||||
;;
|
||||
"ts_up_core")
|
||||
FILE_TYPE=1
|
||||
send_msg "$BOT_TG_SEND_CORE ${corename} $BOT_TG_SEND_CORE_SUFFIX"
|
||||
;;
|
||||
"ts_up_bak")
|
||||
FILE_TYPE=2
|
||||
send_msg "$BOT_TG_SEND_BAK"
|
||||
;;
|
||||
"ts_up_ccf")
|
||||
FILE_TYPE=3
|
||||
send_msg "$BOT_TG_SEND_CFG .${config_type} $BOT_TG_SEND_CFG_SUFFIX"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
### --- 轮询主进程 --- ###
|
||||
polling(){
|
||||
while true; do
|
||||
UPDATES=$(web_get_lite "$API/getUpdates?timeout=25&offset=$OFFSET")
|
||||
while true; do
|
||||
UPDATES=$(web_get_lite "$API/getUpdates?timeout=25&offset=$OFFSET")
|
||||
|
||||
echo "$UPDATES" | grep -q '"update_id"' || {
|
||||
sleep 10 #防止网络不佳时疯狂请求
|
||||
continue
|
||||
}
|
||||
|
||||
OFFSET=$(echo "$UPDATES" | grep -o '"update_id":[0-9]*' | tail -n1 | cut -d: -f2)
|
||||
OFFSET=$((OFFSET + 1))
|
||||
|
||||
### --- 校验ChatID --- ###
|
||||
CHATID=$(echo "$UPDATES" | grep -o '"id":[0-9]*' | tail -n1 | cut -d: -f2)
|
||||
[ "$CHATID" != "$TG_CHATID" ] && continue
|
||||
|
||||
### --- 处理按钮事件 --- ###
|
||||
CALLBACK=$(echo "$UPDATES" | grep -o '"data":"[^"]*"' | head -n1 | sed 's/.*:"//;s/"$//')
|
||||
FILE_ID=$(echo "$UPDATES" | sed 's/"callback_query".*//g' | grep -o '"file_id":"[^"]*"' | head -n1 | sed 's/.*:"//;s/"$//')
|
||||
|
||||
[ -n "$FILE_ID" ] && {
|
||||
download_file
|
||||
continue
|
||||
}
|
||||
[ -n "$CALLBACK" ] && case "$CALLBACK" in
|
||||
"start_redir")
|
||||
if [ "$firewall_area" = 4 ];then
|
||||
do_start_fw
|
||||
send_msg "$BOT_TG_SWITCH_TO$redir_mod_bf!"
|
||||
else
|
||||
send_msg "$BOT_TG_ALREADY$redir_mod!"
|
||||
fi
|
||||
send_menu
|
||||
continue
|
||||
;;
|
||||
"stop_redir")
|
||||
if [ "$firewall_area" != 4 ];then
|
||||
do_stop_fw
|
||||
send_msg "$BOT_TG_SWITCH_PURE"
|
||||
else
|
||||
send_msg "$BOT_TG_ALREADY_PURE"
|
||||
fi
|
||||
send_menu
|
||||
continue
|
||||
;;
|
||||
"restart")
|
||||
do_restart
|
||||
send_msg "$BOT_TG_SERVICE_RESTARTED_SHORT"
|
||||
sleep 10
|
||||
send_menu
|
||||
continue
|
||||
;;
|
||||
"readlog")
|
||||
send_msg "$BOT_TG_LOG_CONTENT\n\`\`\`$(grep -v "$BOT_TG_TASK_WORD" $TMPDIR/ShellCrash.log |tail -n 20)\`\`\`"
|
||||
sleep 3
|
||||
send_menu
|
||||
continue
|
||||
;;
|
||||
"transport")
|
||||
send_transport_menu
|
||||
continue
|
||||
;;
|
||||
"set_sub")
|
||||
echo "await_sub" > "$STATE_FILE"
|
||||
send_msg "$BOT_TG_INPUT_SUB"
|
||||
continue
|
||||
;;
|
||||
ts_*)
|
||||
transport
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
echo "$UPDATES" | grep -q '"update_id"' || {
|
||||
sleep 10 #防止网络不佳时疯狂请求
|
||||
continue
|
||||
}
|
||||
|
||||
OFFSET=$(echo "$UPDATES" | grep -o '"update_id":[0-9]*' | tail -n1 | cut -d: -f2)
|
||||
OFFSET=$((OFFSET + 1))
|
||||
|
||||
### --- 校验ChatID --- ###
|
||||
CHATID=$(echo "$UPDATES" | grep -o '"id":[0-9]*' | tail -n1 | cut -d: -f2)
|
||||
[ "$CHATID" != "$TG_CHATID" ] && continue
|
||||
|
||||
### --- 处理按钮事件 --- ###
|
||||
CALLBACK=$(echo "$UPDATES" | grep -o '"data":"[^"]*"' | head -n1 | sed 's/.*:"//;s/"$//')
|
||||
FILE_ID=$(echo "$UPDATES" | sed 's/"callback_query".*//g' | grep -o '"file_id":"[^"]*"' | head -n1 | sed 's/.*:"//;s/"$//')
|
||||
|
||||
[ -n "$FILE_ID" ] && {
|
||||
download_file
|
||||
continue
|
||||
}
|
||||
[ -n "$CALLBACK" ] && case "$CALLBACK" in
|
||||
"start_redir")
|
||||
if [ "$firewall_area" = 4 ];then
|
||||
do_start_fw
|
||||
send_msg "$BOT_TG_SWITCH_TO$redir_mod_bf!"
|
||||
else
|
||||
send_msg "$BOT_TG_ALREADY$redir_mod!"
|
||||
fi
|
||||
send_menu
|
||||
continue
|
||||
;;
|
||||
"stop_redir")
|
||||
if [ "$firewall_area" != 4 ];then
|
||||
do_stop_fw
|
||||
send_msg "$BOT_TG_SWITCH_PURE"
|
||||
else
|
||||
send_msg "$BOT_TG_ALREADY_PURE"
|
||||
fi
|
||||
send_menu
|
||||
continue
|
||||
;;
|
||||
"restart")
|
||||
do_restart
|
||||
send_msg "$BOT_TG_SERVICE_RESTARTED_SHORT"
|
||||
sleep 10
|
||||
send_menu
|
||||
continue
|
||||
;;
|
||||
"readlog")
|
||||
send_msg "$BOT_TG_LOG_CONTENT\n\`\`\`$(grep -v "$BOT_TG_TASK_WORD" $TMPDIR/ShellCrash.log |tail -n 20)\`\`\`"
|
||||
sleep 3
|
||||
send_menu
|
||||
continue
|
||||
;;
|
||||
"transport")
|
||||
send_transport_menu
|
||||
continue
|
||||
;;
|
||||
"set_sub")
|
||||
echo "await_sub" > "$STATE_FILE"
|
||||
send_msg "$BOT_TG_INPUT_SUB"
|
||||
continue
|
||||
;;
|
||||
ts_*)
|
||||
transport
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
### --- 处理订阅输入 --- ###
|
||||
TEXT=$(echo "$UPDATES" | grep -o '"text":"[^"]*"' | tail -n1 | sed 's/.*"text":"//;s/"$//')
|
||||
### --- 处理订阅输入 --- ###
|
||||
TEXT=$(echo "$UPDATES" | grep -o '"text":"[^"]*"' | tail -n1 | sed 's/.*"text":"//;s/"$//')
|
||||
|
||||
if [ "$(cat "$STATE_FILE" 2>/dev/null)" = "await_sub" ]; then
|
||||
echo "" > "$STATE_FILE"
|
||||
do_set_sub "$TEXT"
|
||||
send_msg "$BOT_TG_SUB_UPDATED\n$(cat "$LOGFILE")"
|
||||
send_menu
|
||||
continue
|
||||
fi
|
||||
if [ "$(cat "$STATE_FILE" 2>/dev/null)" = "await_sub" ]; then
|
||||
echo "" > "$STATE_FILE"
|
||||
do_set_sub "$TEXT"
|
||||
send_msg "$BOT_TG_SUB_UPDATED\n$(cat "$LOGFILE")"
|
||||
send_menu
|
||||
continue
|
||||
fi
|
||||
|
||||
|
||||
### 处理命令 ###
|
||||
case "$TEXT" in
|
||||
/crash)
|
||||
send_menu
|
||||
;;
|
||||
/"$my_alias")
|
||||
send_menu
|
||||
;;
|
||||
/help)
|
||||
send_help
|
||||
;;
|
||||
esac
|
||||
### 处理命令 ###
|
||||
case "$TEXT" in
|
||||
/crash)
|
||||
send_menu
|
||||
;;
|
||||
/"$my_alias")
|
||||
send_menu
|
||||
;;
|
||||
/help)
|
||||
send_help
|
||||
;;
|
||||
esac
|
||||
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
[ "$TG_menupush" = ON ] && send_menu
|
||||
|
||||
@@ -22,7 +22,7 @@ tg_push_token() {
|
||||
push_TG="$TOKEN"
|
||||
setconfig push_TG "$TOKEN"
|
||||
setconfig chat_ID "$chat_ID"
|
||||
. "$CRASHDIR"/libs/logger.sh && logger "$BOT_TG_SET_DONE" 32
|
||||
. "$CRASHDIR"/libs/logger.sh && logger "$BOT_TG_SET_DONE" 32
|
||||
}
|
||||
|
||||
get_chatid() {
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
|
||||
|
||||
. "$CRASHDIR"/libs/set_cron.sh
|
||||
|
||||
bot_tg_start(){
|
||||
. "$CRASHDIR"/starts/start_legacy.sh
|
||||
start_legacy "$CRASHDIR/menus/bot_tg.sh" 'bot_tg'
|
||||
. "$CRASHDIR"/starts/start_legacy.sh
|
||||
start_legacy "$CRASHDIR/menus/bot_tg.sh" 'bot_tg'
|
||||
}
|
||||
bot_tg_stop(){
|
||||
cronload | grep -q 'TG_BOT' && cronset 'TG_BOT'
|
||||
[ -f "$TMPDIR/bot_tg.pid" ] && kill -TERM "$(cat "$TMPDIR/bot_tg.pid")" 2>/dev/null
|
||||
killall bot_tg.sh 2>/dev/null
|
||||
rm -f "$TMPDIR/bot_tg.pid"
|
||||
cronload | grep -q 'TG_BOT' && cronset 'TG_BOT'
|
||||
[ -f "$TMPDIR/bot_tg.pid" ] && kill -TERM "$(cat "$TMPDIR/bot_tg.pid")" 2>/dev/null
|
||||
killall bot_tg.sh 2>/dev/null
|
||||
rm -f "$TMPDIR/bot_tg.pid"
|
||||
}
|
||||
bot_tg_cron(){
|
||||
cronset 'ShellCrash-TG_BOT' "* * * * * /bin/sh $CRASHDIR/starts/start_legacy_wd.sh bot_tg #ShellCrash-TG_BOT"
|
||||
cronset 'ShellCrash-TG_BOT' "* * * * * /bin/sh $CRASHDIR/starts/start_legacy_wd.sh bot_tg #ShellCrash-TG_BOT"
|
||||
}
|
||||
|
||||
@@ -4,46 +4,46 @@
|
||||
load_lang check_port
|
||||
|
||||
_get_netstat_cmd() {
|
||||
case "$1" in
|
||||
tcp) echo "netstat -ntl" ;;
|
||||
udp) echo "netstat -nul" ;;
|
||||
*) echo "netstat -ntul" ;;
|
||||
esac
|
||||
case "$1" in
|
||||
tcp) echo "netstat -ntl" ;;
|
||||
udp) echo "netstat -nul" ;;
|
||||
*) echo "netstat -ntul" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
check_port() {
|
||||
local port="$1"
|
||||
local protocol="${2:-all}"
|
||||
local port="$1"
|
||||
local protocol="${2:-all}"
|
||||
|
||||
if [ "$port" -gt 65535 ] || [ "$port" -le 1 ]; then
|
||||
msg_alert "\033[31m$CHECK_PORT_RANGE_ERR\033[0m"
|
||||
return 1
|
||||
fi
|
||||
if [ "$port" -gt 65535 ] || [ "$port" -le 1 ]; then
|
||||
msg_alert "\033[31m$CHECK_PORT_RANGE_ERR\033[0m"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local check_cmd
|
||||
check_cmd=$(_get_netstat_cmd "$protocol")
|
||||
local check_cmd
|
||||
check_cmd=$(_get_netstat_cmd "$protocol")
|
||||
|
||||
if $check_cmd 2>/dev/null | grep -q ":${port}[[:space:]]"; then
|
||||
msg_alert "\033[31m$CHECK_PORT_OCCUPIED_ERR\033[0m"
|
||||
return 1
|
||||
fi
|
||||
if $check_cmd 2>/dev/null | grep -q ":${port}[[:space:]]"; then
|
||||
msg_alert "\033[31m$CHECK_PORT_OCCUPIED_ERR\033[0m"
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
return 0
|
||||
}
|
||||
|
||||
check_port_with_info() {
|
||||
local port="$1"
|
||||
local protocol="${2:-all}"
|
||||
local check_cmd
|
||||
check_cmd=$(_get_netstat_cmd "$protocol")
|
||||
local port="$1"
|
||||
local protocol="${2:-all}"
|
||||
local check_cmd
|
||||
check_cmd=$(_get_netstat_cmd "$protocol")
|
||||
|
||||
local conflict_line
|
||||
conflict_line=$($check_cmd 2>/dev/null | grep ":${port}[[:space:]]" | head -n 1)
|
||||
local conflict_line
|
||||
conflict_line=$($check_cmd 2>/dev/null | grep ":${port}[[:space:]]" | head -n 1)
|
||||
|
||||
if [ -n "$conflict_line" ]; then
|
||||
echo "$conflict_line"
|
||||
return 1
|
||||
fi
|
||||
if [ -n "$conflict_line" ]; then
|
||||
echo "$conflict_line"
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -12,21 +12,21 @@ add_ddns() {
|
||||
cat >>"$ddns_dir" <<EOF
|
||||
|
||||
config service '$service'
|
||||
option enabled '1'
|
||||
option force_unit 'hours'
|
||||
option lookup_host '$domain'
|
||||
option service_name '$service_name'
|
||||
option domain '$domain'
|
||||
option username '$username'
|
||||
option use_https '0'
|
||||
option use_ipv6 '$use_ipv6'
|
||||
option password '$password'
|
||||
option ip_source 'web'
|
||||
option check_unit 'minutes'
|
||||
option check_interval '$check_interval'
|
||||
option force_interval '$force_interval'
|
||||
option interface 'wan'
|
||||
option bind_network 'wan'
|
||||
option enabled '1'
|
||||
option force_unit 'hours'
|
||||
option lookup_host '$domain'
|
||||
option service_name '$service_name'
|
||||
option domain '$domain'
|
||||
option username '$username'
|
||||
option use_https '0'
|
||||
option use_ipv6 '$use_ipv6'
|
||||
option password '$password'
|
||||
option ip_source 'web'
|
||||
option check_unit 'minutes'
|
||||
option check_interval '$check_interval'
|
||||
option force_interval '$force_interval'
|
||||
option interface 'wan'
|
||||
option bind_network 'wan'
|
||||
EOF
|
||||
/usr/lib/ddns/dynamic_dns_updater.sh -S "$service" start >/dev/null 2>&1 &
|
||||
sleep 3
|
||||
@@ -71,12 +71,12 @@ set_ddns() {
|
||||
set_ddns_service() {
|
||||
while true; do
|
||||
services_dir=/etc/ddns/"$serv"
|
||||
[ -s "$services_dir" ] || services_dir=/etc/ddns/services
|
||||
[ -s "$services_dir" ] || services_dir=/etc/ddns/services
|
||||
[ -s "$services_dir" ] || services_dir=/usr/share/ddns/list
|
||||
[ -s "$services_dir" ] || {
|
||||
msg_alert "\033[33m$DDNS_LIST_NOT_FOUND\033[0m"
|
||||
ddns service update >/dev/null || msg_alert "\033[31m$DDNS_DOWNLOAD_FAILED\033[0m"
|
||||
}
|
||||
[ -s "$services_dir" ] || {
|
||||
msg_alert "\033[33m$DDNS_LIST_NOT_FOUND\033[0m"
|
||||
ddns service update >/dev/null || msg_alert "\033[31m$DDNS_DOWNLOAD_FAILED\033[0m"
|
||||
}
|
||||
comp_box "\033[32m$DDNS_SELECT_PROVIDER\033[0m"
|
||||
|
||||
list=$(awk '/^#/ || !NF {next} {print $1}' "$services_dir")
|
||||
|
||||
@@ -48,31 +48,31 @@ set_dns_mod() {
|
||||
msg_alert "\033[36m$DNS_SET_OK:$dns_mod\033[0m"
|
||||
;;
|
||||
4)
|
||||
if [ "$dns_protect" = ON ]; then
|
||||
dns_protect=OFF
|
||||
else
|
||||
dns_protect=ON
|
||||
fi
|
||||
setconfig dns_protect "$dns_protect"
|
||||
common_success
|
||||
if [ "$dns_protect" = ON ]; then
|
||||
dns_protect=OFF
|
||||
else
|
||||
dns_protect=ON
|
||||
fi
|
||||
setconfig dns_protect "$dns_protect"
|
||||
common_success
|
||||
;;
|
||||
5)
|
||||
if [ "$hosts_opt" = ON ]; then
|
||||
hosts_opt=OFF
|
||||
else
|
||||
hosts_opt=ON
|
||||
fi
|
||||
setconfig hosts_opt "$hosts_opt"
|
||||
common_success
|
||||
if [ "$hosts_opt" = ON ]; then
|
||||
hosts_opt=OFF
|
||||
else
|
||||
hosts_opt=ON
|
||||
fi
|
||||
setconfig hosts_opt "$hosts_opt"
|
||||
common_success
|
||||
;;
|
||||
6)
|
||||
if [ "$ecs_subnet" = ON ]; then
|
||||
ecs_subnet=OFF
|
||||
else
|
||||
ecs_subnet=ON
|
||||
fi
|
||||
setconfig ecs_subnet "$ecs_subnet"
|
||||
common_success
|
||||
if [ "$ecs_subnet" = ON ]; then
|
||||
ecs_subnet=OFF
|
||||
else
|
||||
ecs_subnet=ON
|
||||
fi
|
||||
setconfig ecs_subnet "$ecs_subnet"
|
||||
common_success
|
||||
;;
|
||||
7)
|
||||
while true; do
|
||||
|
||||
@@ -97,21 +97,21 @@ gen_providers_txt() {
|
||||
[ -n "$include" ] && include_ele="\"include\": \"$include\","
|
||||
if [ -n "$(echo "$2" | grep -E '^./')" ]; then
|
||||
cat >>"$TMPDIR"/providers/providers.json <<EOF
|
||||
{
|
||||
{
|
||||
"tag": "$tag",
|
||||
"type": "local",
|
||||
"path": "$2",
|
||||
"path": "$2",
|
||||
EOF
|
||||
else
|
||||
cat >>"$TMPDIR"/providers/providers.json <<EOF
|
||||
{
|
||||
{
|
||||
"tag": "$tag",
|
||||
"type": "remote",
|
||||
"url": "$2",
|
||||
"path": "./providers/$tag.yaml",
|
||||
"user_agent": "$ua",
|
||||
"update_interval": "${interval2}h",
|
||||
$exclude_ele
|
||||
$exclude_ele
|
||||
$include_ele
|
||||
EOF
|
||||
fi
|
||||
@@ -124,11 +124,11 @@ EOF
|
||||
"interval": "${interval}m",
|
||||
"timeout": "3s"
|
||||
},
|
||||
"override_tls": {
|
||||
"enabled": true,
|
||||
"insecure": $override_tls
|
||||
}
|
||||
},
|
||||
"override_tls": {
|
||||
"enabled": true,
|
||||
"insecure": $override_tls
|
||||
}
|
||||
},
|
||||
EOF
|
||||
# 写入提供者
|
||||
echo '{ "tag": "'"$tag"'", "type": "urltest", "tolerance": 100, "providers": ["'"$tag"'"], "include": ".*" },' >>"$TMPDIR"/providers/outbounds_add.json
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
|
||||
running_status(){
|
||||
VmRSS=$(awk '/^VmRSS:/ {printf "%.2f MB\n", ($2 * 1024) / 1000000}' /proc/$PID/status)
|
||||
#获取运行时长
|
||||
touch "$TMPDIR"/crash_start_time #用于延迟启动的校验
|
||||
start_time=$(cat "$TMPDIR"/crash_start_time)
|
||||
if [ -n "$start_time" ]; then
|
||||
time=$(($(date +%s) - start_time))
|
||||
day=$((time / 86400))
|
||||
[ "$day" = "0" ] && day='' || day="$dayD"
|
||||
time=$(date -u -d @${time} +%H:%M:%S)
|
||||
fi
|
||||
VmRSS=$(awk '/^VmRSS:/ {printf "%.2f MB\n", ($2 * 1024) / 1000000}' /proc/$PID/status)
|
||||
#获取运行时长
|
||||
touch "$TMPDIR"/crash_start_time #用于延迟启动的校验
|
||||
start_time=$(cat "$TMPDIR"/crash_start_time)
|
||||
if [ -n "$start_time" ]; then
|
||||
time=$(($(date +%s) - start_time))
|
||||
day=$((time / 86400))
|
||||
[ "$day" = "0" ] && day='' || day="$dayD"
|
||||
time=$(date -u -d @${time} +%H:%M:%S)
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -14,118 +14,118 @@
|
||||
load_lang task_cmd
|
||||
|
||||
task_logger(){
|
||||
[ "$task_push" = 1 ] && push= || push=off
|
||||
[ -n "$2" -a "$2" != 0 ] && echo -e "\033[$2m$1\033[0m"
|
||||
[ "$3" = 'off' ] && push=off
|
||||
echo "$1" |grep -qE "($TASK_CMD_EVERY|$TASK_CMD_HOURLY)([1-9]|[1-9][0-9])$TASK_CMD_MIN" && {
|
||||
push=off
|
||||
cover=on
|
||||
}
|
||||
logger "$1" 0 "$push" "$cover"
|
||||
[ "$task_push" = 1 ] && push= || push=off
|
||||
[ -n "$2" -a "$2" != 0 ] && echo -e "\033[$2m$1\033[0m"
|
||||
[ "$3" = 'off' ] && push=off
|
||||
echo "$1" |grep -qE "($TASK_CMD_EVERY|$TASK_CMD_HOURLY)([1-9]|[1-9][0-9])$TASK_CMD_MIN" && {
|
||||
push=off
|
||||
cover=on
|
||||
}
|
||||
logger "$1" 0 "$push" "$cover"
|
||||
}
|
||||
|
||||
#任务命令
|
||||
check_update(){ #检查更新工具
|
||||
get_bin "$TMPDIR"/crashversion "$1" echooff
|
||||
[ "$?" = "0" ] && . "$TMPDIR"/crashversion 2>/dev/null
|
||||
rm -rf "$TMPDIR"/crashversion
|
||||
get_bin "$TMPDIR"/crashversion "$1" echooff
|
||||
[ "$?" = "0" ] && . "$TMPDIR"/crashversion 2>/dev/null
|
||||
rm -rf "$TMPDIR"/crashversion
|
||||
}
|
||||
update_core(){ #自动更新内核
|
||||
#检查版本
|
||||
check_update bin/version
|
||||
crash_v_new=$(eval echo \$${crashcore}_v)
|
||||
if [ -z "$crash_v_new" -o "$crash_v_new" = "$core_v" ];then
|
||||
task_logger "$TASK_CMD_CORE_SKIP"
|
||||
return 0
|
||||
else
|
||||
. "$CRASHDIR"/libs/core_tools.sh && core_webget #调用下载工具
|
||||
case "$?" in
|
||||
0)
|
||||
task_logger "$TASK_CMD_CORE_DONE"
|
||||
"$CRASHDIR"/start.sh start
|
||||
return 0
|
||||
;;
|
||||
1)
|
||||
task_logger "$TASK_CMD_CORE_DL_FAIL"
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
task_logger "$TASK_CMD_CORE_VERIFY_FAIL"
|
||||
"$CRASHDIR"/start.sh start
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
#检查版本
|
||||
check_update bin/version
|
||||
crash_v_new=$(eval echo \$${crashcore}_v)
|
||||
if [ -z "$crash_v_new" -o "$crash_v_new" = "$core_v" ];then
|
||||
task_logger "$TASK_CMD_CORE_SKIP"
|
||||
return 0
|
||||
else
|
||||
. "$CRASHDIR"/libs/core_tools.sh && core_webget #调用下载工具
|
||||
case "$?" in
|
||||
0)
|
||||
task_logger "$TASK_CMD_CORE_DONE"
|
||||
"$CRASHDIR"/start.sh start
|
||||
return 0
|
||||
;;
|
||||
1)
|
||||
task_logger "$TASK_CMD_CORE_DL_FAIL"
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
task_logger "$TASK_CMD_CORE_VERIFY_FAIL"
|
||||
"$CRASHDIR"/start.sh start
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
update_scripts(){ #自动更新脚本
|
||||
#检查版本
|
||||
check_update version
|
||||
if [ -z "$versionsh" -o "$versionsh" = "versionsh_l" ];then
|
||||
task_logger "$TASK_CMD_SCRIPT_SKIP"
|
||||
return 0
|
||||
else
|
||||
get_bin "$TMPDIR"/ShellCrash.tar.gz "ShellCrash.tar.gz"
|
||||
if [ "$?" != "0" ];then
|
||||
rm -rf "$TMPDIR"/ShellCrash.tar.gz
|
||||
task_logger "$TASK_CMD_CORE_DL_FAIL"
|
||||
return 1
|
||||
else
|
||||
#停止服务
|
||||
"$CRASHDIR"/start.sh stop
|
||||
#解压
|
||||
tar -zxf "$TMPDIR"/ShellCrash.tar.gz ${tar_para} -C "$CRASHDIR"/
|
||||
if [ $? -ne 0 ];then
|
||||
rm -rf "$TMPDIR"/ShellCrash.tar.gz
|
||||
task_logger "$TASK_CMD_SCRIPT_UNZIP_FAIL"
|
||||
"$CRASHDIR"/start.sh start
|
||||
return 1
|
||||
else
|
||||
. "$CRASHDIR"/init.sh >/dev/null
|
||||
"$CRASHDIR"/start.sh start
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
#检查版本
|
||||
check_update version
|
||||
if [ -z "$versionsh" -o "$versionsh" = "versionsh_l" ];then
|
||||
task_logger "$TASK_CMD_SCRIPT_SKIP"
|
||||
return 0
|
||||
else
|
||||
get_bin "$TMPDIR"/ShellCrash.tar.gz "ShellCrash.tar.gz"
|
||||
if [ "$?" != "0" ];then
|
||||
rm -rf "$TMPDIR"/ShellCrash.tar.gz
|
||||
task_logger "$TASK_CMD_CORE_DL_FAIL"
|
||||
return 1
|
||||
else
|
||||
#停止服务
|
||||
"$CRASHDIR"/start.sh stop
|
||||
#解压
|
||||
tar -zxf "$TMPDIR"/ShellCrash.tar.gz ${tar_para} -C "$CRASHDIR"/
|
||||
if [ $? -ne 0 ];then
|
||||
rm -rf "$TMPDIR"/ShellCrash.tar.gz
|
||||
task_logger "$TASK_CMD_SCRIPT_UNZIP_FAIL"
|
||||
"$CRASHDIR"/start.sh start
|
||||
return 1
|
||||
else
|
||||
. "$CRASHDIR"/init.sh >/dev/null
|
||||
"$CRASHDIR"/start.sh start
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
update_mmdb(){ #自动更新数据库
|
||||
getgeo(){
|
||||
#检查版本
|
||||
check_update bin/version
|
||||
geo_v="$(echo $2 | awk -F "." '{print $1}')_v" #获取版本号类型比如Country_v
|
||||
geo_v_new=$GeoIP_v
|
||||
geo_v_now=$(eval echo \$$geo_v)
|
||||
if [ -z "$geo_v_new" -o "$geo_v_new" = "$geo_v_now" ];then
|
||||
task_logger "$TASK_CMD_DB_SKIP_PREFIX$2$TASK_CMD_DB_SKIP_SUFFIX"
|
||||
else
|
||||
#更新文件
|
||||
get_bin "$TMPDIR"/$1 "bin/geodata/$2"
|
||||
if [ "$?" != "0" ];then
|
||||
task_logger "$TASK_CMD_DB_DL_FAIL_PREFIX$2$TASK_CMD_DB_DL_FAIL_SUFFIX"
|
||||
rm -rf "$TMPDIR"/$1
|
||||
else
|
||||
mv -f "$TMPDIR"/$1 "$BINDIR"/$1
|
||||
setconfig $geo_v $GeoIP_v
|
||||
task_logger "$TASK_CMD_DB_OK_PREFIX$2$TASK_CMD_DB_OK_SUFFIX"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
[ -n "${cn_mini_v}" -a -s "$CRASHDIR"/Country.mmdb ] && getgeo Country.mmdb cn_mini.mmdb
|
||||
[ -n "${china_ip_list_v}" -a -s "$CRASHDIR"/cn_ip.txt ] && getgeo cn_ip.txt china_ip_list.txt
|
||||
[ -n "${china_ipv6_list_v}" -a -s "$CRASHDIR"/cn_ipv6.txt ] && getgeo cn_ipv6.txt china_ipv6_list.txt
|
||||
[ -n "${geosite_v}" -a -s "$CRASHDIR"/GeoSite.dat ] && getgeo GeoSite.dat geosite.dat
|
||||
[ -n "${geoip_cn_v}" -a -s "$CRASHDIR"/geoip.db ] && getgeo geoip.db geoip_cn.db
|
||||
[ -n "${geosite_cn_v}" -a -s "$CRASHDIR"/geosite.db ] && getgeo geosite.db geosite_cn.db
|
||||
return 0
|
||||
getgeo(){
|
||||
#检查版本
|
||||
check_update bin/version
|
||||
geo_v="$(echo $2 | awk -F "." '{print $1}')_v" #获取版本号类型比如Country_v
|
||||
geo_v_new=$GeoIP_v
|
||||
geo_v_now=$(eval echo \$$geo_v)
|
||||
if [ -z "$geo_v_new" -o "$geo_v_new" = "$geo_v_now" ];then
|
||||
task_logger "$TASK_CMD_DB_SKIP_PREFIX$2$TASK_CMD_DB_SKIP_SUFFIX"
|
||||
else
|
||||
#更新文件
|
||||
get_bin "$TMPDIR"/$1 "bin/geodata/$2"
|
||||
if [ "$?" != "0" ];then
|
||||
task_logger "$TASK_CMD_DB_DL_FAIL_PREFIX$2$TASK_CMD_DB_DL_FAIL_SUFFIX"
|
||||
rm -rf "$TMPDIR"/$1
|
||||
else
|
||||
mv -f "$TMPDIR"/$1 "$BINDIR"/$1
|
||||
setconfig $geo_v $GeoIP_v
|
||||
task_logger "$TASK_CMD_DB_OK_PREFIX$2$TASK_CMD_DB_OK_SUFFIX"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
[ -n "${cn_mini_v}" -a -s "$CRASHDIR"/Country.mmdb ] && getgeo Country.mmdb cn_mini.mmdb
|
||||
[ -n "${china_ip_list_v}" -a -s "$CRASHDIR"/cn_ip.txt ] && getgeo cn_ip.txt china_ip_list.txt
|
||||
[ -n "${china_ipv6_list_v}" -a -s "$CRASHDIR"/cn_ipv6.txt ] && getgeo cn_ipv6.txt china_ipv6_list.txt
|
||||
[ -n "${geosite_v}" -a -s "$CRASHDIR"/GeoSite.dat ] && getgeo GeoSite.dat geosite.dat
|
||||
[ -n "${geoip_cn_v}" -a -s "$CRASHDIR"/geoip.db ] && getgeo geoip.db geoip_cn.db
|
||||
[ -n "${geosite_cn_v}" -a -s "$CRASHDIR"/geosite.db ] && getgeo geosite.db geosite_cn.db
|
||||
return 0
|
||||
}
|
||||
reset_firewall(){ #重设透明路由防火墙
|
||||
"$CRASHDIR"/start.sh stop_firewall
|
||||
"$CRASHDIR"/start.sh afstart
|
||||
"$CRASHDIR"/start.sh stop_firewall
|
||||
"$CRASHDIR"/start.sh afstart
|
||||
}
|
||||
ntp(){
|
||||
ckcmd ntpd && ntpd -n -q -p 203.107.6.88 >/dev/null 2>&1 || exit 0
|
||||
ckcmd ntpd && ntpd -n -q -p 203.107.6.88 >/dev/null 2>&1 || exit 0
|
||||
}
|
||||
web_save_auto(){
|
||||
. "$CRASHDIR"/libs/web_save.sh && web_save
|
||||
. "$CRASHDIR"/libs/web_save.sh && web_save
|
||||
}
|
||||
update_config() { #更新订阅并重启
|
||||
. "$CRASHDIR"/starts/core_config.sh && get_core_config && "$CRASHDIR"/start.sh start
|
||||
@@ -139,14 +139,14 @@ hotupdate() { #热更新订阅
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
[1-9][0-9][0-9])
|
||||
task_command=$(cat "$CRASHDIR"/task/task.list "$CRASHDIR"/task/task.user 2>/dev/null | grep "$1" | awk -F '#' '{print $2}')
|
||||
task_name=$(cat "$CRASHDIR"/task/task.list "$CRASHDIR"/task/task.user 2>/dev/null | grep "$1" | awk -F '#' '{print $3}')
|
||||
#task_logger "任务$task_name 开始执行"
|
||||
eval $task_command && task_res="$TASK_CMD_RES_OK" || task_res="$TASK_CMD_RES_FAIL"
|
||||
task_logger "$TASK_CMD_EXEC_PREFIX$2$TASK_CMD_EXEC_MID$task_res"
|
||||
;;
|
||||
*)
|
||||
"$1"
|
||||
;;
|
||||
[1-9][0-9][0-9])
|
||||
task_command=$(cat "$CRASHDIR"/task/task.list "$CRASHDIR"/task/task.user 2>/dev/null | grep "$1" | awk -F '#' '{print $2}')
|
||||
task_name=$(cat "$CRASHDIR"/task/task.list "$CRASHDIR"/task/task.user 2>/dev/null | grep "$1" | awk -F '#' '{print $3}')
|
||||
#task_logger "任务$task_name 开始执行"
|
||||
eval $task_command && task_res="$TASK_CMD_RES_OK" || task_res="$TASK_CMD_RES_FAIL"
|
||||
task_logger "$TASK_CMD_EXEC_PREFIX$2$TASK_CMD_EXEC_MID$task_res"
|
||||
;;
|
||||
*)
|
||||
"$1"
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user