package main
import (
"strconv"
"strings"
)
func (m model) viewDomain() string {
var b strings.Builder
b.WriteString(styleInputLabel.Render("DOMAINE DE CETTE INSTANCE") + "\n")
b.WriteString(m.domainInput.View() + "\n")
b.WriteString(styleHint.Render("C'est l'adresse que tes collaborateurs utiliseront pour cloner et se connecter.") + "\n\n")
b.WriteString(styleInputLabel.Render("EMAIL DE CONTACT") + "\n")
b.WriteString(m.contactInput.View() + "\n")
b.WriteString(styleHint.Render("Sert uniquement aux alertes d'expiration de certificat Let's Encrypt.") + "\n\n")
if !m.publicIPDone {
b.WriteString(m.spin.View() + " " + styleMuted.Render("détection de l'IP publique…"))
} else if m.publicIP != "" {
b.WriteString(row(glyph(statusOK), "IP publique détectée automatiquement", m.publicIP) + "\n\n")
b.WriteString(styleMuted.Render("→ Ajoute un enregistrement DNS A pour ton domaine vers cette IP,\n maintenant ou pendant qu'on continue — on vérifiera à l'étape suivante."))
} else {
b.WriteString(styleWarn.Render("!") + " " + styleMuted.Render("IP publique non détectée automatiquement (pas de sortie internet directe ?) — pas bloquant, ajoute simplement le bon enregistrement DNS toi-même."))
}
return stylePanel.Render(b.String())
}
func (m model) viewDNS() string {
var b strings.Builder
domain := m.domainInput.Value()
if m.dnsChecking {
b.WriteString(m.spin.View() + " " + styleBody.Render("Résolution de "+domain+"…"))
return stylePanel.Render(b.String())
}
if !m.dnsChecked {
return stylePanel.Render(styleMuted.Render("En attente…"))
}
if !m.dns.Resolved {
b.WriteString(row(glyph(statusWarn), domain, "ne résout pas encore") + "\n\n")
b.WriteString(styleMuted.Render(errString(m.dns.Err)) + "\n\n")
} else if m.dns.Matches {
b.WriteString(row(glyph(statusOK), domain+" → "+strings.Join(m.dns.Addresses, ", "), "résolu") + "\n\n")
b.WriteString(styleBody.Render("Correspond à l'IP de cette machine — le certificat pourra être délivré à l'étape 4."))
return stylePanel.Render(b.String())
} else {
b.WriteString(row(glyph(statusWarn), domain+" → "+strings.Join(m.dns.Addresses, ", "), "ne correspond pas à "+m.publicIP) + "\n\n")
}
if m.dnsRetryIn > 0 {
b.WriteString(styleMuted.Render(fmtRetry(m.dnsRetryIn)))
}
return stylePanel.Render(b.String())
}
func fmtRetry(seconds int) string {
return "La propagation DNS peut prendre quelques minutes. Nouvel essai dans " + strconv.Itoa(seconds) + "s… (r : revérifier maintenant, i : ignorer et continuer quand même)"
}
func errString(err error) string {
if err == nil {
return ""
}
return err.Error()
}