im0o
|
c9b410c65e
|
refactor: 砍掉非刚需功能,修若干静默失败,新增 Sub-Store 模块
订阅的聚合、改名、筛选交给 Sub-Store 承担,脚本收窄为「管内核 + 管服务 +
生成一份最小可用配置」。1579 → 1542 行,但配置相关的多行 YAML 手术全部消失。
砍掉:
- 入站端口 listeners 全套、多订阅与订阅管理菜单、GEO 菜单、地区分组、
局域网开关、备份还原菜单、URL 导入;管理接口那项改成只读显示密钥
- 配置菜单从 11 项减到 5 项,剩下的 YAML 改写只有顶层单键
修:
- ERR trap 在写操作里其实是失效的: `func || true` 会关掉整个函数体的
errexit 且无法在内部恢复。所以改为逐条显式检查,并给所有写操作补
require_root —— die 的 exit 是当前唯一还能可靠中止的机制
- cfg_set 用 sed 替换会损坏数据: 替换文本里 & 代表整条匹配,值含 & 时
旧行会被塞进新值;| 和 \ 还会被改写成 &。改用 awk 整行重建,值走
环境变量传入(-v 会解释转义序列,吃掉反斜杠)
- 订阅地址含 # 时会被正则截断,导致列表与改写的计数口径不一致、改错行、
静默丢订阅。改用 awk 取最后一个标记位置来切
- cfg_backup 的 cp 失败仍返回 0 并吐出不存在的路径,让「改坏了就还原」
整条链路空转
- do_update 里 install 失败被吞掉,然后拿旧二进制启动并报升级成功
- svc_state 的 list-unit-files|grep -q 撞 SIGPIPE + pipefail,装了也判为未装
- svc_enabled 对 disabled 单元输出两行
- latest_version 缺 --max-time,网络被挂住时菜单无限等
- 向导端口输错直接 die 掉整个菜单;重启失败没有任何提示
新增 Sub-Store(可选,不进一键安装):
- 原生 Node + systemd,装到 /opt/sub-store;不替你装 Node,只检测并给命令
- 更新走和内核升级同款闸门: node --check 验后端、unzip -t 验前端,
备份 → 换上 → 起服务,起不来自动回滚
- 后端 API 无鉴权,随机路径就是唯一凭据,故默认绑 127.0.0.1 并打印 SSH 隧道命令
- 卸载 mihomo 不连带删除它,订阅数据在里面
验证: 三场景 × 9 项严格回归(保留 set -Eeuo pipefail 和 ERR trap)全过;
三种规则模式生成的配置用 PyYAML 解析通过;含 # 的订阅地址往返无损;
cfg_set 对 & | \ 五种输入均原样写入;两个 Sub-Store 资产地址经 API 确认存在。
|
2026-08-09 22:22:18 +08:00 |
|
im0o
|
ce8623ccb9
|
fix: 没有入站端口时不该报「第 N 行出错」
进「配置管理 → 入站端口」而配置里一条入站都没有时,脚本会连报两次
错误然后退出。
cfg_listener_list 末尾是 grep 管道,grep 无匹配时退出码为 1,配上
pipefail 就把整个函数判为失败,触发 ERR trap。"没有入站"是正常状态,
不是错误,末尾补 || true。
两次报错是同一根因的两次现身:第一次在 $() 子 shell 里,只杀掉子 shell;
第二次是外层赋值继承了非零码,才真正终止脚本。
|
2026-08-09 18:57:26 +08:00 |
|
im0o
|
c756a92ba3
|
feat: 多订阅、地区分组、回国模式、多入站、GEO 管理
回国模式生成 .mrs 规则集而不是用 GEOIP:国内站挂在境外 CDN 时解析出的
IP 不在本国段,只靠 GEOIP 会整片漏掉,所以域名维度打头、IP 维度兜底。
GEO 菜单列出数据文件的大小和更新时间,因为下载失败是静默的 —— 规则
一条都匹配不上,流量全落到 MATCH,看起来像「配置没生效」。
入站每条写成一行带标记的 YAML 流式映射,增删就是加一行删一行。
|
2026-08-09 18:36:59 +08:00 |
|
im0o
|
0704a27bac
|
docs: 把削成单字的动词补回完整词语
装→安装、验→校验、起→启动、跑→运行 之类,脚本提示和 README 一起改。
|
2026-08-09 18:36:59 +08:00 |
|
im0o
|
ab0476bd84
|
feat: 快捷命令 mihomo-up
装一个启动器到 PATH,每次执行都拉取最新脚本再运行,仓库更新后机器上
无需手动更新。
它同时落一份缓存,并在拉取失败、或拉到的内容 bash -n 不过时回落到缓存。
这个脚本管的是代理,最需要它的时候往往正是网络不正常的时候。
顺带按 think-twice 过了一遍提示文案,并让子命令失败时干净退出,
不再在人话提示后面追加一句「第 N 行出错」。
|
2026-08-09 18:36:59 +08:00 |
|
im0o
|
88ebdb990d
|
feat: 一键安装、配置向导、卸载
原本只换内核二进制。现在补上从零到能用的完整链路:装内核 →
写 systemd 服务 → 向导生成 config.yaml → 启动,以及反过来的卸载清理。
所有配置改动统一走「先备份 → 改 → 用内核 -t 校验 → 不过就问是否还原」。
|
2026-08-09 18:36:58 +08:00 |
|
im0o
|
9cfff9a3db
|
docs: 更新 README 中交互菜单的脚本地址
|
2026-08-09 12:56:03 +08:00 |
|
im0o
|
8e4505391d
|
Initial commit: mihomo 内核管理脚本
bash 脚本,用于在 Linux 服务器上检查、安装、升级、回滚 mihomo 内核,
支持交互菜单与命令行双模式,带安全验证、自动备份与回滚。
|
2026-08-09 12:51:57 +08:00 |
|