fix: 2026-06-04 audit pass — README, USB pack, multi-area fixes
WS ticket dashboard auth, builder universal signing/size limits/fusion obfuscation/dropper bundles, Path Tracer WireGuard topology, SessionGate degraded mode and download timeouts, server bootstrap (data dir, cloudflared dedupe, config port precedence), agent mesh/miner/spread fixes. README refreshed; usb bundle repacked; PROBLEMS.md audit log updated.
This commit is contained in:
@@ -232,15 +232,26 @@ func DefaultConfig() *Config {
|
||||
func LoadConfig() *Config {
|
||||
cfg := DefaultConfig()
|
||||
|
||||
// Parse CLI flags
|
||||
port := flag.Int("port", 8989, "Server port")
|
||||
dataDir := flag.String("data", "data", "Data directory")
|
||||
cliPortExplicit := false
|
||||
flag.Parse()
|
||||
flag.Visit(func(f *flag.Flag) {
|
||||
if f.Name == "port" {
|
||||
cliPortExplicit = true
|
||||
}
|
||||
})
|
||||
cliPort := *port
|
||||
|
||||
cfg.Port = *port
|
||||
cfg.DataDir = *dataDir
|
||||
// Resolve data dir before reading config.json so relative -data always targets <repo>/data.
|
||||
projectRoot := findProjectRoot()
|
||||
cfg.DataDir = resolveDataDir(*dataDir, projectRoot)
|
||||
if cliPortExplicit {
|
||||
cfg.Port = cliPort
|
||||
} else {
|
||||
cfg.Port = cliPort
|
||||
}
|
||||
|
||||
// Try to load from config file
|
||||
configPath := filepath.Join(cfg.DataDir, "config.json")
|
||||
if data, err := os.ReadFile(configPath); err == nil {
|
||||
var fileCfg Config
|
||||
@@ -265,6 +276,11 @@ func LoadConfig() *Config {
|
||||
}
|
||||
}
|
||||
|
||||
// Explicit -port wins over config.json (LAUNCH/devrun pass -port alongside file-based settings).
|
||||
if cliPortExplicit {
|
||||
cfg.Port = cliPort
|
||||
}
|
||||
|
||||
if strings.TrimSpace(cfg.TunnelDefaults.CloudflaredTargetURL) == "" && strings.TrimSpace(cfg.Server.PublicURL) != "" {
|
||||
cfg.TunnelDefaults.CloudflaredTargetURL = strings.TrimSpace(cfg.Server.PublicURL)
|
||||
}
|
||||
@@ -537,6 +553,15 @@ func mergeConfig(dst, src *Config) {
|
||||
if src.Server.SignTimestampURL != "" {
|
||||
dst.Server.SignTimestampURL = src.Server.SignTimestampURL
|
||||
}
|
||||
if src.Server.FleetSecret != "" {
|
||||
dst.Server.FleetSecret = src.Server.FleetSecret
|
||||
}
|
||||
if src.TunnelDefaults.CloudflaredTargetURL != "" {
|
||||
dst.TunnelDefaults.CloudflaredTargetURL = src.TunnelDefaults.CloudflaredTargetURL
|
||||
}
|
||||
if src.TunnelDefaults.CloudflareTunnelToken != "" {
|
||||
dst.TunnelDefaults.CloudflareTunnelToken = src.TunnelDefaults.CloudflareTunnelToken
|
||||
}
|
||||
}
|
||||
|
||||
// nestedJSONKeys returns keys explicitly present in a nested JSON object section.
|
||||
|
||||
Reference in New Issue
Block a user