Files
Auto-ssl/backend/config/config.go
T

70 lines
1.3 KiB
Go

package config
import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"log"
"os"
)
var DB *gorm.DB
type Config struct {
Port string
DBPath string
CertDir string
AccountsDir string
}
func Load() *Config {
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
dbPath := os.Getenv("DB_PATH")
if dbPath == "" {
dbPath = "./data/autossl.db"
}
certDir := os.Getenv("CERT_DIR")
if certDir == "" {
certDir = "./data/certs"
}
accountsDir := os.Getenv("ACCOUNTS_DIR")
if accountsDir == "" {
accountsDir = "./data/accounts"
}
return &Config{
Port: port,
DBPath: dbPath,
CertDir: certDir,
AccountsDir: accountsDir,
}
}
func InitDB(cfg *Config) {
// Ensure data directories exist
dirs := []string{"./data", cfg.CertDir, cfg.AccountsDir}
for _, d := range dirs {
if err := os.MkdirAll(d, 0700); err != nil {
log.Fatalf("Failed to create directory %s: %v", d, err)
}
}
var err error
DB, err = gorm.Open(sqlite.Open(cfg.DBPath), &gorm.Config{
Logger: logger.Default.LogMode(logger.Warn),
})
if err != nil {
log.Fatalf("Failed to connect database: %v", err)
}
// Auto migrate
if err := DB.AutoMigrate(&Certificate{}); err != nil {
log.Fatalf("Failed to migrate database: %v", err)
}
log.Println("Database initialized successfully")
}