mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-28 05:46:36 +08:00
OpenFlare 下游树
本目录占据上游 backend/downstream/ 的位置,存放 OpenFlare 的全部业务,
按功能职责拆为 4 个插件 + 1 个共享层。上游目录
(backend/{core,pkg,plugins})通过 git fetch wavelet && git merge wavelet/main
吸收(第一次接线已 merge wavelet/feat/cordis-alignment,待该分支合入上游 main
后改走 wavelet/main)。本目录、frontend/ 与 backend/cmd 由本仓库持有。
合并前请 git config include.path ../.gitconfig(或 worktree 安全写法
git config include.path "$(git rev-parse --show-toplevel)/.gitconfig"),
以启用 .gitattributes 的 merge=ours。
backend/openflare/
├── plugins/
│ ├── server/ # 控制面插件:站点/区域/Cloudflare/Pages/WAF/节点/回源/健康/配置版本
│ │ ├── openflare/ admin/ oauth/ user/ upload/ cap/ config/ health/ # 业务域
│ │ ├── repository/ model/ infra/ shared/ pkg/ # 支撑层
│ │ └── router/ platform/ listener/ integration/ testhelper/ # 装配与接线
│ ├── agent/ # 边缘 nginx/WAF 代理守护进程插件
│ ├── relay/ # frps 中继守护进程插件
│ └── flared/ # frpc 隧道客户端守护进程插件
└── share/ # 插件间共享资源(见 share/README.md)
装配根在 backend/cmd(与上游同构):main.go + cmd/*.go 为 server 的
api/worker/schedule/all profile 入口,cmd/{agent,relay,flared}/main.go 为三个
守护进程入口。
依赖规则
plugins/<A>与plugins/<B>之间禁止互相 import;需要协作时走core/contracts或ctx.Events()。- 插件只允许 import 本插件内部包、
Wavelet/core、Wavelet/core/contracts、Wavelet/pkg与Wavelet/openflare/share。 share/禁止 import 任何插件实现与下游业务包。- 表单一所有者:
of_*全部由server插件建表与读写;w_*由上游平台插件拥有, 下游只能经契约或事件访问。
收敛路线
- 已完成:
agent/relay/flared各有plugin.go实现core.Plugin+core.Driver(DriverTypeAgent/DriverTypeRelay/DriverTypeFlared),入口backend/cmd/{agent,relay,flared}/main.go已改为core.NewApp(core.WithProfile(...))+app.Run()装配,-config旗标、 默认路径、退出码与启动日志保持原样;JSON 配置由各插件Apply自行加载。 - 已完成:
server/plugin.go实现core.Plugin,Apply以ctx.Router().Group(api_prefix)声明根级与/v1全部路由;router.Serve已删除,装配根改为core.App+driver_http.New(WithEngine(router.BuildEngine())),监听与优雅退出归内核。 路由保真由plugin_parity_test.go对拍baseline/routes-engine.txt(256 条方法+路径)保证。 - 待办:
platform/bootstrap的任务、设置与迁移注册迁入Apply;各业务域按插件标准 分层规范收敛到handler/ service/ repository/ model/ errs/ migrations/(模式 2); 引擎级中间件、NoRoute 前端兜底与白名单生效三项能力回流上游后,去掉BuildEngine交给WithEngine这一例外。