Something went wrong. Try again.
An OIDC-protected index page for your homeserver.
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152package auth
import ( "log" "os"
gonanoid "github.com/matoous/go-nanoid/v2")
type EnvConfig struct { LadonHost string ClientID string ClientSecret string Issuer string SessionSecret []byte}
const LADON_HOST_ENV_KEY = "LADON_DOMAIN"const OIDC_ID_ENV_KEY = "OIDC_CLIENT_ID"const OIDC_SECRET_ENV_KEY = "OIDC_CLIENT_SECRET"const OIDC_ISSUER_ENV_KEY = "OIDC_ISSUER"const SESSION_SECRET = "SESSION_SECRET"
func ensureEnvVar(key string) string { val, isSet := os.LookupEnv(key)
if !isSet { log.Fatalf("%s is not set in environment", key) }
return val}
func EnvMustParse() *EnvConfig { sessionSecret := os.Getenv(SESSION_SECRET)
if len(sessionSecret) != 16 { log.Fatalf("session secret must be 16 characters") } else if sessionSecret == "" { log.Println("ladon: no session secret set, generating one") sessionSecret = gonanoid.Must(16) }
return &EnvConfig{ LadonHost: ensureEnvVar(LADON_HOST_ENV_KEY), ClientID: ensureEnvVar(OIDC_ID_ENV_KEY), ClientSecret: ensureEnvVar(OIDC_SECRET_ENV_KEY), Issuer: ensureEnvVar(OIDC_ISSUER_ENV_KEY), SessionSecret: []byte(sessionSecret), }}