feat: WmailHub v1.0.0 —— Cloudflare Email Workers 邮件接收与转发平台(本地可用版本)

- Console:React 19 + antd 6.6.5 前端(登录 admin/admin)+ Hono 管理 API
  (Nodes/Domains/Mailboxes/Emails/Webhooks/Keys/OAuth/Admin)
- Node:Bun 转发节点(HMAC 签名、有限重试、心跳、结构化日志、优雅退出)
- Email Worker:Cloudflare email handler + 本地联调入口
- shared:HMAC 协议(docs/04)、wmh_ Key(32 位)、AES-GCM 加密、SSRF 防护
- 邮件管线:postal-mime 解析、附件、catch-all、限额、malformed 降级、TTL 1 天
- Webhook:签名投递、指数退避重试、SSRF 校验、投递日志
- API v1 + MCP(JSON-RPC,六工具,凭据 kind 隔离)
- Cloudflare OAuth:真实 + 本地 sim 模式,自动安装管线(幂等,无需手工命令)
- 测试:bun test 41 例(协议安全/管线/TTL/Webhook/SSRF/MCP/OAuth/鉴权)+ Playwright UI 冒烟
- LOGO/favicon 由 codex CLI 生成
This commit is contained in:
BigCode
2026-09-30 03:34:37 +08:00
commit d4c1334143
87 changed files with 9268 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
// WmailHub Console —— Cloudflare Workers 部署配置(生产)
// 本地开发不需要 wrangler:直接 `bun run dev`。首次部署前:
// 1. `bunx wrangler d1 create wmailhub` -> 填 database_id
// 2. `bunx wrangler r2 bucket create wmailhub`
// 3. `bunx wrangler d1 execute wmailhub --remote --file=./migrations/0001_init.sql`
// 4. `bunx wrangler secret put SESSION_SECRET` (>=32 位随机串)
// 5. 配置 CF_OAUTH_CLIENT_ID/SECRET/REDIRECT_URI vars(真实 OAuth;缺省走 sim)
{
"$schema": "node_modules/wrangler/config-schema.json",
"name": "wmailhub-console",
"main": "src/worker.ts",
"compatibility_date": "2026-09-01",
"assets": {
"directory": "./public",
"binding": "ASSETS",
"not_found_handling": "single-page-application"
},
"d1_databases": [
{
"binding": "DB",
"database_name": "wmailhub",
"database_id": "REPLACE_AFTER_D1_CREATE"
}
],
"r2_buckets": [
{
"binding": "R2",
"bucket_name": "wmailhub"
}
],
"triggers": {
// TTL 清理每 15 分钟(docs/09 建议);Webhook 重试每 1 分钟
"crons": ["*/1 * * * *"]
},
"vars": {
// PUBLIC_BASE_URL 改为你的 Console 域名;OAuth redirect 需要在 Cloudflare Dashboard 登记
"PUBLIC_BASE_URL": "https://wmailhub-console.<your-subdomain>.workers.dev"
}
}