diff --git a/cmd/mining/cmd/serve.go b/cmd/mining/cmd/serve.go index 9ba0043..fdecadf 100644 --- a/cmd/mining/cmd/serve.go +++ b/cmd/mining/cmd/serve.go @@ -91,16 +91,15 @@ var serveCmd = &cobra.Command{ switch command { case "start": - if len(cmdArgs) < 1 { - fmt.Println("Error: start command requires miner type (e.g., 'start xmrig')") + if len(cmdArgs) < 3 { + fmt.Println("Usage: start ") + fmt.Println("Example: start xmrig stratum+tcp://pool.example.com:3333 YOUR_WALLET_ADDRESS") } else { minerType := cmdArgs[0] - // Use default pool and wallet for interactive shell for simplicity config := &mining.Config{ - Pool: "pool.hashvault.pro:443", - Wallet: "888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H", // Corrected wallet address - LogOutput: true, // Enable logging for interactive shell - // Add other default config values if necessary + Pool: cmdArgs[1], + Wallet: cmdArgs[2], + LogOutput: true, } miner, err := mgr.StartMiner(minerType, config) if err != nil { diff --git a/cmd/mining/cmd/start.go b/cmd/mining/cmd/start.go index bc3c6f4..fa67acc 100644 --- a/cmd/mining/cmd/start.go +++ b/cmd/mining/cmd/start.go @@ -38,7 +38,8 @@ var startCmd = &cobra.Command{ func init() { rootCmd.AddCommand(startCmd) - startCmd.Flags().StringVarP(&minerPool, "pool", "p", "pool.hashvault.pro", "Mining pool address") - startCmd.Flags().StringVarP(&minerWallet, "wallet", "w", "888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H", "Wallet address") - // Removed MarkFlagRequired as we now have default values + startCmd.Flags().StringVarP(&minerPool, "pool", "p", "", "Mining pool address (required)") + startCmd.Flags().StringVarP(&minerWallet, "wallet", "w", "", "Wallet address (required)") + _ = startCmd.MarkFlagRequired("pool") + _ = startCmd.MarkFlagRequired("wallet") } diff --git a/pkg/mining/config_manager.go b/pkg/mining/config_manager.go index 4e09064..2bdae8a 100644 --- a/pkg/mining/config_manager.go +++ b/pkg/mining/config_manager.go @@ -91,7 +91,7 @@ func SaveMinersConfig(cfg *MinersConfig) error { return fmt.Errorf("failed to marshal miners config: %w", err) } - if err := os.WriteFile(configPath, data, 0644); err != nil { + if err := os.WriteFile(configPath, data, 0600); err != nil { return fmt.Errorf("failed to write miners config file: %w", err) } return nil diff --git a/pkg/mining/miner.go b/pkg/mining/miner.go index 89bbdb0..e7bcef2 100644 --- a/pkg/mining/miner.go +++ b/pkg/mining/miner.go @@ -510,7 +510,7 @@ func (b *BaseMiner) untar(src, dest string) error { target := filepath.Join(dest, header.Name) if !strings.HasPrefix(target, filepath.Clean(dest)+string(os.PathSeparator)) { - continue + return fmt.Errorf("%s: illegal file path in archive", header.Name) } switch header.Typeflag { diff --git a/pkg/mining/profile_manager.go b/pkg/mining/profile_manager.go index 67c9966..d233659 100644 --- a/pkg/mining/profile_manager.go +++ b/pkg/mining/profile_manager.go @@ -78,7 +78,7 @@ func (pm *ProfileManager) saveProfiles() error { return err } - return os.WriteFile(pm.configPath, data, 0644) + return os.WriteFile(pm.configPath, data, 0600) } // CreateProfile adds a new profile and saves it. diff --git a/pkg/mining/service.go b/pkg/mining/service.go index a18c470..4c34583 100644 --- a/pkg/mining/service.go +++ b/pkg/mining/service.go @@ -228,7 +228,7 @@ func (s *Service) updateInstallationCache() (*SystemInfo, error) { return nil, fmt.Errorf("could not marshal cache data: %w", err) } - if err := os.WriteFile(configPath, data, 0644); err != nil { + if err := os.WriteFile(configPath, data, 0600); err != nil { return nil, fmt.Errorf("could not write cache file: %w", err) } diff --git a/pkg/mining/settings_manager.go b/pkg/mining/settings_manager.go index 61f1fc1..480b08d 100644 --- a/pkg/mining/settings_manager.go +++ b/pkg/mining/settings_manager.go @@ -147,7 +147,7 @@ func (sm *SettingsManager) Save() error { return err } - return os.WriteFile(sm.settingsPath, data, 0644) + return os.WriteFile(sm.settingsPath, data, 0600) } // Get returns a copy of the current settings @@ -172,7 +172,7 @@ func (sm *SettingsManager) Update(fn func(*AppSettings)) error { return err } - return os.WriteFile(sm.settingsPath, data, 0644) + return os.WriteFile(sm.settingsPath, data, 0600) } // UpdateWindowState saves the current window state diff --git a/pkg/mining/ttminer_stats.go b/pkg/mining/ttminer_stats.go index 00b40be..2d2eba3 100644 --- a/pkg/mining/ttminer_stats.go +++ b/pkg/mining/ttminer_stats.go @@ -9,8 +9,8 @@ import ( // GetStats retrieves performance metrics from the TT-Miner API. func (m *TTMiner) GetStats() (*PerformanceMetrics, error) { - m.mu.RLock() - defer m.mu.RUnlock() + m.mu.Lock() + defer m.mu.Unlock() if !m.Running { return nil, errors.New("miner is not running") diff --git a/pkg/mining/xmrig_start.go b/pkg/mining/xmrig_start.go index 9effa6e..441759f 100644 --- a/pkg/mining/xmrig_start.go +++ b/pkg/mining/xmrig_start.go @@ -255,5 +255,5 @@ func (m *XMRigMiner) createConfig(config *Config) error { if err != nil { return err } - return os.WriteFile(m.ConfigPath, data, 0644) + return os.WriteFile(m.ConfigPath, data, 0600) } diff --git a/pkg/mining/xmrig_stats.go b/pkg/mining/xmrig_stats.go index 57684bf..f2fe6e7 100644 --- a/pkg/mining/xmrig_stats.go +++ b/pkg/mining/xmrig_stats.go @@ -9,8 +9,8 @@ import ( // GetStats retrieves the performance statistics from the running XMRig miner. func (m *XMRigMiner) GetStats() (*PerformanceMetrics, error) { - m.mu.RLock() - defer m.mu.RUnlock() + m.mu.Lock() + defer m.mu.Unlock() if !m.Running { return nil, errors.New("miner is not running")