baseline: api+gui traffic mode + candidates picker
Snapshot before app-launcher (cgroup/mark) work; ignore binaries/backups.
This commit is contained in:
109
selective-vpn-api/app/config.go
Normal file
109
selective-vpn-api/app/config.go
Normal file
@@ -0,0 +1,109 @@
|
||||
package app
|
||||
|
||||
import "embed"
|
||||
|
||||
// EN: Centralized runtime configuration constants and embedded seed assets used
|
||||
// EN: across the API server, route updater, VPN helpers, and background workers.
|
||||
// RU: Централизованные runtime-константы и встроенные seed-ресурсы,
|
||||
// RU: используемые API-сервером, апдейтером маршрутов, VPN-хелперами и воркерами.
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// runtime constants
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
const (
|
||||
stateDir = "/var/lib/selective-vpn"
|
||||
statusFilePath = stateDir + "/status.json"
|
||||
dnsModePath = stateDir + "/dns-mode.json"
|
||||
trafficModePath = stateDir + "/traffic-mode.json"
|
||||
|
||||
traceLogPath = stateDir + "/trace.log"
|
||||
smartdnsLogPath = stateDir + "/smartdns.log"
|
||||
lastIPsPath = stateDir + "/last-ips.txt"
|
||||
lastIPsMapPath = stateDir + "/last-ips-map.txt"
|
||||
lastIPsDirect = stateDir + "/last-ips-direct.txt"
|
||||
lastIPsDyn = stateDir + "/last-ips-dyn.txt"
|
||||
lastIPsMapDirect = stateDir + "/last-ips-map-direct.txt"
|
||||
lastIPsMapDyn = stateDir + "/last-ips-map-wildcard.txt"
|
||||
routesCacheMeta = stateDir + "/routes-clear-cache.json"
|
||||
routesCacheIPs = stateDir + "/routes-clear-cache-ips.txt"
|
||||
routesCacheDyn = stateDir + "/routes-clear-cache-ips-dyn.txt"
|
||||
routesCacheMap = stateDir + "/routes-clear-cache-ips-map.txt"
|
||||
routesCacheRT = stateDir + "/routes-clear-cache-routes.txt"
|
||||
|
||||
autoloopLogPath = stateDir + "/adguard-autoloop.log"
|
||||
loginStatePath = stateDir + "/adguard-login.json"
|
||||
dnsUpstreamsPath = stateDir + "/dns-upstreams.json"
|
||||
smartdnsWLPath = stateDir + "/smartdns-wildcards.json"
|
||||
smartdnsRTPath = stateDir + "/smartdns-runtime.json"
|
||||
desiredLocation = stateDir + "/adguard-location.txt"
|
||||
|
||||
adgvpnCLI = "/usr/local/bin/adguardvpn-cli-root"
|
||||
|
||||
// маршруты v2
|
||||
routesServiceTemplate = "selective-vpn2@%s.service"
|
||||
routesTimerTemplate = "selective-vpn2@%s.timer"
|
||||
routesServiceEnv = "SELECTIVE_VPN_ROUTES_UNIT"
|
||||
routesTimerEnv = "SELECTIVE_VPN_ROUTES_TIMER"
|
||||
|
||||
// юнит автоконнекта AdGuard VPN
|
||||
adgvpnUnit = "adguardvpn-autoconnect.service"
|
||||
|
||||
// доменные файлы / пути
|
||||
domainDir = "/etc/selective-vpn/domains"
|
||||
dnsUpstreamsConf = "/etc/selective-vpn/dns-upstreams.conf"
|
||||
smartdnsDomainsFile = "/etc/selective-vpn/smartdns.conf"
|
||||
smartdnsMainConfig = "/opt/stack/adguardapp/smartdns.conf"
|
||||
staticIPsFile = "/etc/selective-vpn/static-ips.txt"
|
||||
heartbeatFile = stateDir + "/heartbeat"
|
||||
lockFile = "/run/lock/selective-vpn.lock"
|
||||
MARK = "0x66"
|
||||
defaultDNS1 = "94.140.14.14"
|
||||
defaultDNS2 = "94.140.15.15"
|
||||
defaultMeta1 = "46.243.231.30"
|
||||
defaultMeta2 = "46.243.231.41"
|
||||
|
||||
smartDNSDefaultAddr = "127.0.0.1#6053"
|
||||
smartDNSAddrEnv = "SVPN_SMARTDNS_ADDR"
|
||||
smartDNSForceEnv = "SVPN_SMARTDNS_FORCE"
|
||||
|
||||
policyRouteMTU = "1380"
|
||||
defaultTraceTailMax = 800
|
||||
|
||||
defaultEventsCapacity = 512
|
||||
defaultPollStatusMs = 2000
|
||||
defaultPollLoginMs = 2500
|
||||
defaultPollAutoloopMs = 2500
|
||||
defaultPollSystemdMs = 3000
|
||||
defaultPollTraceMs = 1500
|
||||
defaultHeartbeatSeconds = 15
|
||||
)
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// domain expansion lists
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
// EN: Domain expansion lists used by routes update to build selective targets.
|
||||
// RU: Списки доменов для расширения селективных целей при обновлении маршрутов.
|
||||
var googleLikeDomains = []string{
|
||||
"google.com", "googleapis.com", "gstatic.com", "googleusercontent.com",
|
||||
"1e100.net", "gvt1.com", "gvt2.com", "gvt3.com",
|
||||
}
|
||||
|
||||
// EN: Extra Twitter subdomains that should be forced through selective routing.
|
||||
// RU: Дополнительные поддомены Twitter, которые принудительно идут через селективный маршрут.
|
||||
var twitterSpecial = []string{
|
||||
"ton", "pay", "caps", "sms", "cert", "tdweb", "p", "ma-0.twimg", "si0.twimg",
|
||||
"syndication", "tweetdeck", "stream", "userstream", "sitestream", "betastream",
|
||||
"music", "ms1", "ms3", "urls-real.api", "music-partner", "partner-stream",
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// embedded assets
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
// EN: Embedded default domain files used as seed content when runtime files are absent.
|
||||
// RU: Встроенные файлы доменов по умолчанию для первичного seed, если runtime-файлы отсутствуют.
|
||||
//
|
||||
//go:embed assets/domains/*
|
||||
var embeddedDomains embed.FS
|
||||
Reference in New Issue
Block a user