예제 #1
0
        public void ConfigurePerksLocally()
        {
            ConfigurationEventArgs eventArgs = new ConfigurationEventArgs
            {
                Perks = PerksConfiguration
            };
            if (OnConfigurePerks != null) OnConfigurePerks(this, eventArgs);

            if (eventArgs.ConfigurationModified)
            {
                bool miningWithMultipleProxies = MiningEngine.Mining && (Devices.Count(d => d.Kind == DeviceKind.PXY) > 1);
                if (!PerksConfiguration.PerksEnabled && miningWithMultipleProxies)
                    throw new Exception(MiningEngine.AdvancedProxiesRequirePerksMessage);

                PerksConfiguration.SavePerksConfiguration();

                SetupRemoting();
                if (ConfigurationModified != null) ConfigurationModified(this, new EventArgs());
            }
            else
                PerksConfiguration.LoadPerksConfiguration(PathConfiguration.SharedConfigPath);
        }
예제 #2
0
        private void ConfigureStrategiesLocally()
        {
            ConfigurationEventArgs eventArgs = new ConfigurationEventArgs
            {
                Application = ApplicationConfiguration,
                Engine = EngineConfiguration
            };
            if (OnConfigureStrategies != null) OnConfigureStrategies(this, eventArgs);

            if (eventArgs.ConfigurationModified)
            {
                EngineConfiguration.SaveStrategyConfiguration();
                ApplicationConfiguration.SaveApplicationConfiguration();

                if (ConfigurationModified != null) ConfigurationModified(this, new EventArgs());
            }
            else
            {
                EngineConfiguration.LoadStrategyConfiguration(PathConfiguration.SharedConfigPath);
                ApplicationConfiguration.LoadApplicationConfiguration(PathConfiguration.SharedConfigPath);
            }
        }
예제 #3
0
        private void ConfigurePoolsRemotely()
        {
            Application workingApplicationConfiguration = new Application();
            Engine.Data.Configuration.Engine workingEngineConfiguration = new Engine.Data.Configuration.Engine();

            GetRemoteApplicationConfiguration(SelectedRemoteInstance);

            ObjectCopier.CopyObject(remoteApplicationConfig.ToModelObject(), workingApplicationConfiguration);
            ObjectCopier.CopyObject(remoteEngineConfig.ToModelObject(), workingEngineConfiguration);

            ConfigurationEventArgs eventArgs = new ConfigurationEventArgs
            {
                Application = workingApplicationConfiguration,
                Engine = workingEngineConfiguration,
                Perks = PerksConfiguration
            };
            if (OnConfigurePools != null) OnConfigurePools(this, eventArgs);

            if (eventArgs.ConfigurationModified)
            {
                ObjectCopier.CopyObject(workingApplicationConfiguration.ToTransferObject(), remoteApplicationConfig);
                ObjectCopier.CopyObject(workingEngineConfiguration.ToTransferObject(), remoteEngineConfig);
                SetConfigurationRemotely(SelectedRemoteInstance, remoteApplicationConfig, remoteEngineConfig, null, null);

                if (ApplicationConfiguration.SaveCoinsToAllMachines && PerksConfiguration.PerksEnabled && PerksConfiguration.EnableRemoting)
                    SetCoinConfigurationOnAllRigs(remoteEngineConfig.CoinConfigurations);
            }
        }
