简体中文 | English
graph TD
subgraph 独立管理器[独立管理器 - adguard-home-manager-mod]
M1[Flutter 应用<br>arm64-v8a] --> M2[自动读取 YAML<br>获取随机管理端口]
M2 --> M3[使用 root/root 凭证<br>连接 AGH API]
M3 --> M4[首页:全部保护开关<br>暂停时长选择]
M3 --> M5[日志·统计·DNS配置]
M3 --> M6[订阅链接 PROXY_URL<br>写入 config.prop]
M1 --> M7[通知栏快捷磁贴开关]
M1 --> M8[开机自启动 MainActivity]
end
subgraph 安装流程[安装流程 - customize.sh]
I1[开始安装] --> I2[检测Hosts模块冲突]
I2 --> I3[停止旧进程·备份配置]
I3 --> I4[解压文件·设置权限]
I4 --> I5[锁定脚本 chattr +i]
I5 --> I6[安装完成,提示重启]
end
subgraph 启动主流程[启动主流程 - service.sh]
S1[service.sh 执行] --> S2[解锁脚本防篡改]
S2 --> S3{检测到Hosts模块?}
S3 -->|有| S4[禁用模块并退出]
S3 -->|无| S5{AGH进程是否已运行?}
S5 -->|是(软重启)| S6[跳过初始化]
S5 -->|否(冷启动)| S7[随机化端口·修改配置]
S7 --> S8[启动AGH]
S8 --> S9{启动验证成功?}
S9 -->|是| S10[记录启动成功]
S9 -->|否| S11[exec $0 自重启]
S11 --> S1
S10 --> S12[启动守护脚本组]
S6 --> S12
end
subgraph 守护脚本组[守护脚本组 - 各自独立5秒循环]
DIR[<b>各自独立 每5秒循环</b>]
D1["iptables.sh"]
D1 --> D1A[每轮重载 config.prop]
D1A --> D1B{检测 need_restart<br>(pgrep AGH)}
D1B -->|进程丢失| D1C[start_agh:写日志·启动AGH]
D1B -->|进程正常| D1D[继续]
D1C --> D1E[检测 need_fix<br>(规则检查)]
D1D --> D1E
D1E -->|规则异常| D1F[rebuild_rules:重建规则·刷新网络]
D1E -->|规则正常| D1G[sleep 5 回到循环]
D1F --> D1G
D1G --> D1
D2["NoAdsService.sh"]
D2 --> D2A[收集广告目录路径]
D2A --> D2B[检查锁定状态]
D2B -->|未锁定| D2C[删除目录·重建并锁定]
D2B -->|已锁定| D2D[跳过]
D2C --> D2E[强制关闭私人DNS]
D2D --> D2E
D2E --> D2F[sleep 5 回到循环]
D2F --> D2
D3["ProxyConfig.sh"]
D3 --> D3A[每轮重载 config.prop]
D3A --> D3B[遍历代理配置文件]
D3B --> D3C[修改YAML DNS指向AGH]
D3C --> D3D[重启代理服务·刷新网络]
D3D --> D3E[sleep 5 回到循环]
D3E --> D3
D4["ModuleMOD.sh"]
D4 --> D4A[检测系统语言]
D4A --> D4B{语言是否变化?}
D4B -->|是| D4C[更新 module.prop 描述]
D4B -->|否| D4D[跳过]
D4C --> D4E[sleep 5 回到循环]
D4D --> D4E
D4E --> D4
end
subgraph 卸载流程[卸载流程 - uninstall.sh]
U1[开始卸载] --> U2[遍历 /proc 停止所有 AGH 及脚本进程]
U2 --> U3[ProxyConfig --clean 还原代理配置]
U3 --> U4[清理 iptables 规则]
U4 --> U5[解锁 chattr 并删除残留文件]
U5 --> U6[删除 AGH 残留目录]
U6 --> U7[卸载完成,无残留]
end
%% 垂直顺序:管理器 → 安装 → 启动 → 守护 → 卸载
独立管理器 -.->|可选工具,读取/写入配置| 安装流程
安装流程 --> 启动主流程
启动主流程 --> 守护脚本组
守护脚本组 --> 卸载流程
style S5 fill:#f9f,stroke:#333
style S6 fill:#bbf,stroke:#333
style S7 fill:#bbf,stroke:#333
style S11 fill:#faa,stroke:#333
style D1 fill:#e1f5e1,stroke:#333
style D2 fill:#e1f0f5,stroke:#333
style D3 fill:#f5e1e1,stroke:#333
style D4 fill:#f5f0e1,stroke:#333
style DIR fill:#fff,stroke:#fff
style M1 fill:#e8d5f5,stroke:#333
style M7 fill:#d5f5e8,stroke:#333
style M8 fill:#d5f5e8,stroke:#333
8 followers · starred Dec 2025
Shell
100.0%
简体中文 | English
graph TD
subgraph 独立管理器[独立管理器 - adguard-home-manager-mod]
M1[Flutter 应用<br>arm64-v8a] --> M2[自动读取 YAML<br>获取随机管理端口]
M2 --> M3[使用 root/root 凭证<br>连接 AGH API]
M3 --> M4[首页:全部保护开关<br>暂停时长选择]
M3 --> M5[日志·统计·DNS配置]
M3 --> M6[订阅链接 PROXY_URL<br>写入 config.prop]
M1 --> M7[通知栏快捷磁贴开关]
M1 --> M8[开机自启动 MainActivity]
end
subgraph 安装流程[安装流程 - customize.sh]
I1[开始安装] --> I2[检测Hosts模块冲突]
I2 --> I3[停止旧进程·备份配置]
I3 --> I4[解压文件·设置权限]
I4 --> I5[锁定脚本 chattr +i]
I5 --> I6[安装完成,提示重启]
end
subgraph 启动主流程[启动主流程 - service.sh]
S1[service.sh 执行] --> S2[解锁脚本防篡改]
S2 --> S3{检测到Hosts模块?}
S3 -->|有| S4[禁用模块并退出]
S3 -->|无| S5{AGH进程是否已运行?}
S5 -->|是(软重启)| S6[跳过初始化]
S5 -->|否(冷启动)| S7[随机化端口·修改配置]
S7 --> S8[启动AGH]
S8 --> S9{启动验证成功?}
S9 -->|是| S10[记录启动成功]
S9 -->|否| S11[exec $0 自重启]
S11 --> S1
S10 --> S12[启动守护脚本组]
S6 --> S12
end
subgraph 守护脚本组[守护脚本组 - 各自独立5秒循环]
DIR[<b>各自独立 每5秒循环</b>]
D1["iptables.sh"]
D1 --> D1A[每轮重载 config.prop]
D1A --> D1B{检测 need_restart<br>(pgrep AGH)}
D1B -->|进程丢失| D1C[start_agh:写日志·启动AGH]
D1B -->|进程正常| D1D[继续]
D1C --> D1E[检测 need_fix<br>(规则检查)]
D1D --> D1E
D1E -->|规则异常| D1F[rebuild_rules:重建规则·刷新网络]
D1E -->|规则正常| D1G[sleep 5 回到循环]
D1F --> D1G
D1G --> D1
D2["NoAdsService.sh"]
D2 --> D2A[收集广告目录路径]
D2A --> D2B[检查锁定状态]
D2B -->|未锁定| D2C[删除目录·重建并锁定]
D2B -->|已锁定| D2D[跳过]
D2C --> D2E[强制关闭私人DNS]
D2D --> D2E
D2E --> D2F[sleep 5 回到循环]
D2F --> D2
D3["ProxyConfig.sh"]
D3 --> D3A[每轮重载 config.prop]
D3A --> D3B[遍历代理配置文件]
D3B --> D3C[修改YAML DNS指向AGH]
D3C --> D3D[重启代理服务·刷新网络]
D3D --> D3E[sleep 5 回到循环]
D3E --> D3
D4["ModuleMOD.sh"]
D4 --> D4A[检测系统语言]
D4A --> D4B{语言是否变化?}
D4B -->|是| D4C[更新 module.prop 描述]
D4B -->|否| D4D[跳过]
D4C --> D4E[sleep 5 回到循环]
D4D --> D4E
D4E --> D4
end
subgraph 卸载流程[卸载流程 - uninstall.sh]
U1[开始卸载] --> U2[遍历 /proc 停止所有 AGH 及脚本进程]
U2 --> U3[ProxyConfig --clean 还原代理配置]
U3 --> U4[清理 iptables 规则]
U4 --> U5[解锁 chattr 并删除残留文件]
U5 --> U6[删除 AGH 残留目录]
U6 --> U7[卸载完成,无残留]
end
%% 垂直顺序:管理器 → 安装 → 启动 → 守护 → 卸载
独立管理器 -.->|可选工具,读取/写入配置| 安装流程
安装流程 --> 启动主流程
启动主流程 --> 守护脚本组
守护脚本组 --> 卸载流程
style S5 fill:#f9f,stroke:#333
style S6 fill:#bbf,stroke:#333
style S7 fill:#bbf,stroke:#333
style S11 fill:#faa,stroke:#333
style D1 fill:#e1f5e1,stroke:#333
style D2 fill:#e1f0f5,stroke:#333
style D3 fill:#f5e1e1,stroke:#333
style D4 fill:#f5f0e1,stroke:#333
style DIR fill:#fff,stroke:#fff
style M1 fill:#e8d5f5,stroke:#333
style M7 fill:#d5f5e8,stroke:#333
style M8 fill:#d5f5e8,stroke:#333
8 followers · starred Dec 2025
Shell
100.0%