mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-13 20:49:54 +02:00
Validate GODOXY_LOCAL_API_ADDR before starting the unauthenticated local API. Loopback listeners still succeed by default; addresses that bind all interfaces, unspecified IPs, LAN hosts, or non-loopback names need GODOXY_LOCAL_API_ALLOW_NON_LOOPBACK=true. When that opt-in is set and the host is not loopback, log a warning so non-local exposure is obvious. Wire common.LocalAPIAllowNonLoopback from LOCAL_API_ALLOW_NON_LOOPBACK and document it (with a risk note) in .env.example. Add TestValidateLocalAPIAddr for loopback, wildcard, LAN, and hostname cases with the allow flag on and off.
70 lines
2.4 KiB
Go
70 lines
2.4 KiB
Go
package common
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/yusing/goutils/env"
|
|
)
|
|
|
|
var (
|
|
IsTest = env.GetEnvBool("TEST", false) || strings.HasSuffix(os.Args[0], ".test")
|
|
IsDebug = env.GetEnvBool("DEBUG", IsTest)
|
|
IsTrace = env.GetEnvBool("TRACE", false) && IsDebug
|
|
|
|
InitTimeout = env.GetEnvDuation("INIT_TIMEOUT", 1*time.Minute)
|
|
|
|
ShortLinkPrefix = env.GetEnvString("SHORTLINK_PREFIX", "go")
|
|
|
|
ProxyHTTPAddr,
|
|
ProxyHTTPHost,
|
|
ProxyHTTPPort,
|
|
ProxyHTTPURL = env.GetAddrEnv("HTTP_ADDR", ":80", "http")
|
|
|
|
ProxyHTTPSAddr,
|
|
ProxyHTTPSHost,
|
|
ProxyHTTPSPort,
|
|
ProxyHTTPSURL = env.GetAddrEnv("HTTPS_ADDR", ":443", "https")
|
|
|
|
APIHTTPAddr,
|
|
APIHTTPHost,
|
|
APIHTTPPort,
|
|
APIHTTPURL = env.GetAddrEnv("API_ADDR", "127.0.0.1:8888", "http")
|
|
|
|
LocalAPIHTTPAddr,
|
|
LocalAPIHTTPHost,
|
|
LocalAPIHTTPPort,
|
|
LocalAPIHTTPURL = env.GetAddrEnv("LOCAL_API_ADDR", "", "http")
|
|
LocalAPIAllowNonLoopback = env.GetEnvBool("LOCAL_API_ALLOW_NON_LOOPBACK", false)
|
|
|
|
APIJWTSecure = env.GetEnvBool("API_JWT_SECURE", true)
|
|
APIJWTSecret = decodeJWTKey(env.GetEnvString("API_JWT_SECRET", ""))
|
|
APIJWTTokenTTL = env.GetEnvDuation("API_JWT_TOKEN_TTL", 24*time.Hour)
|
|
APIUser = env.GetEnvString("API_USER", "admin")
|
|
APIPassword = env.GetEnvString("API_PASSWORD", "password")
|
|
|
|
APISkipOriginCheck = env.GetEnvBool("API_SKIP_ORIGIN_CHECK", false) // skip this in UI Demo
|
|
|
|
DebugDisableAuth = env.GetEnvBool("DEBUG_DISABLE_AUTH", false)
|
|
|
|
// OIDC Configuration.
|
|
OIDCIssuerURL = env.GetEnvString("OIDC_ISSUER_URL", "")
|
|
OIDCClientID = env.GetEnvString("OIDC_CLIENT_ID", "")
|
|
OIDCClientSecret = env.GetEnvString("OIDC_CLIENT_SECRET", "")
|
|
OIDCScopes = env.GetEnvCommaSep("OIDC_SCOPES", "openid, profile, email, groups")
|
|
OIDCAllowedUsers = env.GetEnvCommaSep("OIDC_ALLOWED_USERS", "")
|
|
OIDCAllowedGroups = env.GetEnvCommaSep("OIDC_ALLOWED_GROUPS", "")
|
|
OIDCRateLimit = env.GetEnvInt("OIDC_RATE_LIMIT", 10)
|
|
OIDCRateLimitPeriod = env.GetEnvDuation("OIDC_RATE_LIMIT_PERIOD", time.Second)
|
|
|
|
// metrics configuration
|
|
MetricsDisableCPU = env.GetEnvBool("METRICS_DISABLE_CPU", false)
|
|
MetricsDisableMemory = env.GetEnvBool("METRICS_DISABLE_MEMORY", false)
|
|
MetricsDisableDisk = env.GetEnvBool("METRICS_DISABLE_DISK", false)
|
|
MetricsDisableNetwork = env.GetEnvBool("METRICS_DISABLE_NETWORK", false)
|
|
MetricsDisableSensors = env.GetEnvBool("METRICS_DISABLE_SENSORS", false)
|
|
|
|
ForceResolveCountry = env.GetEnvBool("FORCE_RESOLVE_COUNTRY", false)
|
|
)
|