57 lines
1.3 KiB
Go
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)
|
|
}
|