package config import ( "fmt" "net" "net/url" "os" "strconv" "strings" "time" ) type Config struct { AppEnv string ListenAddr string // APP_LISTEN_ADDR, e.g. ":8080" PublicURL string // PUBLIC_URL, e.g. "https://cloud.example.com" // TrustedProxies is the list of IPs/CIDRs whose X-Forwarded-* headers are trusted. TrustedProxies []*net.IPNet DBHost string // MaxVersionsKept: Wie viele frühere Fassungen einer Datei aufgehoben // werden, wenn die Versionierung für sie eingeschaltet ist. MaxVersionsKept int // OIDCButtonLabel steht auf dem Knopf der Anmeldeseite. Der Anbieter hat // bei jedem einen anderen Namen – „Sign in with SSO / OIDC" sagt dem // Nutzer weniger als „Anmelden mit PocketID". OIDCButtonLabel string DBPort string DBName string DBUser string DBPassword string SessionSecret string SessionMaxAge int StoragePath string TmpPath string AdminUsername string AdminPassword string // ExternalApps erscheinen im App-Umschalter der Oberfläche. Kommt aus der // Umgebung, damit neue Apps ohne Neubau des Frontends dazukommen können. ExternalApps []ExternalApp // OCR – Volltextsuche über den Inhalt von PDFs und Bildern. // Standardmäßig an; fehlen die Programme im Image, schaltet sich der // Arbeiter beim Start selbst ab, statt den Start zu verhindern. OCREnabled bool OCRLanguages string // OCR_LANGUAGES, z. B. "deu+eng" OCRMaxPages int // je Datei; 0 = unbegrenzt OCRTimeout time.Duration // je Datei // OIDC – all optional; if OIDCIssuer is empty, OIDC login is disabled. OIDCIssuer string OIDCClientID string OIDCClientSecret string OIDCRedirectURL string // OIDCLinkByUsername verbindet ein bestehendes Passwort-Konto mit der // OIDC-Identität, statt ein zweites anzulegen. Voreingestellt **aus** – // siehe die Begründung an auth.Store.GetOrCreateByOIDC. OIDCLinkByUsername bool // Office – optional. Ist OfficeProvider leer, ist die Bearbeitung aus und // die Anwendung verhält sich wie zuvor. // // Ein Adapter für beide Anbieter: Collabora und OnlyOffice sprechen // dieselbe Schnittstelle (WOPI). Zwei Integrationen zu bauen hieße, // dieselbe Sache zweimal zu pflegen. OfficeProvider string // "collabora" | "onlyoffice" | "" (aus) OfficeURL string // Adresse, unter der das **Backend** den Server erreicht // OfficePublicURL ist die Adresse, unter der der **Browser** ihn erreicht. // // Die beiden sind selten gleich: Im Compose-Netz heißt der Server // `collabora`, im Browser muss dort ein Name stehen, den der Rechner des // Menschen auflösen kann. Seine Ermittlungsliste nennt zudem seinen // eigenen internen Namen – die Adresse muss also umgeschrieben werden. // Leer heißt: dieselbe wie OfficeURL. OfficePublicURL string // HoneybarOrigin ist der Ursprung, von dem die HoneyOS-Leiste geladen wird // (z. B. https://os.example.com). Er wird in die CSP aufgenommen — ohne das // blockt der Browser das Skript und dessen Anfragen. // // Muss zur Adresse im