// Package config hält, was HoneyOS beim Start aus der Umgebung liest. // // Eigenes Paket, damit sowohl der Server als auch die Anmeldung darauf zugreifen // können, ohne dass eines vom anderen abhängt. package config import ( "os" "strings" ) type Config struct { Addr string PublicURL string DataDir string SessionSecret string // Anmeldung — genau einer der beiden Wege: // // OIDCIssuer gesetzt → HoneyOS meldet selbst an, eigener Anmeldeschirm. // ProxyAuth gesetzt → ein vorgelagerter Proxy (Pangolin o. ä.) hat das // schon erledigt. HoneyOS fragt dann nicht nach. // // Keines von beiden heißt: offen. Das ist zum Entwickeln gedacht und sagt // beim Start deutlich, dass es so nicht ins Netz gehört. OIDCIssuer string OIDCClientID string OIDCClientSecret string OIDCRedirect string ButtonLabel string AllowedUsers []string ProxyAuth bool // UserHeader nennt die Kopfzeile, in die der Proxy den Nutzernamen schreibt // (z. B. Remote-User). Leer heißt: ein einziger Nutzer für alle. UserHeader string // AppsKey schützt die App-Liste, wenn ihr Pfad im Proxy von der Anmeldung // befreit ist. Ohne Schlüssel liest sie jeder, der die Adresse kennt. AppsKey string } func (c Config) RedirectURL() string { if c.OIDCRedirect != "" { return c.OIDCRedirect } return strings.TrimRight(c.PublicURL, "/") + "/api/auth/callback" } func Env(key, fallback string) string { if v := strings.TrimSpace(os.Getenv(key)); v != "" { return v } return fallback }