Files

57 lines
1.3 KiB
Go

package config
import (
"crypto/rand"
"encoding/hex"
"log"
"os"
"strings"
)
type Config struct {
AdminEmail string
AdminPassword string
SessionSecret string
UploadDir string
PublicBaseURL string
HeleketMerchantID string
HeleketPaymentAPIKey string
HeleketCurrency 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"),
PublicBaseURL: strings.TrimRight(os.Getenv("PUBLIC_BASE_URL"), "/"),
HeleketMerchantID: os.Getenv("HELEKET_MERCHANT_ID"),
HeleketPaymentAPIKey: os.Getenv("HELEKET_PAYMENT_API_KEY"),
HeleketCurrency: os.Getenv("HELEKET_CURRENCY"),
}
if cfg.HeleketCurrency == "" {
cfg.HeleketCurrency = "RUB"
}
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)
}