ligbox-ops-platform/deploy/vm112-wizard/fix-choose-portal-dns.py
Ligbox Spec Hub 038fb8f7ce feat(dns): Spec 037 DNS Viewer — Desk, Console e patches Wizard V4
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>
2026-06-25 16:36:25 +00:00

58 lines
2 KiB
Python

#!/usr/bin/env python3
from pathlib import Path
import re
APP = Path("/opt/ligbox-wizard/frontend/src/App.jsx")
text = APP.read_text(encoding="utf-8")
pattern = r" async function choosePortalDns\(\) \{.*?\n \}\n\n async function chooseByoDns"
replacement = r''' async function choosePortalDns() {
setDnsChoice('portal')
setError(null)
startBusy('dns_zone')
try {
const resolved = dnsResolve || (await api(`/onboarding/dns/resolve/${domain}`))
setDnsResolve(resolved)
const guide = await api('/onboarding/dns/cloudflare/provision-zone', {
method: 'POST',
body: JSON.stringify({ domain }),
})
setPortalGuide(guide)
const cf = guide.status || (await refreshCfStatus())
setCfStatus(cf)
markActionDone('choosePortalDns')
if (guide.verification) {
setVerification(guide.verification)
setResult({ type: 'dns', data: { verification: guide.verification } })
markActionDone('verifyZone')
markActionDone('applyPortalDns')
} else if (cf?.zone_in_account && cf?.can_apply_mail_records) {
markActionDone('verifyZone')
const data = await api('/onboarding/dns/cloudflare/apply', {
method: 'POST',
body: JSON.stringify({
domain,
zone_id: guide.zone_id || resolved.zone_id,
mail_aliases: sanitizeMailAliases(mailAliasInputs, domain),
}),
})
setVerification(data.verification)
setResult({ type: 'dns', data })
markActionDone('applyPortalDns')
}
} catch (e) {
setError(e.message)
setDnsChoice(null)
setActionsDone((prev) => ({ ...prev, choosePortalDns: false }))
} finally {
stopBusy()
}
}
async function chooseByoDns'''
new_text, n = re.subn(pattern, replacement, text, count=1, flags=re.DOTALL)
if n != 1:
raise SystemExit(f"replace failed: {n}")
APP.write_text(new_text, encoding="utf-8")
print("choosePortalDns fixed")