package config import ( "os" ) // Config 存放运行期配置, 所有值均可通过环境变量覆盖. type Config struct { Port string // HTTP 监听端口 DBPath string // SQLite 数据库路径 Token string // 管理员访问 token LogLevel string // 微软 OAuth(个人 Outlook/Hotmail);MP_MS_CLIENT_ID 非空则启用 MSClientID string MSClientSecret string MSRedirectURL string // 须与 Azure 应用重定向 URI 完全一致,默认本机回调 FrontendURL string // OAuth 完成后浏览器跳回的前端根地址 // CORS:MP_CORS_ORIGINS 为空或 * 时允许任意 Origin;否则为英文逗号分隔的来源列表 CORSAllowOrigins string } // Load 读取环境变量生成配置, 未设置时使用默认值. func Load() *Config { return &Config{ Port: env("MP_PORT", "8787"), DBPath: env("MP_DB", "mengpost.db"), Token: env("MP_TOKEN", "shumengya520"), LogLevel: env("MP_LOG", "info"), MSClientID: env("MP_MS_CLIENT_ID", ""), MSClientSecret: env("MP_MS_CLIENT_SECRET", ""), MSRedirectURL: env("MP_MS_OAUTH_REDIRECT", "http://127.0.0.1:8787/api/oauth/microsoft/callback"), FrontendURL: env("MP_FRONTEND_URL", "http://127.0.0.1:5173"), CORSAllowOrigins: env("MP_CORS_ORIGINS", "*"), } } // MicrosoftOAuthEnabled 是否配置了微软 OAuth(需同时配置 Client ID). func (c *Config) MicrosoftOAuthEnabled() bool { return c.MSClientID != "" } func env(k, def string) string { if v := os.Getenv(k); v != "" { return v } return def }