44 lines
794 B
Go
44 lines
794 B
Go
package config
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/hex"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
type Config struct {
|
|
AdminEmail string
|
|
AdminPassword string
|
|
SessionSecret string
|
|
UploadDir string
|
|
}
|
|
|
|
func Load() Config {
|
|
cfg := Config{
|
|
AdminEmail: os.Getenv("ADMIN_EMAIL"),
|
|
AdminPassword: os.Getenv("ADMIN_PASSWORD"),
|
|
SessionSecret: os.Getenv("SESSION_SECRET"),
|
|
UploadDir: os.Getenv("UPLOAD_DIR"),
|
|
}
|
|
|
|
if cfg.UploadDir == "" {
|
|
cfg.UploadDir = "/app/data/uploads"
|
|
}
|
|
|
|
if cfg.SessionSecret == "" {
|
|
cfg.SessionSecret = randomSecret()
|
|
log.Println("warning: SESSION_SECRET not set, using random value (sessions reset on restart)")
|
|
}
|
|
|
|
return cfg
|
|
}
|
|
|
|
func randomSecret() string {
|
|
b := make([]byte, 32)
|
|
if _, err := rand.Read(b); err != nil {
|
|
panic(err)
|
|
}
|
|
return hex.EncodeToString(b)
|
|
}
|