예제 #4
0
        private void ConfigurePoolsLocally()
        {
            ConfigurationEventArgs eventArgs = new ConfigurationEventArgs
            {
                Application = ApplicationConfiguration,
                Engine = EngineConfiguration,
                Perks = PerksConfiguration
            };
            if (OnConfigurePools != null) OnConfigurePools(this, eventArgs);

            if (eventArgs.ConfigurationModified)
            {
                FixMisconfiguredDevices();
                ConfigureUnconfiguredDevices();

                EngineConfiguration.SaveCoinConfigurations();
                EngineConfiguration.SaveDeviceConfigurations();
                ApplicationConfiguration.SaveApplicationConfiguration();

                //may be able to auto-assign more devices now that coins are setup
                AddMissingDeviceConfigurations();

                ApplyModelsToViewModel();
                if (ConfigurationModified != null) ConfigurationModified(this, new EventArgs());

                SubmitMobileMinerPools();

                if (ApplicationConfiguration.SaveCoinsToAllMachines && PerksConfiguration.PerksEnabled && PerksConfiguration.EnableRemoting)
                    SetCoinConfigurationOnAllRigs(EngineConfiguration.CoinConfigurations.ToArray());
            }
            else
            {
                EngineConfiguration.LoadCoinConfigurations(PathConfiguration.SharedConfigPath);
                ApplicationConfiguration.LoadApplicationConfiguration(PathConfiguration.SharedConfigPath);
            }
        }
예제 #5
0
        private void ConfigurePerksRemotely()
        {
            Perks workingPerksConfiguration = new Perks();

            GetRemoteApplicationConfiguration(SelectedRemoteInstance);

            ObjectCopier.CopyObject(remotePerksConfig, workingPerksConfiguration);

            ConfigurationEventArgs eventArgs = new ConfigurationEventArgs
            {
                Perks = workingPerksConfiguration
            };
            if (OnConfigurePerks != null) OnConfigurePerks(this, eventArgs);

            if (eventArgs.ConfigurationModified)
            {
                ObjectCopier.CopyObject(workingPerksConfiguration, remotePerksConfig);
                SetConfigurationRemotely(SelectedRemoteInstance, null, null, null, remotePerksConfig);
            }
        }
예제 #6
0
        private void ConfigureStrategiesRemotely()
        {
            Application workingApplicationConfiguration = new Application();
            Engine.Data.Configuration.Engine workingEngineConfiguration = new Engine.Data.Configuration.Engine();

            GetRemoteApplicationConfiguration(SelectedRemoteInstance);

            ObjectCopier.CopyObject(remoteApplicationConfig.ToModelObject(), workingApplicationConfiguration);
            ObjectCopier.CopyObject(remoteEngineConfig.ToModelObject(), workingEngineConfiguration);

            ConfigurationEventArgs eventArgs = new ConfigurationEventArgs
            {
                Application = workingApplicationConfiguration,
                Engine = workingEngineConfiguration
            };
            if (OnConfigureStrategies != null) OnConfigureStrategies(this, eventArgs);

            if (eventArgs.ConfigurationModified)
            {
                ObjectCopier.CopyObject(workingApplicationConfiguration.ToTransferObject(), remoteApplicationConfig);
                ObjectCopier.CopyObject(workingEngineConfiguration.ToTransferObject(), remoteEngineConfig);

                SetConfigurationRemotely(SelectedRemoteInstance, remoteApplicationConfig, remoteEngineConfig, null, null);
            }
        }
