502e8b5db5
- 命中内部令牌时鉴权层合成 root 身份,供 server-core 作为唯一入口无权限限制管理微服务 - 为空时关闭该能力;constant-time 比较防时序侧信道
50 lines
1.3 KiB
Go
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
|
|
}
|