~优化tg-bot启动流程,兼容更多设备

~优化nftables启动流程,优化启用cn绕过时的运行效率和数据显示
~修复tg机器人守护进程没有生效的bug
~修复tg机器人总是绑定失败的bug
~修复9-8功能找不到文件的bug
~修复停止服务时的报错
~修复启动时自动下载缺失数据库时的意外报错
~修复nftables启用了本机代理后局域网代理出错的bug
This commit is contained in:
juewuy
2025-12-27 21:57:24 +08:00
parent ecf99aac39
commit daa600dbea
14 changed files with 64 additions and 69 deletions

View File

@@ -514,7 +514,7 @@ testcommand(){
;;
4)
if [ "$firewall_mod" = "nftables" ];then
nft list table inet shellcrash
nft list table inet shellcrash | sed '/set cn_ip {/,/}/d;/set cn_ip6 {/,/}/d;/^[[:space:]]*}/d'
else
[ "$firewall_area" = 1 -o "$firewall_area" = 3 -o "$firewall_area" = 5 -o "$vm_redir" = "已开启" ] && {
echo "----------------Redir+DNS---------------------"

View File

@@ -75,7 +75,7 @@ upgrade(){
upgrade
;;
8)
. "$CRASHDIR"/task/task.sh && task_add
. "$CRASHDIR"/menus/5_task.sh && task_add
upgrade
;;
9)

View File

@@ -1,6 +1,8 @@
#!/bin/sh
[ -z "$CRASHDIR" ] && CRASHDIR=$( cd $(dirname $0);cd ..;pwd)
. "$CRASHDIR"/libs/web_json.sh
. "$CRASHDIR"/libs/web_get_lite.sh
. "$CRASHDIR"/menus/running_status.sh
. "$CRASHDIR"/configs/gateway.cfg
. "$CRASHDIR"/configs/ShellCrash.cfg
@@ -12,14 +14,6 @@ LOGFILE="$TMPDIR/tgbot.log"
OFFSET=0
### --- 基础函数 --- ###
web_get(){
setproxy
if curl1 --version >/dev/null 2>&1; then
curl -kfsSl --connect-timeout 3 "$1"
else
wget -Y on -q --timeout=3 -O - "$1"
fi
}
web_download(){
setproxy
if curl --version >/dev/null 2>&1; then
@@ -150,7 +144,7 @@ process_file(){
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 "$API/getFile?file_id=$FILE_ID" | grep -o '"file_path":"[^"]*"' | sed 's/.*:"//;s/"$//')
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
@@ -227,10 +221,13 @@ transport(){ #文件传输
### --- 轮询主进程 --- ###
polling(){
while true; do
UPDATES=$(web_get "$API/getUpdates?timeout=25&offset=$OFFSET")
echo "$UPDATES" | grep -q '"update_id"' || continue
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))

View File

@@ -1,6 +1,6 @@
#!/bin/sh
. "$CRASHDIR"/libs/web_json.sh
. "$CRASHDIR"/libs/web_get_lite.sh
private_bot() {
echo "-----------------------------------------------"
@@ -28,7 +28,7 @@ set_bot() {
echo "-----------------------------------------------"
read -p "我已经发送完成(1/0) > " res
if [ "$res" = 1 ]; then
chat=$(web_json_get $url_tg 2>/dev/null)
chat=$(web_get_lite $url_tg 2>/dev/null)
[ -n "$chat" ] && chat_ID=$(echo $chat | sed 's/"update_id":/{\n"update_id":/g' | grep "$public_key" | head -n1 | grep -oE '"id":.*,"is_bot' | sed s'/"id"://' | sed s'/,"is_bot//')
[ -z "$chat_ID" ] && [ "$TOKEN" != 'publictoken' ] && {
echo -e "\033[31m无法获取对话ID请返回重新设置或手动输入ChatID\033[0m"

View File

@@ -4,7 +4,7 @@
bot_tg_start(){
. "$CRASHDIR"/starts/start_legacy.sh
start_legacy "$CRASHDIR/menus/bot_tg.sh" 'bot_tg'
cronset 'TG_BOT守护进程' "*/10 * * * * /bin/sh $CRASHDIR/starts/start_legacy_wd.sh bot_tg #ShellCrash-TG_BOT守护进程"
cronset 'TG_BOT守护进程' "* * * * * /bin/sh $CRASHDIR/starts/start_legacy_wd.sh bot_tg #ShellCrash-TG_BOT守护进程"
}
bot_tg_stop(){
cronset 'TG_BOT守护进程'