首次进入默认板块切换

This commit is contained in:
谢宇宁
2026-09-22 16:26:06 +07:00
parent 220018715c
commit 88471f5b95
2 changed files with 49 additions and 23 deletions
+2 -5
View File
@@ -94,8 +94,8 @@ class MainPageLogic extends GetxController {
]; ];
/// 当前底部 tab 下标:内容页(LazyIndexedStack)和底栏选中态的唯一真相源。 /// 当前底部 tab 下标:内容页(LazyIndexedStack)和底栏选中态的唯一真相源。
/// 启动固定落在短剧 /// 启动固定落在主页
final curPageIndex = DramaTipBubble.dramaTab.obs; final curPageIndex = 0.obs;
final shortIndex = (-1).obs; // -1 = 用短剧频道的默认页(AI短剧) final shortIndex = (-1).obs; // -1 = 用短剧频道的默认页(AI短剧)
final darkInitTabId = Rx<String?>(null); // 暗网默认亚模块 id final darkInitTabId = Rx<String?>(null); // 暗网默认亚模块 id
@@ -123,9 +123,6 @@ class MainPageLogic extends GetxController {
MineMsgProvider().loadData(); MineMsgProvider().loadData();
HomeUpdateMarkerProvider().loadData(); HomeUpdateMarkerProvider().loadData();
//启动就落在短剧:引导气泡不该再亮(这里早于 DramaTipBubble.start 的读盘)
if (curPageIndex.value == DramaTipBubble.dramaTab) DramaTipBubble.hide();
_yinseSub = eventBus.on<YinseinnerModel>(_onYinse); _yinseSub = eventBus.on<YinseinnerModel>(_onYinse);
_loginSub = eventBus.on<ReLoginEvent>(_onReLogin); _loginSub = eventBus.on<ReLoginEvent>(_onReLogin);
Executable → Regular
+47 -18
View File
@@ -1,23 +1,40 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# ============================================================ # ============================================================
# 手动替换加固模板 APK,并立即触发一次加固任务 # 手动替换加固模板 APK 并立即触发加固任务(多 app 支持)
# #
# 用法: # 用法:
# ./replace_and_run.sh # 不换 APK,只触发一次加固 # ./replace_and_run.sh # 不换模板,只触发一次(两个 app 都跑)
# ./replace_and_run.sh /path/to/xxx.apk # 先替换 template,再触发 # ./replace_and_run.sh huangguo /path/xxx.apk # 替换 huangguo 模板,再触发
# ./replace_and_run.sh -n /path/to/xxx.apk # 只替换 template,不触发 # ./replace_and_run.sh 91fans /path/xxx.apk # 替换 91fans 模板,再触发
# ./replace_and_run.sh -f # 只 follow 日志 # ./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 set -euo pipefail
JIAGU_HOST=root@139.162.47.194 JIAGU_HOST=root@139.162.47.194
JIAGU_DIR=/root/JiaguTool JIAGU_DIR=/root/JiaguTool
TEMPLATE=$JIAGU_DIR/template/tgdj_source.apk
LOG=$JIAGU_DIR/auto_jiagu.log 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 NO_RUN=0
FOLLOW_ONLY=0 FOLLOW_ONLY=0
APP=""
APK="" APK=""
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
@@ -25,7 +42,9 @@ while [ $# -gt 0 ]; do
-n) NO_RUN=1; shift ;; -n) NO_RUN=1; shift ;;
-f) FOLLOW_ONLY=1; shift ;; -f) FOLLOW_ONLY=1; shift ;;
-h|--help) -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 ;; *) APK="$1"; shift ;;
esac esac
done done
@@ -40,9 +59,14 @@ fi
# ---------- 替换模板 APK ---------- # ---------- 替换模板 APK ----------
if [ -n "$APK" ]; then if [ -n "$APK" ]; then
[ -z "$APP" ] && { echo "❌ 提供 APK 时必须先指定 app: huangguo | 91fans | tangguo"; exit 1; }
[ ! -f "$APK" ] && { echo "❌ APK 不存在: $APK"; 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") 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" scp -C "$APK" "$JIAGU_HOST:$TEMPLATE"
ssh "$JIAGU_HOST" "chmod 600 $TEMPLATE && ls -l $TEMPLATE" ssh "$JIAGU_HOST" "chmod 600 $TEMPLATE && ls -l $TEMPLATE"
fi fi
@@ -52,18 +76,15 @@ if [ "$NO_RUN" -eq 1 ]; then
exit 0 exit 0
fi fi
# ---------- 触发一次加固 ---------- # ---------- 触发一次加固(两 app 都跑,由 auto_jiagu.sh 内部循环)----------
log "→ 远端触发 $JIAGU_DIR/auto_jiagu.sh(约 3 分钟)" log "→ 远端触发 $JIAGU_DIR/auto_jiagu.sh(三 app 依次加固,约 2-3 分钟)"
log " 实时日志见下方,产物完成后自动退出"
# 后台跑 + 实时 follow 日志,脚本结束时 kill follow
ssh "$JIAGU_HOST" "nohup $JIAGU_DIR/auto_jiagu.sh >/dev/null 2>&1 &" </dev/null ssh "$JIAGU_HOST" "nohup $JIAGU_DIR/auto_jiagu.sh >/dev/null 2>&1 &" </dev/null
# tail follow 日志直到看到 "完成" 或 "❌" # tail follow 日志,遇到最外层"完成"退出
ssh "$JIAGU_HOST" "tail -n 0 -f $LOG" | while IFS= read -r line; do ssh "$JIAGU_HOST" "tail -n 0 -f $LOG" | while IFS= read -r line; do
echo " $line" echo " $line"
if echo "$line" | grep -qE '完成|❌|上一轮还在跑'; then if echo "$line" | grep -qE '^========== .* 完成 ==========$|❌|上一轮还在跑'; then
# kill 掉外层 tail 让脚本退出
pkill -P $$ -f "tail -n 0 -f $LOG" 2>/dev/null || true pkill -P $$ -f "tail -n 0 -f $LOG" 2>/dev/null || true
break break
fi fi
@@ -71,11 +92,19 @@ done
log "→ 拉取最终状态" log "→ 拉取最终状态"
ssh "$JIAGU_HOST" "bash -c ' ssh "$JIAGU_HOST" "bash -c '
echo \"----- S3 最新 5 个包 -----\" echo \"----- S3 huangguo/ 最新 -----\"
aws s3 ls s3://meirenyu/huangguo/ | tail -5 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 \"\"
echo \"----- MongoDB link -----\" 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 "✅ 完成" log "✅ 完成"