fix(web): redact public host targets

This commit is contained in:
Your Name
2026-06-13 02:01:13 +08:00
parent 0d30e1b256
commit f71c2779a8
7 changed files with 132 additions and 37 deletions

View File

@@ -1,3 +1,26 @@
## 2026-06-13P0-PUBLICENV client/API source redaction production patch
**01:46 / 02:00 source patch**
- 在乾淨 worktree `/tmp/awoooi-publicenv-prod-20260613-014604`、基底 `gitea/main=6a8b9f5c` 上補前端 public env / host display redaction未使用 dirty main tree 的前端缺檔狀態。
- `apps/web/src/app/[locale]/classic/page.tsx`legacy host catalog key、API host render value 與 K3s control-plane fallback 改為 `host:*` 資產代號。
- `apps/web/src/app/[locale]/iwooos/page.tsx`IwoooS topology / host coverage 中的 dev / Kali host address 改為 `host:*` 資產代號。
- `apps/web/src/components/dashboard/live-dashboard.tsx`:移除 `NEXT_PUBLIC_HOST_IPS` 讀取與 private-IP fallback改用公開 host slot idsruntime store 有資料時仍以 store host key 產生卡片。
- `apps/web/src/components/dashboard/live-host-card.tsx`:顯示前把 runtime host IP 轉成 `host:*`,避免卡片直接顯示內網 IP。
- `apps/web/src/components/infra/host-grid.tsx`:共用 HostGrid 顯示層加入 runtime IP redaction移除 `NEXT_PUBLIC_K8S_VIP_INFO` 讀取,固定顯示 redacted K8s topology 文案。
- `apps/web/src/app/api/sentry-tunnel/route.ts`:移除 server-side `SENTRY_HOST` 私網 fallbackruntime 未明確注入時 POST 以 `503` fail-closedGET 健康檢查只回 `target_configured` boolean不再回顯 target。
**驗證(本地)**
- Targeted source scan上述五個前端檔與 `api/sentry-tunnel` 不再命中 `192.168.0.110 / 111 / 112 / 120 / 121 / 125 / 168 / 188``NEXT_PUBLIC_HOST_IPS``NEXT_PUBLIC_K8S_VIP_INFO``SENTRY_HOST ??``target: SENTRY_HOST``NEXT_PUBLIC_SENTRY_DSN``工作視窗``批准!``source_thread_id``codex_delegation`
- `pnpm --filter @awoooi/web typecheck` 通過。
- `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work NEXT_PRIVATE_BUILD_WORKER_COUNT=1 SENTRY_SUPPRESS_GLOBAL_ERROR_HANDLER_FILE_WARNING=1 pnpm --filter @awoooi/web build`Next compile 成功、static pages `92/92` 完成;本機最後在 `collect-build-traces` 因磁碟剩餘空間不足 `ENOSPC` 失敗。這是本機磁碟限制,不是 TypeScript / compile error。
- 部分 build 產物掃描:`apps/web/.next/static` 與 generated HTML / RSC 未命中本輪 private IP / public env / 工作視窗字串。
- `scripts/ops/doc-secrets-sanity-check.py docs .gitea` 通過,`DOC_SECRET_SANITY_OK scanned_files=728``source-control-owner-response-guard.py --root .``security-mirror-progress-guard.py --root .` 通過。
**仍需 owner review / production gate**
- `NEXT_PUBLIC_SENTRY_DSN` 舊 workflow / runtime env cleanup 與 `SENTRY_HOST` runtime 注入證據仍需 owner review本輪只改 source fail-closed 與 public GET redaction不直接改 workflow / runtime secret / deployment。
- `k8s/awoooi-prod/05-deployment-web.yaml` 仍保留 legacy `NEXT_PUBLIC_HOST_IPS` / `NEXT_PUBLIC_K8S_VIP_INFO` env前端 source 已不讀取manifest cleanup 需 owner review。
- 不能宣稱 production remediation complete直到 Gitea CD build/deploy 成功、production bundle rescan、desktop/mobile Browser smoke、overflow 與工作視窗內容外洩檢查全部通過。
## 2026-06-13Post-CD cold-start green 與 SSH trust guardrail closeout
**01:26 / 01:29 live refresh**