Actualiza dns-viewer, exec/rollback, fichas VM112/122/123, API Console proxy, token interno wizard e verify script para evitar drift documental. Co-authored-by: Cursor <cursoragent@cursor.com>
90 lines
2.8 KiB
Markdown
90 lines
2.8 KiB
Markdown
# Spec 037 V4 — Wizard DNS Viewer
|
|
|
|
**Spec:** [dns-viewer.md](../../specs/037-dns-multi-cloudflare-orchestration/dns-viewer.md) · **Rollback:** [DNS-VIEWER-ROLLBACK.md](../../specs/037-dns-multi-cloudflare-orchestration/deploy/DNS-VIEWER-ROLLBACK.md) § VM112
|
|
|
|
Painel **read-only** no **passo DNS existente** (step 1) — **não** é menu nem página nova.
|
|
|
|
**Estado:** 📋 patches versionados no monorepo · deploy VM112 **pendente** (SSH CT130 falha: LAN permission denied, WAN timeout).
|
|
|
|
---
|
|
|
|
## Pré-requisitos
|
|
|
|
| Variável | Valor | Onde |
|
|
|----------|-------|------|
|
|
| `DESK_API_URL` | `http://10.10.10.122:8080` | env wizard backend |
|
|
| `OPS_INTERNAL_TOKEN` | igual ao Desk | env wizard + Desk `.env` |
|
|
|
|
Desk endpoint aceita `X-Ops-Internal-Token` via `require_internal_or_user` (`main.py`).
|
|
|
|
---
|
|
|
|
## Backend
|
|
|
|
```bash
|
|
# Na VM112 (paths locais após git pull / rsync monorepo)
|
|
python3 /opt/ligbox-ops-platform/deploy/vm112-wizard/onboarding-dns-viewer-v4.patch.py
|
|
systemctl restart ligbox-wizard 2>/dev/null || docker compose -f /opt/ligbox-wizard/docker-compose.yml restart backend
|
|
```
|
|
|
|
| Item | Valor |
|
|
|------|-------|
|
|
| Endpoint | `GET /api/onboarding/dns/viewer/{domain}` |
|
|
| Auth sessão | Header `X-Onboarding-Session` |
|
|
| Proxy | Desk `GET /api/v1/dns/viewer/{domain}?email_service=true` |
|
|
| Resposta | Mesma shape Desk; `edit_links=[]`; `viewer_context=wizard_onboarding` |
|
|
|
|
---
|
|
|
|
## Frontend
|
|
|
|
```bash
|
|
python3 /opt/ligbox-ops-platform/deploy/vm112-wizard/frontend-dns-viewer-v4.patch.py
|
|
cd /opt/ligbox-wizard/frontend && npm run build
|
|
# Reiniciar serviço static/nginx conforme stack VM112
|
|
```
|
|
|
|
## UI (sem nova rota)
|
|
|
|
Painel lateral abaixo das opções DNS no step 1:
|
|
|
|
- Badge modo (Ligbox / externo / OpenPanel)
|
|
- Tabela registos (max 12 linhas)
|
|
- Secção «Serão aplicados» se `planned_records`
|
|
|
|
---
|
|
|
|
## Validação
|
|
|
|
```bash
|
|
# Com sessão onboarding válida
|
|
curl -sS -H "X-Onboarding-Session: <session>" \
|
|
"http://127.0.0.1:8090/api/onboarding/dns/viewer/exemplo.com.br" | jq .mode_label,.summary
|
|
```
|
|
|
|
Browser: `onboard.ligbox.com.br` → passo DNS → painel «Apontamentos DNS (visualização)» após escolher caminho.
|
|
|
|
---
|
|
|
|
## SSH / deploy a partir do CT130
|
|
|
|
| Destino | Comando | Resultado conhecido |
|
|
|---------|---------|---------------------|
|
|
| LAN | `ssh root@10.10.10.112` | Permission denied (password `805353` não válida) |
|
|
| WAN | `ssh -p 2512 root@95.216.14.146` | Timeout a partir CT130 |
|
|
|
|
**Acção:** Roger aplica patches directamente na VM112 ou fornece credencial SSH correcta.
|
|
|
|
---
|
|
|
|
## Rollback
|
|
|
|
```bash
|
|
ssh root@10.10.10.112
|
|
cd /opt/ligbox-wizard
|
|
BACKUP=$(ls -td .backups/dns-viewer-* 2>/dev/null | head -1)
|
|
[ -n "$BACKUP" ] && cp -a "$BACKUP"/backend/. backend/
|
|
systemctl restart ligbox-wizard 2>/dev/null || docker compose restart backend
|
|
```
|
|
|
|
Ver também rollback completo em `DNS-VIEWER-ROLLBACK.md`.
|