一套跑在 Debian 13 (trixie) 上的软路由管理系统,提供 43 个功能页面的 Web 管理面板:WAN 接入、PPPoE 多拨、DHCP/DNS、IPv6、防火墙、QoS 限速、 访问控制、DDNS、文件共享、Docker 管理等。 核心设计原则:不重新实现任何协议 PPPoE 交给 ppp,DHCP 交给 dnsmasq,IPv6 RA 交给 radvd,NAT 交给 nftables。 Web 面板只做三件事:渲染原生配置文件 → 语法预检 → 原子写入并 reload。 面板删掉后,系统仍是一台配置完好的 Debian 路由器。 安全默认值 · 安装后不接管网络:不改默认路由、不开 IP 转发、不启动 DHCP 服务 · 所有改网络的动作都需要用户在面板上亲手点「应用」 · 避开 5900 端口,不触碰 VNC / X 会话 · 配置写入前先做语法预检,失败则回滚 架构 · backend/ Python 3 标准库,零第三方依赖(9 个模块) · web/ 原生 JS/CSS,无构建步骤 · 常驻 helper 通过 Unix socket 提供 75 个动作,socket 不可用时回退 subprocess · 鉴权走 X-Token 请求头 打包 · packaging/build-deb.sh → drouter_1.0.0_all.deb(含 6 个 systemd 单元) · scripts/make-offline-deps.sh → 236 个依赖 .deb + 本地仓库索引 · packaging/build-offline-bundle.sh → 自包含离线包,目标机零外网可装 · packaging/build-docker.sh → 容器镜像(体验用) 测试 40 套单元测试 + 3 个前端检查脚本(菜单映射 / 离线渲染 / 手机适配), 全部挂在 devtools/sync.sh 的预检链里。 许可:MIT
29 lines
1.1 KiB
Bash
29 lines
1.1 KiB
Bash
#!/bin/bash
|
|
# drouter —— 卸载/升级前停止服务
|
|
set -e
|
|
case "$1" in
|
|
remove|upgrade|deconfigure)
|
|
# 必须覆盖**随包发布的每一个单元**。漏掉一个的后果:升级/卸载后
|
|
# 那个守护还在跑,而它指向的代码已经被换成新版本/删掉了 ——
|
|
# 典型症状是「卸载完 drouter-web 还在响应」或「旧守护 crash loop」。
|
|
# 末尾的 drouter-logd.timer / drouter-qos.service 是 helper 在运行时
|
|
# 动态生成的,这里一并停掉,不存在也不会报错。
|
|
for u in drouter-rescue drouter-web drouter-helpd drouter-shelld \
|
|
drouter-snapshot.timer drouter-snapshot.service \
|
|
drouter-logd.timer drouter-logd.service drouter-qos.service \
|
|
drouter-cleanup.timer; do
|
|
systemctl stop "$u" >/dev/null 2>&1 || true
|
|
systemctl disable "$u" >/dev/null 2>&1 || true
|
|
done
|
|
systemctl daemon-reload >/dev/null 2>&1 || true
|
|
;;
|
|
failed-upgrade)
|
|
;;
|
|
*)
|
|
echo "prerm called with unknown argument \`$1'" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
#DEBHELPER#
|
|
exit 0
|