예제 #7
0
        public void ConfigureSettingsLocally()
        {
            bool oldNetworkDeviceDetection = ApplicationConfiguration.NetworkDeviceDetection;
            bool oldCoinWarzValue = ApplicationConfiguration.UseCoinWarzApi;
            bool oldWhatMineValue = ApplicationConfiguration.UseWhatMineApi;
            bool oldWhatToMineValue = ApplicationConfiguration.UseWhatToMineApi;
            string oldCoinWarzKey = ApplicationConfiguration.CoinWarzApiKey;
            string oldWhatMineKey = ApplicationConfiguration.WhatMineApiKey;

            string oldConfigPath = PathConfiguration.SharedConfigPath;
            
            ConfigurationEventArgs eventArgs = new ConfigurationEventArgs
            {
                Application = ApplicationConfiguration,
                Engine = EngineConfiguration,
                Paths = PathConfiguration,
                Perks = PerksConfiguration
            };
            if (OnConfigureSettings != null) OnConfigureSettings(this, eventArgs);

            if (eventArgs.ConfigurationModified)
            {
                PathConfiguration.SavePathConfiguration();

                //save settings as the "shared" config path may have changed
                //these are settings not considered machine/device-specific
                //e.g. no device settings, no miner settings
                string newConfigPath = PathConfiguration.SharedConfigPath;
                MigrateSettingsToNewFolder(oldConfigPath, newConfigPath);

                ApplicationConfiguration.SaveApplicationConfiguration(newConfigPath);
                PerksConfiguration.SavePerksConfiguration(newConfigPath);
                EngineConfiguration.SaveCoinConfigurations(newConfigPath);
                EngineConfiguration.SaveStrategyConfiguration(newConfigPath);
                EngineConfiguration.SaveMinerConfiguration();
                MiningEngine.SaveAlgorithmConfigurations();
                SaveKnownCoinsToFile();

                //don't refresh coin stats excessively
                if ((oldCoinWarzValue != ApplicationConfiguration.UseCoinWarzApi) ||
                    !oldCoinWarzKey.Equals(ApplicationConfiguration.CoinWarzApiKey) ||
                    (oldWhatToMineValue != ApplicationConfiguration.UseWhatToMineApi) ||
                    (oldWhatMineValue != ApplicationConfiguration.UseWhatMineApi) ||
                    !oldWhatMineKey.Equals(ApplicationConfiguration.WhatMineApiKey))
                {
                    SetupCoinApi(); //pickup API key changes
                    RefreshCoinStatsAsync();
                }

                //if we are not detecting Network Devices, start the async checks
                if (ApplicationConfiguration.NetworkDeviceDetection &&
                    (!oldNetworkDeviceDetection))
                    RunNetworkDeviceScan();

                SubmitMobileMinerPools();

                UpdateDevicesForProxySettings();
                ApplyModelsToViewModel();
                if (ConfigurationModified != null) ConfigurationModified(this, new EventArgs());
            }
            else
            {
                EngineConfiguration.LoadMinerConfiguration();
                PathConfiguration.LoadPathConfiguration();
                ApplicationConfiguration.LoadApplicationConfiguration(PathConfiguration.SharedConfigPath);
            }
        }
예제 #8
0
        private void HandleConfigurePerks(object sender, ConfigurationEventArgs e)
        {
            PerksForm perksForm = new PerksForm(e.Perks);
            if (app.SelectedRemoteInstance != null)
                perksForm.Text = String.Format("{0}: {1}", perksForm.Text, app.SelectedRemoteInstance.MachineName);

            e.ConfigurationModified = perksForm.ShowDialog() == DialogResult.OK;
        }
예제 #9
0
        private void HandleConfigurePools(object sender, ConfigurationEventArgs e)
        {
            PoolsForm coinsForm = new PoolsForm(e.Engine.CoinConfigurations, app.KnownCoins, e.Application, e.Perks);
            if (app.SelectedRemoteInstance != null)
                coinsForm.Text = String.Format("{0}: {1}", coinsForm.Text, app.SelectedRemoteInstance.MachineName);

            e.ConfigurationModified = coinsForm.ShowDialog() == DialogResult.OK;
        }
예제 #10
0
        private void HandleConfigureSettings(object sender, ConfigurationEventArgs e)
        {
            SettingsForm settingsForm = new SettingsForm(e.Application, e.Engine.XgminerConfiguration, e.Paths, e.Perks);
            if (app.SelectedRemoteInstance != null)
                settingsForm.Text = String.Format("{0}: {1}", settingsForm.Text, app.SelectedRemoteInstance.MachineName);

            e.ConfigurationModified = settingsForm.ShowDialog() == DialogResult.OK;
        }
예제 #11
0
        private void HandleConfigureStrategies(object sender, ConfigurationEventArgs e)
        {
            StrategiesForm strategiesForm = new StrategiesForm(e.Engine.StrategyConfiguration, app.KnownCoins, e.Application);
            if (app.SelectedRemoteInstance != null)
                strategiesForm.Text = String.Format("{0}: {1}", strategiesForm.Text, app.SelectedRemoteInstance.MachineName);

            e.ConfigurationModified = strategiesForm.ShowDialog() == DialogResult.OK;
        }