- 账号化:节点更名账号,/nodes -> /accounts;添加账号直达 Cloudflare OAuth,自动创建账号并同步账号下全部域名(catch-all 邮箱随同步创建) - 域名:移除手工添加;点击域名『设置 Email Workers』= 部署账号级 Email Worker + Email Routing + catch-all;支持按账号筛选 - Webhook 三级模型:邮箱 -> 域名 -> 全局,收信取第一个命中者;支持自定义请求头与 key(默认 Authorization: Bearer <key>,兼做 X-WmailHub-Signature 签名);独立 webhooks 实体与 /webhooks、/keys 页面删除,Key 管理收进设置模态窗口 - 设置中心:全局 Webhook / 默认 Node Ingress 地址 / 修改密码 / API & MCP Keys(生成、撤销、删除) - UI:Header 标题副标题紧凑化(修复溢出),LOGO 加版本号 tag(v1.1.0 取自 package.json),各列表页搜索框 - 工具链:前端构建 Bun.build -> Vite(vite 8 + @vitejs/plugin-react) - 后端:/api/settings、POST /api/domains/:id/setup、0002 迁移(投递行固化三级目标配置);MCP 去 list_webhooks(5 工具);迁移执行器加 _migrations 记录 - 测试:44/44(新增 settings 套件、webhook 三级优先级/SSRF/签名);UI 冒烟 11/11
27 lines
915 B
TypeScript
27 lines
915 B
TypeScript
/** E2E 临时接收器:18790,打印签名/Authorization 校验结果 */
|
|
const KEY = "wmh_e2e_key_12345";
|
|
Bun.serve({
|
|
port: 18790,
|
|
async fetch(req) {
|
|
const body = await req.text();
|
|
const ts = req.headers.get("X-WmailHub-Timestamp") ?? "";
|
|
const sig = req.headers.get("X-WmailHub-Signature") ?? "";
|
|
const { hmacSha256Hex } = await import("../../shared/src/index.ts");
|
|
const expect = await hmacSha256Hex(KEY, `${ts}.${body}`);
|
|
const payload = JSON.parse(body) as Record<string, unknown>;
|
|
console.log(
|
|
JSON.stringify({
|
|
got: "webhook",
|
|
auth: req.headers.get("Authorization"),
|
|
signature_valid: sig === expect,
|
|
event: payload.event,
|
|
subject: payload.subject,
|
|
mailbox: payload.mailbox,
|
|
custom_header: req.headers.get("X-E2E"),
|
|
}),
|
|
);
|
|
return Response.json({ ok: true });
|
|
},
|
|
});
|
|
console.log("receiver on :18790");
|