48 lines
1.6 KiB
Go
48 lines
1.6 KiB
Go
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
|
||
}
|