Add Go rewrite with Postgres 17 and Dokploy Docker Compose
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Port string
|
||||
BaseURL string
|
||||
HTTPBudgetSec int
|
||||
SessionSecret string
|
||||
DatabaseURL string
|
||||
PanelURL string
|
||||
PanelToken string
|
||||
ServerLabelsJSON string
|
||||
MigrationsDir string
|
||||
WebDir string
|
||||
}
|
||||
|
||||
func Load() Config {
|
||||
budget := envInt("APP_HTTP_BUDGET_SEC", 52)
|
||||
return Config{
|
||||
Port: env("APP_PORT", "30000"),
|
||||
BaseURL: strings.Trim(env("APP_BASE_URL", ""), "/"),
|
||||
HTTPBudgetSec: budget,
|
||||
SessionSecret: env("APP_SESSION_SECRET", "dev-insecure-change-me-please-32chars"),
|
||||
DatabaseURL: env("DATABASE_URL", "postgres://vpn_admin:vpn_admin@127.0.0.1:5432/vpn_admin?sslmode=disable"),
|
||||
PanelURL: env("AMNEZIA_PANEL_URL", ""),
|
||||
PanelToken: env("AMNEZIA_API_TOKEN", ""),
|
||||
ServerLabelsJSON: env("AMNEZIA_SERVER_LABELS_JSON", ""),
|
||||
MigrationsDir: env("MIGRATIONS_DIR", "migrations"),
|
||||
WebDir: env("WEB_DIR", "web"),
|
||||
}
|
||||
}
|
||||
|
||||
func (c Config) HTTPBudget() time.Duration {
|
||||
if c.HTTPBudgetSec <= 0 {
|
||||
return 0
|
||||
}
|
||||
return time.Duration(c.HTTPBudgetSec) * time.Second
|
||||
}
|
||||
|
||||
func (c Config) AppURL(path string) string {
|
||||
path = strings.TrimLeft(path, "/")
|
||||
if c.BaseURL == "" {
|
||||
return "/" + path
|
||||
}
|
||||
return "/" + c.BaseURL + "/" + path
|
||||
}
|
||||
|
||||
func env(k, def string) string {
|
||||
if v := os.Getenv(k); v != "" {
|
||||
return v
|
||||
}
|
||||
return def
|
||||
}
|
||||
|
||||
func envInt(k string, def int) int {
|
||||
v := os.Getenv(k)
|
||||
if v == "" {
|
||||
return def
|
||||
}
|
||||
n, err := strconv.Atoi(v)
|
||||
if err != nil {
|
||||
return def
|
||||
}
|
||||
return n
|
||||
}
|
||||
Reference in New Issue
Block a user