From 88471f5b951da734a392d25b20ff4073feb04c1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E5=AE=87=E5=AE=81?= Date: Tue, 22 Sep 2026 16:26:06 +0700 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E6=AC=A1=E8=BF=9B=E5=85=A5=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=9D=BF=E5=9D=97=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/hj_page/main_page/main_logic.dart | 7 +-- replace_and_run.sh | 65 +++++++++++++++++++-------- 2 files changed, 49 insertions(+), 23 deletions(-) mode change 100755 => 100644 replace_and_run.sh diff --git a/lib/hj_page/main_page/main_logic.dart b/lib/hj_page/main_page/main_logic.dart index 54f6cbf..0ce3037 100644 --- a/lib/hj_page/main_page/main_logic.dart +++ b/lib/hj_page/main_page/main_logic.dart @@ -94,8 +94,8 @@ class MainPageLogic extends GetxController { ]; /// 当前底部 tab 下标:内容页(LazyIndexedStack)和底栏选中态的唯一真相源。 - /// 启动固定落在短剧 - final curPageIndex = DramaTipBubble.dramaTab.obs; + /// 启动固定落在主页 + final curPageIndex = 0.obs; final shortIndex = (-1).obs; // -1 = 用短剧频道的默认页(AI短剧) final darkInitTabId = Rx(null); // 暗网默认亚模块 id @@ -123,9 +123,6 @@ class MainPageLogic extends GetxController { MineMsgProvider().loadData(); HomeUpdateMarkerProvider().loadData(); - //启动就落在短剧:引导气泡不该再亮(这里早于 DramaTipBubble.start 的读盘) - if (curPageIndex.value == DramaTipBubble.dramaTab) DramaTipBubble.hide(); - _yinseSub = eventBus.on(_onYinse); _loginSub = eventBus.on(_onReLogin); diff --git a/replace_and_run.sh b/replace_and_run.sh old mode 100755 new mode 100644 index 64b0dad..d3414a2 --- a/replace_and_run.sh +++ b/replace_and_run.sh @@ -1,23 +1,40 @@ #!/usr/bin/env bash # ============================================================ -# 手动替换加固模板 APK,并立即触发一次加固任务 +# 手动替换加固模板 APK 并立即触发加固任务(多 app 支持) # # 用法: -# ./replace_and_run.sh # 不换 APK,只触发一次加固 -# ./replace_and_run.sh /path/to/xxx.apk # 先替换 template,再触发 -# ./replace_and_run.sh -n /path/to/xxx.apk # 只替换 template,不触发 -# ./replace_and_run.sh -f # 只 follow 日志 +# ./replace_and_run.sh # 不换模板,只触发一次(两个 app 都跑) +# ./replace_and_run.sh huangguo /path/xxx.apk # 替换 huangguo 模板,再触发 +# ./replace_and_run.sh 91fans /path/xxx.apk # 替换 91fans 模板,再触发 +# ./replace_and_run.sh tangguo /path/xxx.apk # 替换 tangguo 模板,再触发 +# ./replace_and_run.sh -n huangguo /path/xxx.apk # 只替换 huangguo 模板,不触发 +# ./replace_and_run.sh -f # 只 follow 远端日志 +# +# App: +# huangguo -> template/hgdj_source.apk (appId=2) +# 91fans -> template/jyfans_source.apk (appId=3) +# tangguo -> template/tgdj_source.apk (appId=4) # ============================================================ set -euo pipefail JIAGU_HOST=root@139.162.47.194 JIAGU_DIR=/root/JiaguTool -TEMPLATE=$JIAGU_DIR/template/tgdj_source.apk LOG=$JIAGU_DIR/auto_jiagu.log +# app -> 服务器上模板文件名 +declare_template() { + case "$1" in + huangguo) echo "hgdj_source.apk" ;; + 91fans) echo "jyfans_source.apk" ;; + tangguo) echo "tgdj_source.apk" ;; + *) echo "" ;; + esac +} + NO_RUN=0 FOLLOW_ONLY=0 +APP="" APK="" while [ $# -gt 0 ]; do @@ -25,7 +42,9 @@ while [ $# -gt 0 ]; do -n) NO_RUN=1; shift ;; -f) FOLLOW_ONLY=1; shift ;; -h|--help) - sed -n '3,10p' "$0"; exit 0 ;; + sed -n '3,15p' "$0"; exit 0 ;; + huangguo|91fans|tangguo) + APP="$1"; shift ;; *) APK="$1"; shift ;; esac done @@ -40,9 +59,14 @@ fi # ---------- 替换模板 APK ---------- if [ -n "$APK" ]; then + [ -z "$APP" ] && { echo "❌ 提供 APK 时必须先指定 app: huangguo | 91fans | tangguo"; exit 1; } [ ! -f "$APK" ] && { echo "❌ APK 不存在: $APK"; exit 1; } + TPL=$(declare_template "$APP") + [ -z "$TPL" ] && { echo "❌ 未知 app: $APP"; exit 1; } + + TEMPLATE=$JIAGU_DIR/template/$TPL SIZE=$(stat -f%z "$APK" 2>/dev/null || stat -c%s "$APK") - log "→ 上传 $(basename $APK) ($SIZE bytes) → $TEMPLATE" + log "→ [$APP] 上传 $(basename $APK) ($SIZE bytes) → $TEMPLATE" scp -C "$APK" "$JIAGU_HOST:$TEMPLATE" ssh "$JIAGU_HOST" "chmod 600 $TEMPLATE && ls -l $TEMPLATE" fi @@ -52,18 +76,15 @@ if [ "$NO_RUN" -eq 1 ]; then exit 0 fi -# ---------- 触发一次加固 ---------- -log "→ 远端触发 $JIAGU_DIR/auto_jiagu.sh(约 3 分钟)" -log " 实时日志见下方,产物完成后自动退出" +# ---------- 触发一次加固(两 app 都跑,由 auto_jiagu.sh 内部循环)---------- +log "→ 远端触发 $JIAGU_DIR/auto_jiagu.sh(三 app 依次加固,约 2-3 分钟)" -# 后台跑 + 实时 follow 日志,脚本结束时 kill follow ssh "$JIAGU_HOST" "nohup $JIAGU_DIR/auto_jiagu.sh >/dev/null 2>&1 &" /dev/null || true break fi @@ -71,11 +92,19 @@ done log "→ 拉取最终状态" ssh "$JIAGU_HOST" "bash -c ' - echo \"----- S3 最新 5 个包 -----\" - aws s3 ls s3://meirenyu/huangguo/ | tail -5 + echo \"----- S3 huangguo/ 最新 -----\" + aws s3 ls s3://meirenyu/huangguo/ | grep -v channels/ | tail -3 + echo \"\" + echo \"----- S3 91fans/ 最新 -----\" + aws s3 ls s3://meirenyu/91fans/ | tail -3 + echo \"\" + echo \"----- S3 tangguo/ 最新 -----\" + aws s3 ls s3://meirenyu/tangguo/ | tail -3 echo \"\" echo \"----- MongoDB link -----\" - mongosh \"mongodb://stat_center:v5weEdNvXnJCMr9TeFFm@172.104.52.130:27017,172.104.52.26:27017,172.104.52.242:27017/stat_center?authSource=stat_center&replicaSet=fish0\" --quiet --eval \"print(db.getCollection(\\\"version\\\").findOne({appId:2}).link[0])\" + mongosh \"mongodb://stat_center:v5weEdNvXnJCMr9TeFFm@172.104.52.130:27017,172.104.52.26:27017,172.104.52.242:27017/stat_center?authSource=stat_center&replicaSet=fish0\" --quiet --eval \" + db.getCollection(\\\"version\\\").find({appId:{\\\$in:[2,3,4]}}).forEach(d => print(\\\"appId=\\\" + d.appId + \\\" \\\" + d.link[0])); + \" '" log "✅ 完成"