feat: V5.2 优化节点注册逻辑,引入安全授权机制破解 TG API 监听盲区

This commit is contained in:
hotyue
2026-04-01 10:44:52 +00:00
parent 02d60d406a
commit 60c4686825
2 changed files with 11 additions and 7 deletions

View File

@@ -24,14 +24,15 @@ AGENT_IP=$(curl -4 -s -m 5 api.ip.sb/ip)
if [ -n "$AGENT_IP" ]; then
# 2. 向 Master 发送注册暗号 (借助 TG API)
# 格式严格匹配 Master 端的正则: #REGISTER#|<NodeName>|<IP>|<Port>
REG_MSG="#REGISTER#|${NODE_NAME}|${AGENT_IP}|${AGENT_PORT}"
# 【升级点】利用 TG API 机制,引导用户充当“安全网关”手动转发授权
REG_MSG="👋 **[边缘节点接入申请]**%0A节点: \`${NODE_NAME}\`%0A地址: \`${AGENT_IP}:${AGENT_PORT}\`%0A%0A⚠ **安全验证**: 为防止非法节点接入,请长按复制下方代码,并**发送给我**以完成最终授权录入:%0A%0A\`#REGISTER#|${NODE_NAME}|${AGENT_IP}|${AGENT_PORT}\`"
curl -s -m 5 -X POST "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \
-d "chat_id=${CHAT_ID}" \
-d "text=${REG_MSG}" > /dev/null
-d "text=${REG_MSG}" \
-d "parse_mode=Markdown" > /dev/null
echo "✅ [Agent] 已向司令部发送注册/续期请求: $NODE_NAME ($AGENT_IP:$AGENT_PORT)"
echo "✅ [Agent] 已向司令部发送接入申请,请在 Telegram 手机端完成授权!"
fi
# 3. 启动轻量级 Python3 Webhook 监听服务

View File

@@ -49,10 +49,13 @@ while true; do
# 格式: #REGISTER#|<NodeName>|<IP>|<Port>
# ==========================================
if [[ "$TEXT" == *"#REGISTER#"* ]]; then
IFS='|' read -r MAGIC NODE_NAME AGENT_IP AGENT_PORT <<< "$TEXT"
# UPSERT 逻辑: 如果节点存在则更新 IP/Port 和在线时间,不存在则插入
# 提取包含暗号的那一行,并剔除可能误复制的反引号和空格
REG_LINE=$(echo "$TEXT" | grep "#REGISTER#" | head -n 1 | tr -d '\` ')
IFS='|' read -r MAGIC NODE_NAME AGENT_IP AGENT_PORT <<< "$REG_LINE"
# UPSERT 逻辑
db_exec "INSERT INTO nodes (chat_id, node_name, agent_ip, agent_port, last_seen) VALUES ('$CHAT_ID', '$NODE_NAME', '$AGENT_IP', '$AGENT_PORT', CURRENT_TIMESTAMP) ON CONFLICT(chat_id, node_name) DO UPDATE SET agent_ip='$AGENT_IP', agent_port='$AGENT_PORT', last_seen=CURRENT_TIMESTAMP;"
send_msg "$CHAT_ID" "节点注册成功/续期: \`$NODE_NAME\` ($AGENT_IP:$AGENT_PORT)"
send_msg "$CHAT_ID" "司令部已确认!节点接入成功: \`$NODE_NAME\` ($AGENT_IP:$AGENT_PORT)"
continue
fi