开发与命令
Tower 的后端是一个 Go 程序,LuCI 前端通过 rpcd 调它的子命令。文档站本身也用同一套构建方式,见文末。
目录结构
| 路径 | 作用 |
|---|---|
tower/ | Go 后端:解析、规则、生成、本机订阅服务 |
tower/cmd/tower/ | 入口:不带子命令是常驻服务,带子命令是 CLI |
tower/internal/ | api / generator / parser / rule / rules / service / store / model |
luci-app-tower/ | LuCI 界面与 rpcd 权限 |
docs/site/ | 本文件站:内容 + 构建脚本 |
scripts/install.sh | 一键安装脚本 |
构建与测试
cd tower
go test ./...
go vet ./...
go build ./cmd/tower
改 LuCI 页面不需要编译,把文件放到设备的 /www/luci-static/ 下就能验;改后端要重新编译 tower 包。
命令行
后端自身带 CLI,LuCI 调的就是这些:
| 子命令 | 用途 |
|---|---|
subscriptions / refresh | 列出订阅 / 刷新订阅 |
nodes / add / remove | 列出节点 / 增删节点或订阅 |
update_node / remove_node | 编辑、删除单个自有节点 |
import | 导入规则方案 |
schemes / scheme / add_scheme | 列出方案 / 查看 / 新增 |
refresh_scheme / rename_scheme / remove_scheme | 刷新缓存 / 改名 / 删除方案 |
preflight_export | 导出前预检:目标、协议、规则是否兼容 |
export_begin / export_read / export_discard | 大配置分段读取,避免一次性占内存 |
export | 一次性导出 |
links | 输出纯节点链接 |
share_create / share_revoke | 生成本机订阅地址 / 吊销 |
capabilities | 输出各目标客户端的协议与规则支持矩阵 |
数据目录默认 /etc/tower,服务端口默认 127.0.0.1:7443,都能用 -data / -listen 覆盖。
维护这个文档站
内容在 docs/site/content/,每页只写正文片段,标题外壳和导航由构建脚本统一套上。
python3 docs/site/build.py # 生成到 .build/docs-site
python3 docs/site/build.py --check # 只自检:锚点重复、站内死链、导航漏页
python3 -m http.server 4173 --directory .build/docs-site
新增一页要做三件事:在 docs/site/content/ 加 HTML、在 docs/site/site.json 的导航里登记、所有 h2/h3 都带 id。漏了任何一项,--check 会报错。
推送后由 .github/workflows/docs.yml 校验并发布到 GitHub Pages。