From 08bc1c1730dc158c671ca5cdeb88101591dbcd4b Mon Sep 17 00:00:00 2001 From: hotyue <52734432+hotyue@users.noreply.github.com> Date: Wed, 1 Apr 2026 07:32:40 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20V4.0=20=E7=BB=88=E6=9E=81=E8=BF=9B?= =?UTF-8?q?=E5=8C=96=20-=20=E6=96=B0=E5=A2=9E=E4=B8=80=E9=94=AE=E6=97=A0?= =?UTF-8?q?=E7=97=95=E5=8D=B8=E8=BD=BD=E3=80=81=E6=97=A5=E5=BF=97=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E7=98=A6=E8=BA=AB=EF=BC=8C=E5=B9=B6=E5=9C=A8=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E5=BC=95=E5=AF=BC=E4=B8=AD=E9=9B=86=E6=88=90=E5=8D=B8?= =?UTF-8?q?=E8=BD=BD=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/install.sh | 42 +++++++++++++++++++++++++++++------------- core/uninstall.sh | 35 +++++++++++++++++++++++++++++++++++ core/updater.sh | 17 ++++++++++++----- 3 files changed, 76 insertions(+), 18 deletions(-) create mode 100644 core/uninstall.sh diff --git a/core/install.sh b/core/install.sh index 2bdcde1..a209bf1 100644 --- a/core/install.sh +++ b/core/install.sh @@ -1,8 +1,8 @@ #!/bin/bash # ========================================================== -# 脚本名称: install.sh (IP-Sentinel 一键部署脚本 V3.0 终极版) -# 核心功能: 解析 JSON 冷数据、部署核心引擎、配置高频调度与互动守护 +# 脚本名称: install.sh (IP-Sentinel 一键部署脚本 V4.0 最终版) +# 核心功能: 区域选择、一键卸载、解析冷数据、配置高频调度与互动守护 # ========================================================== # 你的专属 Forgejo 仓库 Raw 数据直链前缀 @@ -26,22 +26,34 @@ else echo "⚠️ 未知系统,请确保已手动安装 curl, jq 和 pgrep" fi -# 2. 本地工作目录初始化 -mkdir -p "${INSTALL_DIR}/core" -mkdir -p "${INSTALL_DIR}/data/keywords" -mkdir -p "${INSTALL_DIR}/logs" - -# 3. 交互式引导 -echo -e "\n[2/6] 请选择你要伪装的目标区域:" +# 2. 交互式引导 (包含卸载选项) +echo -e "\n[2/6] 请选择你要伪装的目标区域或执行卸载:" echo " 1) 🇯🇵 日本 (东京 - JP)" echo " 2) 🇺🇸 美国 (美西 - US)" -read -p "请输入选择 [1-2] (默认1): " REGION_CHOICE +echo " 3) 🗑️ 一键卸载 IP-Sentinel" +read -p "请输入选择 [1-3] (默认1): " REGION_CHOICE +# 【新增升级】如果选择卸载,拉取卸载脚本执行并退出 +if [ "$REGION_CHOICE" == "3" ]; then + echo -e "\n⏳ 正在拉取卸载程序..." + curl -sL "${REPO_RAW_URL}/core/uninstall.sh" -o "/tmp/ip_uninstall.sh" + chmod +x "/tmp/ip_uninstall.sh" + bash "/tmp/ip_uninstall.sh" + rm -f "/tmp/ip_uninstall.sh" + exit 0 +fi + +# 正常安装流程匹配区域 case ${REGION_CHOICE:-1} in 2) REGION_CODE="US" ;; *) REGION_CODE="JP" ;; esac +# 本地工作目录初始化 (确保在确定安装后才创建目录) +mkdir -p "${INSTALL_DIR}/core" +mkdir -p "${INSTALL_DIR}/data/keywords" +mkdir -p "${INSTALL_DIR}/logs" + echo -e "\n[3/6] 是否配置 Telegram 机器人进行互动控制与战报接收?(y/n)" read -p "请输入选择 [y/n] (默认n): " TG_CHOICE TG_TOKEN="" @@ -83,13 +95,15 @@ INSTALL_DIR="$INSTALL_DIR" LOG_FILE="${INSTALL_DIR}/logs/sentinel.log" EOF -# 5. 拉取全套组件 (引擎、业务、更新、战报、守护进程及热数据) +# 5. 拉取全套组件 (引擎、业务、更新、战报、守护进程、卸载脚本及热数据) echo -e "\n[5/6] 正在部署核心引擎、互动组件与热数据..." curl -sL "${REPO_RAW_URL}/core/runner.sh" -o "${INSTALL_DIR}/core/runner.sh" curl -sL "${REPO_RAW_URL}/core/mod_google.sh" -o "${INSTALL_DIR}/core/mod_google.sh" curl -sL "${REPO_RAW_URL}/core/updater.sh" -o "${INSTALL_DIR}/core/updater.sh" curl -sL "${REPO_RAW_URL}/core/tg_report.sh" -o "${INSTALL_DIR}/core/tg_report.sh" curl -sL "${REPO_RAW_URL}/core/tg_daemon.sh" -o "${INSTALL_DIR}/core/tg_daemon.sh" +# 【确保拉取备用的卸载脚本】 +curl -sL "${REPO_RAW_URL}/core/uninstall.sh" -o "${INSTALL_DIR}/core/uninstall.sh" chmod +x ${INSTALL_DIR}/core/*.sh curl -sL "${REPO_RAW_URL}/data/user_agents.txt" -o "${INSTALL_DIR}/data/user_agents.txt" @@ -99,12 +113,12 @@ curl -sL "${REPO_RAW_URL}/data/keywords/kw_${REGION_CODE}.txt" -o "${INSTALL_DIR echo -e "\n[6/6] 正在注入系统定时任务与看门狗进程..." crontab -l 2>/dev/null | grep -v "ip_sentinel" > /tmp/cron_backup -# 【升级点】核心养护模块: 改为每 30 分钟触发一次 +# 核心养护模块: 每 30 分钟触发一次 echo "*/30 * * * * ${INSTALL_DIR}/core/runner.sh >/dev/null 2>&1" >> /tmp/cron_backup # 养料更新模块: 每周日凌晨 3 点静默去云端更新热数据 echo "0 3 * * 0 ${INSTALL_DIR}/core/updater.sh >/dev/null 2>&1" >> /tmp/cron_backup -# 【升级点】TG 相关任务 +# TG 相关任务 if [[ -n "$TG_TOKEN" ]] && [[ -n "$CHAT_ID" ]]; then # 每天早上 8 点发送昨天的统计战报 echo "0 8 * * * ${INSTALL_DIR}/core/tg_report.sh >/dev/null 2>&1" >> /tmp/cron_backup @@ -126,4 +140,6 @@ if [[ -n "$TG_TOKEN" ]]; then echo "📱 Telegram 互动控制中心已上线!" echo " 马上打开 TG 给你的机器人发送 /help 试试吧!" fi +# 【保留提示】本地卸载途径提示 +echo "🗑️ 若未来需卸载,可重新运行本脚本选择[3]或执行: bash ${INSTALL_DIR}/core/uninstall.sh" echo "========================================================" \ No newline at end of file diff --git a/core/uninstall.sh b/core/uninstall.sh new file mode 100644 index 0000000..c6e4419 --- /dev/null +++ b/core/uninstall.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# ========================================================== +# 脚本名称: uninstall.sh (IP-Sentinel 一键卸载脚本) +# 核心功能: 清除守护进程、清理系统定时任务、删除所有程序文件 +# ========================================================== + +INSTALL_DIR="/opt/ip_sentinel" + +echo "========================================================" +echo " 🗑️ 准备卸载 IP-Sentinel (VPS IP 自动养护哨兵)" +echo "========================================================" + +# 1. 停止运行中的守护进程与主控模块 +echo "[1/3] 正在终止后台 Telegram 守护进程与养护任务..." +pgrep -f tg_daemon.sh | xargs -r kill -9 >/dev/null 2>&1 +pgrep -f runner.sh | xargs -r kill -9 >/dev/null 2>&1 +pgrep -f mod_google.sh | xargs -r kill -9 >/dev/null 2>&1 + +# 2. 清除系统定时任务 (Cron) +echo "[2/3] 正在清理系统定时任务 (Cron)..." +crontab -l 2>/dev/null | grep -v "ip_sentinel" > /tmp/cron_backup +crontab /tmp/cron_backup +rm -f /tmp/cron_backup + +# 3. 删除所有文件与日志 +echo "[3/3] 正在抹除核心程序、配置文件与系统日志..." +if [ -d "$INSTALL_DIR" ]; then + rm -rf "$INSTALL_DIR" +fi + +echo "========================================================" +echo "✅ 卸载彻底完成!IP-Sentinel 已从您的系统中无痕移除。" +echo "👋 感谢您的使用,期待未来再次为您守护 IP!" +echo "========================================================" \ No newline at end of file diff --git a/core/updater.sh b/core/updater.sh index d14f0c9..2e332dc 100644 --- a/core/updater.sh +++ b/core/updater.sh @@ -1,8 +1,8 @@ #!/bin/bash # ========================================================== -# 脚本名称: updater.sh (IP-Sentinel 养料注入模块) -# 核心功能: 定期静默从云端拉取最新的搜索词库与 UA 指纹池 (OTA更新) +# 脚本名称: updater.sh (IP-Sentinel 养料注入与系统维护模块) +# 核心功能: 定期静默更新热数据、清理瘦身日志文件 # ========================================================== INSTALL_DIR="/opt/ip_sentinel" @@ -16,7 +16,7 @@ if [ ! -f "$CONFIG_FILE" ]; then fi source "$CONFIG_FILE" -# 2. 全局日志写入函数 (兼容统一格式) +# 2. 全局日志写入函数 log() { mkdir -p "${INSTALL_DIR}/logs" printf "[$(date '+%Y-%m-%d %H:%M:%S')] [%-5s] [%-7s] [%s] %s\n" "$2" "$1" "$REGION_CODE" "$3" >> "$LOG_FILE" @@ -24,7 +24,7 @@ log() { log "Updater" "INFO " "========== 触发后台静默 OTA 热数据更新 ==========" -# 3. 容灾机制拉取 UA 池 (下载到临时文件,如果成功且不为空,再覆盖原文件) +# 3. 容灾机制拉取 UA 池 TMP_UA="/tmp/ip_sentinel_ua.txt" curl -sL "${REPO_RAW_URL}/data/user_agents.txt" -o "$TMP_UA" if [ -s "$TMP_UA" ]; then @@ -46,4 +46,11 @@ else rm -f "$TMP_KW" fi -log "Updater" "INFO " "========== OTA 养料注入流程结束 ==========" \ No newline at end of file +# 5. 【升级点】日志防满瘦身机制 (保留最近 2000 行) +if [ -f "$LOG_FILE" ]; then + tail -n 2000 "$LOG_FILE" > "${LOG_FILE}.tmp" + mv "${LOG_FILE}.tmp" "$LOG_FILE" + log "Updater" "INFO " "🧹 系统日志已完成定期清理瘦身 (保留最新 2000 行)" +fi + +log "Updater" "INFO " "========== OTA 养料注入与系统维护结束 ==========" \ No newline at end of file