Go: store, auth, weather und config sind eigene Pakete unter internal/. Vorher lagen fuenf Dateien in einem Topf, und jede kannte jede. Web: os.js hatte 1425 Zeilen und alles darin. Jetzt core.js (Zustand, Server, Einstellungen), glyphs.js (die Pixelraster), js/widgets/ mit einem Widget je Datei, os.js nur noch die Ansichten. Stylesheet nach css/. Die HoneyBar bleibt eine einzelne Datei ohne Importe — sie wird von fremden Seiten mit einer Zeile eingebunden, da darf nichts nachladen. Nebenbei: Das gebaute Binary lag mit 9,8 MB im Repo und ist jetzt ignoriert. Und der Test gegen eine zweite Versionsnummer geht nicht mehr auf os.js, sondern durch alle .js — sonst haette ihn dieser Umbau still ausgehebelt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
56 lines
1.5 KiB
Go
56 lines
1.5 KiB
Go
// 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
|
|
}
|