首次提交

This commit is contained in:
zeronline
2026-06-25 08:39:47 +08:00
parent 20a93c703a
commit c5cccd346b
169 changed files with 24720 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
package config
import (
"log"
"os"
"path/filepath"
"github.com/joho/godotenv"
)
// Config 应用配置
type Config struct {
Port string
DBHost string
DBPort string
DBUser string
DBPass string
DBName string
JWTSecret string
RedisURL string
S3Bucket string
}
// Load 加载配置(优先读取环境变量,支持 .env 文件)
// 查找顺序:可执行文件同目录 → 当前目录 → 环境变量
func Load() *Config {
// 从可执行文件所在目录加载 .env(宝塔场景)
if exe, err := os.Executable(); err == nil {
exeDir := filepath.Dir(exe)
_ = godotenv.Load(filepath.Join(exeDir, ".env"))
}
// 从当前目录加载 .env(本地开发场景)
_ = godotenv.Load()
c := &Config{
Port: getEnv("PORT", "8080"),
DBHost: getEnv("DB_HOST", "127.0.0.1"),
DBPort: getEnv("DB_PORT", "3306"),
DBUser: getEnv("DB_USER", "root"),
DBPass: getEnv("DB_PASS", ""),
DBName: getEnv("DB_NAME", "inchstep"),
JWTSecret: getEnv("JWT_SECRET", "dev-secret-change-in-production"),
RedisURL: getEnv("REDIS_URL", "redis://127.0.0.1:6379/0"),
S3Bucket: getEnv("S3_BUCKET", ""),
}
log.Println("[寸进] 配置加载完成")
log.Printf("[寸进] DB: %s:%s/%s", c.DBHost, c.DBPort, c.DBName)
log.Printf("[寸进] JWT: %s...", maskSecret(c.JWTSecret, 8))
log.Printf("[寸进] Redis: %s", c.RedisURL)
return c
}
func getEnv(key, fallback string) string {
if v := os.Getenv(key); v != "" {
return v
}
return fallback
}
func maskSecret(s string, keep int) string {
if len(s) <= keep {
return s
}
return s[:keep] + "..."
}