Documentation
¶
Index ¶
- func GetVersion() string
- type API
- type AvailableMiner
- type Config
- type History
- type InstallationDetails
- type Manager
- type Miner
- type PerformanceMetrics
- type Service
- type SystemInfo
- type TTMiner
- type XMRigMiner
- func (m *XMRigMiner) CheckInstallation() (*InstallationDetails, error)
- func (m *XMRigMiner) GetLatestVersion() (string, error)
- func (m *XMRigMiner) GetName() string
- func (m *XMRigMiner) GetPath() string
- func (m *XMRigMiner) GetStats() (*PerformanceMetrics, error)
- func (m *XMRigMiner) Install() error
- func (m *XMRigMiner) Start(config *Config) error
- func (m *XMRigMiner) Stop() error
- func (m *XMRigMiner) Uninstall() error
- type XMRigSummary
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type API ¶
type API struct {
Enabled bool `json:"enabled"`
ListenHost string `json:"listenHost"`
ListenPort int `json:"listenPort"`
}
API represents the XMRig API configuration
type AvailableMiner ¶
AvailableMiner represents a miner that is available to be started
type Config ¶
type Config struct {
Miner string `json:"miner"`
Pool string `json:"pool"`
Wallet string `json:"wallet"`
Threads int `json:"threads"`
TLS bool `json:"tls"`
HugePages bool `json:"hugePages"`
// Network options
Algo string `json:"algo,omitempty"`
Coin string `json:"coin,omitempty"`
Password string `json:"password,omitempty"` // Corresponds to -p, not --userpass
UserPass string `json:"userPass,omitempty"` // Corresponds to -O
Proxy string `json:"proxy,omitempty"`
Keepalive bool `json:"keepalive,omitempty"`
Nicehash bool `json:"nicehash,omitempty"`
RigID string `json:"rigId,omitempty"`
TLSSingerprint string `json:"tlsFingerprint,omitempty"`
Retries int `json:"retries,omitempty"`
RetryPause int `json:"retryPause,omitempty"`
UserAgent string `json:"userAgent,omitempty"`
DonateLevel int `json:"donateLevel,omitempty"`
DonateOverProxy bool `json:"donateOverProxy,omitempty"`
// CPU backend options
NoCPU bool `json:"noCpu,omitempty"`
CPUAffinity string `json:"cpuAffinity,omitempty"`
AV int `json:"av,omitempty"`
CPUPriority int `json:"cpuPriority,omitempty"`
CPUMaxThreadsHint int `json:"cpuMaxThreadsHint,omitempty"`
CPUMemoryPool int `json:"cpuMemoryPool,omitempty"`
CPUNoYield bool `json:"cpuNoYield,omitempty"`
HugepageSize int `json:"hugepageSize,omitempty"`
HugePagesJIT bool `json:"hugePagesJIT,omitempty"`
ASM string `json:"asm,omitempty"`
Argon2Impl string `json:"argon2Impl,omitempty"`
RandomXInit int `json:"randomXInit,omitempty"`
RandomXNoNUMA bool `json:"randomXNoNuma,omitempty"`
RandomXMode string `json:"randomXMode,omitempty"`
RandomX1GBPages bool `json:"randomX1GBPages,omitempty"`
RandomXWrmsr string `json:"randomXWrmsr,omitempty"`
RandomXNoRdmsr bool `json:"randomXNoRdmsr,omitempty"`
RandomXCacheQoS bool `json:"randomXCacheQoS,omitempty"`
// API options (can be overridden or supplemented here)
APIWorkerID string `json:"apiWorkerId,omitempty"`
APIID string `json:"apiId,omitempty"`
HTTPHost string `json:"httpHost,omitempty"`
HTTPPort int `json:"httpPort,omitempty"`
HTTPAccessToken string `json:"httpAccessToken,omitempty"`
HTTPNoRestricted bool `json:"httpNoRestricted,omitempty"`
// Logging options
Syslog bool `json:"syslog,omitempty"`
LogFile string `json:"logFile,omitempty"`
PrintTime int `json:"printTime,omitempty"`
HealthPrintTime int `json:"healthPrintTime,omitempty"`
NoColor bool `json:"noColor,omitempty"`
Verbose bool `json:"verbose,omitempty"`
// Misc options
Background bool `json:"background,omitempty"`
Title string `json:"title,omitempty"`
NoTitle bool `json:"noTitle,omitempty"`
PauseOnBattery bool `json:"pauseOnBattery,omitempty"`
PauseOnActive int `json:"pauseOnActive,omitempty"`
Stress bool `json:"stress,omitempty"`
Bench string `json:"bench,omitempty"`
Submit bool `json:"submit,omitempty"`
Verify string `json:"verify,omitempty"`
Seed string `json:"seed,omitempty"`
Hash string `json:"hash,omitempty"`
NoDMI bool `json:"noDMI,omitempty"`
}
Config represents the config for a miner, including XMRig specific options
type History ¶
type History struct {
Miner string `json:"miner"`
Stats []PerformanceMetrics `json:"stats"`
Updated int64 `json:"updated"`
}
History represents the history of a miner
type InstallationDetails ¶
type InstallationDetails struct {
IsInstalled bool `json:"is_installed"`
Version string `json:"version"`
Path string `json:"path"`
MinerBinary string `json:"miner_binary"`
}
InstallationDetails contains information about an installed miner
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager handles miner lifecycle and operations
func (*Manager) ListAvailableMiners ¶
func (m *Manager) ListAvailableMiners() []AvailableMiner
ListAvailableMiners returns a list of available miners
func (*Manager) StartMiner ¶
StartMiner starts a new miner with the given configuration
type Miner ¶
type Miner interface {
Install() error
Uninstall() error
Start(config *Config) error
Stop() error
GetStats() (*PerformanceMetrics, error)
GetName() string
GetPath() string
CheckInstallation() (*InstallationDetails, error)
GetLatestVersion() (string, error)
}
Miner is the interface for a miner
type PerformanceMetrics ¶
type PerformanceMetrics struct {
Hashrate int `json:"hashrate"`
Rejected int `json:"rejected"`
Uptime int `json:"uptime"`
Algorithm string `json:"algorithm"`
ExtraData map[string]interface{} `json:"extraData,omitempty"`
}
PerformanceMetrics represents the performance metrics for a miner
type Service ¶
type Service struct {
Manager *Manager
Router *gin.Engine
Server *http.Server
DisplayAddr string // The address to display in messages (e.g., 127.0.0.1:8080)
SwaggerInstanceName string
APIBasePath string // The base path for all API routes (e.g., /api/v1/mining)
SwaggerUIPath string // The path where Swagger UI assets are served (e.g., /api/v1/mining/swagger)
}
type SystemInfo ¶
type SystemInfo struct {
Timestamp time.Time `json:"timestamp"`
OS string `json:"os"`
Architecture string `json:"architecture"`
GoVersion string `json:"go_version"`
AvailableCPUCores int `json:"available_cpu_cores"`
TotalSystemRAMGB float64 `json:"total_system_ram_gb"`
InstalledMinersInfo []*InstallationDetails `json:"installed_miners_info"`
}
SystemInfo provides general system and miner installation information
type TTMiner ¶
type TTMiner struct {
Name string `json:"name"`
Version string `json:"version"`
URL string `json:"url"`
Path string `json:"path"`
Running bool `json:"running"`
Pid int `json:"pid"`
}
TTMiner represents a TT-Miner
func (*TTMiner) GetStats ¶
func (m *TTMiner) GetStats() (*PerformanceMetrics, error)
GetStats returns the stats for the miner
type XMRigMiner ¶
type XMRigMiner struct {
Name string `json:"name"`
Version string `json:"version"`
URL string `json:"url"`
Path string `json:"path"` // This will now be the versioned folder path
MinerBinary string `json:"miner_binary"` // New field for the full path to the miner executable
Running bool `json:"running"`
LastHeartbeat int64 `json:"lastHeartbeat"`
ConfigPath string `json:"configPath"`
API *API `json:"api"`
// contains filtered or unexported fields
}
XMRigMiner represents an XMRig miner
func (*XMRigMiner) CheckInstallation ¶
func (m *XMRigMiner) CheckInstallation() (*InstallationDetails, error)
CheckInstallation checks if the miner is installed and returns its details
func (*XMRigMiner) GetLatestVersion ¶
func (m *XMRigMiner) GetLatestVersion() (string, error)
GetLatestVersion returns the latest version of XMRig
func (*XMRigMiner) GetName ¶
func (m *XMRigMiner) GetName() string
GetName returns the name of the miner
func (*XMRigMiner) GetPath ¶
func (m *XMRigMiner) GetPath() string
GetPath returns the path of the miner This now returns the base installation directory for xmrig, not the versioned one.
func (*XMRigMiner) GetStats ¶
func (m *XMRigMiner) GetStats() (*PerformanceMetrics, error)
GetStats returns the stats for the miner
func (*XMRigMiner) Install ¶
func (m *XMRigMiner) Install() error
Download and install the latest version of XMRig
func (*XMRigMiner) Uninstall ¶
func (m *XMRigMiner) Uninstall() error
Uninstall removes the miner files
type XMRigSummary ¶
type XMRigSummary struct {
Hashrate struct {
Total []float64 `json:"total"`
} `json:"hashrate"`
Results struct {
SharesGood uint64 `json:"shares_good"`
SharesTotal uint64 `json:"shares_total"`
} `json:"results"`
Uptime uint64 `json:"uptime"`
Algorithm string `json:"algo"`
}
XMRigSummary represents the summary from the XMRig API