Entrega read-only de apontamentos DNS (Cloudflare, OpenPanel BIND, público) no Desk e Console /admin/dominio, com spec, scripts de rollback e patches VM112 para painel lateral no passo DNS do onboarding (deploy wizard pendente). Co-authored-by: Cursor <cursoragent@cursor.com>
110 lines
3.6 KiB
Markdown
110 lines
3.6 KiB
Markdown
# DNS Viewer V1 — Execução e versionamento
|
||
|
||
**Responsável:** Cursor Agent · **Aprovado por:** Roger
|
||
**Data:** 2026-06-25
|
||
**Spec:** [dns-viewer.md](../dns-viewer.md) · Rollback: [DNS-VIEWER-ROLLBACK.md](./DNS-VIEWER-ROLLBACK.md)
|
||
|
||
---
|
||
|
||
## Escopo desta execução
|
||
|
||
| Fase | Incluída agora | Entregável |
|
||
|------|----------------|------------|
|
||
| V0 | ✅ baseline | `cloudflare_dns.py` + modal Desk (já existe) |
|
||
| V1 | 📋 próximo deploy | API `GET /api/v1/dns/viewer/{domain}` |
|
||
| V1b | 📋 | `dns-viewer.js` + migrar modal Desk |
|
||
| V2–V4 | ⏳ futuro | OpenPanel, Console, Wizard |
|
||
|
||
---
|
||
|
||
## Checklist pré-deploy (obrigatório)
|
||
|
||
```bash
|
||
# CT130 — tag git (usar SSHPASS se preflight/rollback a partir do Spec Hub)
|
||
cd /opt/ligbox-spec-hub/repos/ligbox-ops-platform
|
||
git tag -a dns-viewer-pre-v1-$(date +%Y%m%d) -m "Antes DNS Viewer V1"
|
||
|
||
# VM122 — backup (CT130: export SSHPASS=805353)
|
||
export SSHPASS='805353' # opcional — só se SSH key falhar
|
||
bash specs/037-dns-multi-cloudflare-orchestration/deploy/scripts/preflight-dns-viewer.sh \
|
||
--host root@10.10.10.122
|
||
```
|
||
|
||
---
|
||
|
||
## Ficheiros versionados (monorepo)
|
||
|
||
| Ficheiro | Fase | Notas |
|
||
|----------|------|-------|
|
||
| `projects/ops-desk/api/app/cloudflare_dns.py` | V0 | Não remover — provider CF |
|
||
| `projects/ops-desk/api/app/dns_viewer.py` | V1 | **Novo** orquestrador |
|
||
| `projects/ops-desk/api/app/openpanel_dns.py` | V2 | Novo — opcional |
|
||
| `projects/ops-desk/api/app/main.py` | V1 | Rota viewer + flag |
|
||
| `projects/ops-desk/api/app/permissions.py` | V1 | `can_read_dns_viewer` |
|
||
| `projects/ops-desk/frontend/assets/dns-viewer.js` | V1b | **Novo** componente |
|
||
| `projects/ops-desk/frontend/assets/app.js` | V1b | Integrar viewer |
|
||
| `projects/ops-desk/frontend/index.html` | V1b | Cache bust `?v=` |
|
||
| `projects/wizard/backend/app/services/dns_viewer.py` | V4 | Wizard variant |
|
||
|
||
---
|
||
|
||
## Deploy VM122 (após implementação V1/V1b)
|
||
|
||
```bash
|
||
# CT130 ou laptop com rsync
|
||
REPO=/opt/ligbox-spec-hub/repos/ligbox-ops-platform
|
||
rsync -av --delete \
|
||
"$REPO/projects/ops-desk/api/app/" \
|
||
root@10.10.10.122:/opt/ligbox-ops-platform/api/app/
|
||
|
||
rsync -av \
|
||
"$REPO/projects/ops-desk/frontend/assets/" \
|
||
root@10.10.10.122:/opt/ligbox-ops-platform/frontend/assets/
|
||
|
||
ssh root@10.10.10.122 'cd /opt/ligbox-ops-platform && \
|
||
grep -q DNS_VIEWER_ENABLED .env || echo DNS_VIEWER_ENABLED=1 >> .env && \
|
||
docker compose -f docker-compose.mvp.yml build api frontend && \
|
||
docker compose -f docker-compose.mvp.yml up -d api frontend'
|
||
```
|
||
|
||
---
|
||
|
||
## Validação pós-deploy
|
||
|
||
```bash
|
||
bash specs/037-dns-multi-cloudflare-orchestration/deploy/scripts/verify-dns-viewer.sh \
|
||
--host 10.10.10.122
|
||
|
||
# Manual UI
|
||
# Desk → Overview → tenant VM112 → domínio → secção DNS unificada
|
||
# Browser devtools: zero SyntaxError em app.js / dns-viewer.js
|
||
```
|
||
|
||
---
|
||
|
||
## Rollback
|
||
|
||
Ver **[DNS-VIEWER-ROLLBACK.md](./DNS-VIEWER-ROLLBACK.md)** — ordem recomendada:
|
||
|
||
1. `DNS_VIEWER_ENABLED=0` (30 segundos)
|
||
2. Rollback frontend se UI partida
|
||
3. Rollback API se 500
|
||
4. `git revert` CT130 se necessário
|
||
|
||
---
|
||
|
||
## Registo de versões (preencher após cada deploy)
|
||
|
||
| Data | Tag git | VM122 backup dir | Commit | Notas |
|
||
|------|---------|------------------|--------|-------|
|
||
| 2026-06-25 | `dns-viewer-pre-v1-20260625` | `.backups/dns-viewer-20260625-161839` | `7e4920a` | Pré-deploy |
|
||
| 2026-06-25 | — | tag Docker `post-dns-viewer-v1-20260625` | _(working tree)_ | **V1+V1b deploy OK** · verify PASSED |
|
||
|
||
---
|
||
|
||
## Pendente V2+
|
||
|
||
- OpenPanel BIND provider
|
||
- Console `console.ligbox.com.br/admin/dominio`
|
||
- Wizard `GET /api/onboarding/dns/viewer/{domain}`
|
||
- Formalizar `dns.viewer.read` em Spec 027
|