之前的面板只做了「这个入站指向哪个出站」,那是改配置文件。但 metacubexd 里点一条线路 改的根本不是入站,是策略组的当前选中——调 PUT /proxies/{组},不写文件、立刻生效。 mixed-port 走规则表,末尾 MATCH,PROXY 把流量交给 PROXY 组,所以换那个组的选中就等于 换了这个端口的出口。这是每天都要点的动作,之前整个漏了。 面板顶部现在显示完整链条(PROXY → AUTO → 某条线路),并让人在最后一个策略组上换选中。 只显示第一层等于没回答「这个端口现在走哪条线」。 透传的白名单里为此开了唯一一个写操作,单独一条路由而不是放开整个转发。
设计基调定为:层次靠底色和一像素描边而不是投影,一屏最多两层容器,间距给足。 tokens.css 顶部写了这三条规则,后面的组件都是它们的推论。 入站列表把两套写法合并成一张表:老式顶层端口字段(mixed-port 这些)和 listeners 数组。 只画 listeners 的话,一台只用 mixed-port 的机器打开会是空板,而那个端口正在跑—— 这等于对用户撒谎。合并逻辑在 shared/inbounds.ts,带 10 个测试。 后端顺带能提供打包后的静态文件了,一个进程就能跑起来。
接口分三类:配置读写走保护链路,内核状态和只读透传,静态字段表。 透传用白名单而不是黑名单——写操作属于运行时面板,等做到那步再单独开, 现在不留一个什么都能转发的口子。 令牌即便在只监听本机时也强制校验:同一台机器上跑着容器和别的服务, 「只监听 127.0.0.1」不等于「只有你能访问」。比较用常数时间,避免靠响应耗时猜。 scripts/api-smoke.ts 对着真服务和真内核跑 17 项检查,端到端确认过 改配置之后内核会重载、新端口真的被监听起来。