58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
type Config struct {
|
|
Port string
|
|
DatabaseURL string
|
|
OCREndpoint string
|
|
UploadDir string
|
|
HMACSecret string
|
|
ServerHost string
|
|
PASETOKey string
|
|
LibreOfficePath string
|
|
PdftoppmPath string
|
|
ThumbnailDir string
|
|
URLExpiryMinutes int
|
|
OCRWorkers int
|
|
ConversionWorkers int
|
|
}
|
|
|
|
func Load() *Config {
|
|
return &Config{
|
|
Port: envOr("PORT", "8080"),
|
|
DatabaseURL: envOr("DATABASE_URL", "postgres://localhost:5432/vaultdrop?sslmode=disable"),
|
|
OCREndpoint: envOr("OCR_ENDPOINT", "http://localhost:9090"),
|
|
UploadDir: envOr("UPLOAD_DIR", "./uploads"),
|
|
HMACSecret: envOr("HMAC_SECRET", "thisismyrandomstring"),
|
|
ServerHost: envOr("SERVER_HOST", "http://192.168.1.17:8080"),
|
|
PASETOKey: envOr("PASETO_KEY", "01234567890123456789012345678901234567890123456789012345678901234"),
|
|
LibreOfficePath: envOr("LIBREOFFICE_PATH", "/usr/bin/libreoffice"),
|
|
PdftoppmPath: envOr("PDFTOPPM_PATH", "/usr/bin/pdftoppm"),
|
|
ThumbnailDir: envOr("THUMBNAIL_DIR", "./uploads/thumbnails"),
|
|
URLExpiryMinutes: envOrInt("URL_EXPIRY_MINUTES", 60),
|
|
OCRWorkers: envOrInt("OCR_WORKERS", 1),
|
|
ConversionWorkers: envOrInt("CONVERSION_WORKERS", 1),
|
|
}
|
|
}
|
|
|
|
func envOrInt(key string, fallback int) int {
|
|
if v := os.Getenv(key); v != "" {
|
|
var n int
|
|
if _, err := fmt.Sscanf(v, "%d", &n); err == nil && n > 0 {
|
|
return n
|
|
}
|
|
}
|
|
return fallback
|
|
}
|
|
|
|
func envOr(key, fallback string) string {
|
|
if v := os.Getenv(key); v != "" {
|
|
return v
|
|
}
|
|
return fallback
|
|
}
|