Part B: infra stacks carry identity — curated Hungarian metadata for cloudflared/traefik/filebrowser (v0.126.0)
- inframeta.go: static display-only map (name/description/Linked) + infraMeta template func; filebrowser is the ONLY Linked stack (files.<domain> Megnyitás on the dashboard row; the stacks card already links via Subdomains) - generic infra icon: embedded /static/infra-logo.svg (Lucide-style server, monochrome) wired through the app-row FallbackIcon slot + the stacks-card onerror chain - dashboard rows + app cards: infra name + description + existing Védett chip - guarded WRONG outcome: no customer link for cloudflared/traefik — render tests count exactly ONE https:// link; red-proven (Linked:true on cloudflared → test FAILS)
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package web
|
||||
|
||||
// Infra-stack display metadata (v0.126.0 Part B). The protected base stacks (infra.go:
|
||||
// traefik, cloudflared, filebrowser) carry no catalog metadata, so they rendered as bare
|
||||
// directory names on the dashboard and app cards. This map gives them curated Hungarian
|
||||
// identity — DISPLAY ONLY, keyed by stack name; it never affects protection, deploy or
|
||||
// backup logic.
|
||||
//
|
||||
// Linked marks the ONLY infra stack with a customer-facing UI (filebrowser →
|
||||
// files.<domain>). cloudflared and traefik have no customer UI — rendering an open link
|
||||
// for them is the guarded-wrong outcome (render test asserts absence).
|
||||
|
||||
// InfraMeta is one protected infra stack's customer-facing identity.
|
||||
type InfraMeta struct {
|
||||
DisplayName string
|
||||
Description string
|
||||
Linked bool // has a customer-facing URL (subdomain via protectedStackSubdomains)
|
||||
}
|
||||
|
||||
var infraMetaMap = map[string]InfraMeta{
|
||||
"cloudflared": {
|
||||
DisplayName: "Cloudflare Tunnel",
|
||||
Description: "Biztonságos internetkapcsolat — a szerver portnyitás nélkül érhető el kívülről.",
|
||||
},
|
||||
"traefik": {
|
||||
DisplayName: "Traefik",
|
||||
Description: "Forgalomirányító (reverse proxy) — a kéréseket a megfelelő alkalmazáshoz irányítja.",
|
||||
},
|
||||
"filebrowser": {
|
||||
DisplayName: "FileBrowser",
|
||||
Description: "Fájlkezelő — a tárhely fájljainak böngészése a böngészőből.",
|
||||
Linked: true,
|
||||
},
|
||||
}
|
||||
|
||||
// infraMetaFor returns the curated metadata for a protected infra stack, nil for
|
||||
// everything else (templates branch on the nil).
|
||||
func infraMetaFor(stackName string) *InfraMeta {
|
||||
if m, ok := infraMetaMap[stackName]; ok {
|
||||
return &m
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// InfraLogoSVG is the shared generic infra icon (Lucide-style "server", monochrome,
|
||||
// --text-2 stroke) — the last-resort icon for infra stacks whose logo asset is not
|
||||
// synced. Served at /static/infra-logo.svg; consumed via the app-row FallbackIcon slot.
|
||||
const InfraLogoSVG = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="#94A6BF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><line x1="6" y1="6" x2="6.01" y2="6"/><line x1="6" y1="18" x2="6.01" y2="18"/></svg>`
|
||||
Reference in New Issue
Block a user