Files
compute-engine/common/env.go
T
Pine 502e8b5db5 feat(auth): 受信任内部调用方令牌直通(PINEAGENTS_INTERNAL_TOKEN)
- 命中内部令牌时鉴权层合成 root 身份,供 server-core 作为唯一入口无权限限制管理微服务
- 为空时关闭该能力;constant-time 比较防时序侧信道
2026-08-29 00:31:34 +08:00

50 lines
1.3 KiB
Go

package common
import (
"fmt"
"os"
"strconv"
)
// InternalAccessToken 受信任内部调用方令牌:命中后鉴权层直接合成 root 身份,
// 放开全部管理/root 端点(用于 server-core 作为唯一入口无权限限制地管理微服务)。
// 为空时关闭该能力。
//
// 需在请求时惰性读取(而非包 init 时),因为 main() 里 godotenv.Load(".env")
// 晚于包 init 执行,过早读取会拿到空串。
func InternalAccessToken() string {
return os.Getenv("PINEAGENTS_INTERNAL_TOKEN")
}
func GetEnvOrDefault(env string, defaultValue int) int {
if env == "" || os.Getenv(env) == "" {
return defaultValue
}
num, err := strconv.Atoi(os.Getenv(env))
if err != nil {
SysError(fmt.Sprintf("failed to parse %s: %s, using default value: %d", env, err.Error(), defaultValue))
return defaultValue
}
return num
}
func GetEnvOrDefaultString(env string, defaultValue string) string {
if env == "" || os.Getenv(env) == "" {
return defaultValue
}
return os.Getenv(env)
}
func GetEnvOrDefaultBool(env string, defaultValue bool) bool {
if env == "" || os.Getenv(env) == "" {
return defaultValue
}
b, err := strconv.ParseBool(os.Getenv(env))
if err != nil {
SysError(fmt.Sprintf("failed to parse %s: %s, using default value: %t", env, err.Error(), defaultValue))
return defaultValue
}
return b
}