e0e362d700
SDK Tests / changes (push) Successful in 2m29s
Real E2E Tests / changes (push) Successful in 2m29s
Deploy Docs Pages / build (push) Has been cancelled
Deploy Docs Pages / deploy (push) Has been cancelled
Real E2E Tests / JavaScript E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / Python E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / Java E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / C# E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / Go E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / Real E2E CI (push) Has been cancelled
SDK Tests / SDK CI (push) Has been cancelled
SDK Tests / CLI Tests (push) Has been cancelled
SDK Tests / Python SDK Quality (code-interpreter) (push) Has been cancelled
SDK Tests / Python SDK Quality (sandbox) (push) Has been cancelled
SDK Tests / Python SDK Tests (code-interpreter) (push) Has been cancelled
SDK Tests / JavaScript SDK Quality And Tests (code-interpreter) (push) Has been cancelled
SDK Tests / JavaScript SDK Quality And Tests (sandbox) (push) Has been cancelled
SDK Tests / Python SDK Tests (sandbox) (push) Has been cancelled
SDK Tests / CLI Quality (push) Has been cancelled
SDK Tests / Kotlin SDK Quality And Tests (sandbox) (push) Has been cancelled
SDK Tests / Kotlin SDK Quality And Tests (code-interpreter) (push) Has been cancelled
SDK Tests / C# SDK Quality And Tests (code-interpreter) (push) Has been cancelled
SDK Tests / C# SDK Quality And Tests (sandbox) (push) Has been cancelled
SDK Tests / Go SDK Quality And Tests (push) Has been cancelled
95 lines
3.6 KiB
Go
95 lines
3.6 KiB
Go
// Copyright 2026 Alibaba Group Holding Ltd.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package constants
|
|
|
|
import (
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
const EnvCredentialVaultTrustedProxyCIDRs = "OPENSANDBOX_EGRESS_CREDENTIAL_VAULT_TRUSTED_PROXY_CIDRS"
|
|
|
|
const (
|
|
EnvBlockDoH443 = "OPENSANDBOX_EGRESS_BLOCK_DOH_443"
|
|
EnvDoHBlocklist = "OPENSANDBOX_EGRESS_DOH_BLOCKLIST"
|
|
EnvEgressMode = "OPENSANDBOX_EGRESS_MODE"
|
|
EnvEgressHTTPAddr = "OPENSANDBOX_EGRESS_HTTP_ADDR"
|
|
EnvEgressToken = "OPENSANDBOX_EGRESS_TOKEN"
|
|
EnvCredentialProxySocket = "OPENSANDBOX_CREDENTIAL_PROXY_SOCKET"
|
|
EnvEgressRules = "OPENSANDBOX_EGRESS_RULES"
|
|
EnvEgressPolicyFile = "OPENSANDBOX_EGRESS_POLICY_FILE"
|
|
EnvEgressLogLevel = "OPENSANDBOX_EGRESS_LOG_LEVEL"
|
|
EnvMaxEgressRules = "OPENSANDBOX_EGRESS_MAX_RULES"
|
|
EnvBlockedWebhook = "OPENSANDBOX_EGRESS_DENY_WEBHOOK"
|
|
EnvSandboxID = "OPENSANDBOX_EGRESS_SANDBOX_ID"
|
|
EnvEgressMetricsExtraAttrs = "OPENSANDBOX_EGRESS_METRICS_EXTRA_ATTRS"
|
|
EnvNameserverExempt = "OPENSANDBOX_EGRESS_NAMESERVER_EXEMPT"
|
|
EnvCredentialVaultRequireTLS = "OPENSANDBOX_EGRESS_CREDENTIAL_VAULT_REQUIRE_TLS"
|
|
|
|
// MITM: mitmdump transparent; Linux + CAP_NET_ADMIN, runs as a dedicated user.
|
|
// Static mitm options (mode, connection_strategy, listen_host, stream_large_bodies,
|
|
// ignore_hosts, ssl_verify_upstream_trusted_confdir default) live in
|
|
// /var/lib/mitmproxy/.mitmproxy/config.yaml; only per-deployment overrides are env-driven.
|
|
EnvMitmproxyTransparent = "OPENSANDBOX_EGRESS_MITMPROXY_TRANSPARENT"
|
|
EnvMitmproxyPort = "OPENSANDBOX_EGRESS_MITMPROXY_PORT"
|
|
EnvMitmproxyScript = "OPENSANDBOX_EGRESS_MITMPROXY_SCRIPT"
|
|
EnvMitmproxyUpstreamTrustDir = "OPENSANDBOX_EGRESS_MITMPROXY_UPSTREAM_TRUST_DIR"
|
|
EnvMitmproxySslInsecure = "OPENSANDBOX_EGRESS_MITMPROXY_SSL_INSECURE"
|
|
|
|
// Comma-separated upstream resolvers: literal IP only (optional :port) — no hostnames (see dnsproxy REDIRECT note).
|
|
EnvDNSUpstream = "OPENSANDBOX_EGRESS_DNS_UPSTREAM"
|
|
EnvDNSUpstreamTimeout = "OPENSANDBOX_EGRESS_DNS_UPSTREAM_TIMEOUT"
|
|
EnvDNSUpstreamProbe = "OPENSANDBOX_EGRESS_DNS_UPSTREAM_PROBE"
|
|
EnvDNSUpstreamProbeIntervalSec = "OPENSANDBOX_EGRESS_DNS_UPSTREAM_PROBE_INTERVAL_SEC"
|
|
)
|
|
|
|
const (
|
|
PolicyDnsOnly = "dns"
|
|
PolicyDnsNft = "dns+nft"
|
|
)
|
|
|
|
const (
|
|
DefaultEgressServerAddr = ":18080"
|
|
DefaultMitmproxyPort = 18081
|
|
DefaultCredentialProxySocket = "/run/opensandbox/credential-proxy/active.sock"
|
|
ResolvNameserverCap = 10
|
|
DefaultMaxEgressRules = 4096
|
|
DefaultDNSUpstreamTimeoutSec = 5
|
|
|
|
OpenSandboxRootDir = "/opt/opensandbox"
|
|
)
|
|
|
|
func EnvIntOrDefault(key string, defaultVal int) int {
|
|
s := strings.TrimSpace(os.Getenv(key))
|
|
if s == "" {
|
|
return defaultVal
|
|
}
|
|
v, err := strconv.Atoi(s)
|
|
if err != nil {
|
|
return defaultVal
|
|
}
|
|
return v
|
|
}
|
|
|
|
func IsTruthy(v string) bool {
|
|
switch strings.ToLower(strings.TrimSpace(v)) {
|
|
case "1", "true", "yes", "y", "on":
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|