feat: AutoSSL certificate management tool with Web UI
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
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")
|
||||
}
|
||||
Reference in New Issue
Block a user