示例#1
0
 public static void GeneralConfigFileCommit()
 {
     CommitBenchmarks();
     InternalConfigs.WriteFileSettings(GeneralConfigPath, GeneralConfig);
 }
示例#2
0
        public void SaveMoveConfig(DeviceType deviceType, AlgorithmType algorithmType, string sourcePath)
        {
            lock (_configsLock)
            {
                try
                {
                    string destinationPath = Path.Combine(GetMinerConfigsRoot(), $"{algorithmType.ToString()}_{deviceType.ToString()}.txt");
                    var    dirPath         = Path.GetDirectoryName(destinationPath);
                    if (Directory.Exists(dirPath) == false)
                    {
                        Directory.CreateDirectory(dirPath);
                    }

                    var readConfigContent = File.ReadAllText(sourcePath);
                    // make it JSON
                    readConfigContent = "{" + readConfigContent + "}";
                    // remove old if any
                    if (File.Exists(destinationPath))
                    {
                        File.Delete(destinationPath);
                    }
                    // move to path
                    File.Move(sourcePath, destinationPath);

                    var    cachedFileSettings     = $"cached_{algorithmType.ToString()}_{deviceType.ToString()}.json";
                    var    cachedFileSettingsPath = Path.Combine(GetMinerConfigsRoot(), cachedFileSettings);
                    var    uuids          = _registeredDeviceUUIDTypes.Where(kvp => kvp.Value == deviceType).Select(kvp => kvp.Key).ToList();
                    object cachedSettings = null;
                    //TODO load and save
                    switch (deviceType)
                    {
                    case DeviceType.CPU:
                        var cpuConfig = JsonConvert.DeserializeObject <CpuConfig>(readConfigContent);
                        SetCpuConfig(algorithmType, cpuConfig);
                        cachedSettings = new CachedCpuSettings
                        {
                            CachedConfig = cpuConfig,
                            DeviceUUIDs  = uuids
                        };
                        break;

                    case DeviceType.AMD:
                        var amdConfig = JsonConvert.DeserializeObject <AmdConfig>(readConfigContent);
                        SetAmdConfig(algorithmType, amdConfig);
                        cachedSettings = new CachedAmdSettings
                        {
                            CachedConfig = amdConfig,
                            DeviceUUIDs  = uuids
                        };
                        break;

                    case DeviceType.NVIDIA:
                        var nvidiaConfig = JsonConvert.DeserializeObject <NvidiaConfig>(readConfigContent);
                        SetNvidiaConfig(algorithmType, nvidiaConfig);
                        cachedSettings = new CachedNvidiaSettings
                        {
                            CachedConfig = nvidiaConfig,
                            DeviceUUIDs  = uuids
                        };
                        break;
                    }
                    if (cachedSettings != null)
                    {
                        var header = "// This config file was autogenerated by NHML.";
                        header += "\n// \"DeviceUUIDs\" is used to check if we have same devices and should not be edited.";
                        header += "\n// \"CachedConfig\" can be edited as it is used as config template (edit this only if you know what you are doing)";
                        header += "\n// If \"DeviceUUIDs\" is different (new devices added or old ones removed) this file will be overwritten and \"CachedConfig\" will be set to defaults.";
                        header += "\n\n";
                        var jsonText          = JsonConvert.SerializeObject(cachedSettings, Formatting.Indented);
                        var headerWithConfigs = header + jsonText;
                        InternalConfigs.WriteFileSettings(cachedFileSettingsPath, headerWithConfigs);
                    }
                }
                catch (Exception e)
                {
                    Logger.Error("XmrStakRxPlugin", $"SaveMoveConfig error: {e.Message}");
                }
            }
        }
        public static void InitializeConfig()
        {
            // init defaults
            GeneralConfig.SetDefaults();
            GeneralConfig.hwid = ApplicationStateManager.RigID;

            var asmVersion = new Version(Application.ProductVersion);

            // load file if it exist
            var fromFile = InternalConfigs.ReadFileSettings <GeneralConfig>(GeneralConfigPath);

            if (fromFile != null)
            {
                if (fromFile.ConfigFileVersion != null && asmVersion.CompareTo(fromFile.ConfigFileVersion) != 0)
                {
                    IsVersionChanged = true;
                    Logger.Info(Tag, "Config file differs from version of NiceHashMiner... Creating backup archive");
                    CreateBackupArchive(fromFile.ConfigFileVersion);
                    if (RestoreBackupArchive(asmVersion))//check if we have backup version
                    {
                        fromFile = InternalConfigs.ReadFileSettings <GeneralConfig>(GeneralConfigPath);
                    }
                }
                if (fromFile?.ConfigFileVersion != null)
                {
                    // set config loaded from file
                    _isGeneralConfigFileInit = true;
                    GeneralConfig            = fromFile;
                    GeneralConfig.FixSettingBounds();
                }
                else
                {
                    Logger.Info(Tag, "Loaded Config file no version detected falling back to defaults.");
                }
            }
            else
            {
                GeneralConfigFileCommit();
            }
#warning "DELETE this after 1.9.2.18"
            #region MIGRATE plugin UUIDs
            var findReplace = new Dictionary <string, string>
            {
                { "\"PluginUUID\": \"BMiner\",", "\"PluginUUID\": \"e5fbd330-7235-11e9-b20c-f9f12eb6d835\"," },
                { "\"PluginUUID\": \"CCMinerTpruvot\",", "\"PluginUUID\": \"2257f160-7236-11e9-b20c-f9f12eb6d835\"," },
                { "\"PluginUUID\": \"ClaymoreDual\",", "\"PluginUUID\": \"70984aa0-7236-11e9-b20c-f9f12eb6d835\"," },
                { "\"PluginUUID\": \"cpuminer-opt\",", "\"PluginUUID\": \"92fceb00-7236-11e9-b20c-f9f12eb6d835\"," },
                { "\"PluginUUID\": \"CryptoDredge\",", "\"PluginUUID\": \"d9c2e620-7236-11e9-b20c-f9f12eb6d835\"," },
                { "\"PluginUUID\": \"Ethlargement\",", "\"PluginUUID\": \"efd40691-618c-491a-b328-e7e020bda7a3\"," },
                { "\"PluginUUID\": \"Ewbf\",", "\"PluginUUID\": \"f7d5dfa0-7236-11e9-b20c-f9f12eb6d835\"," },
                { "\"PluginUUID\": \"ExamplePlugin\",", "\"PluginUUID\": \"455c4d98-a45d-45d6-98ca-499ce866b2c7\"," },
                { "\"PluginUUID\": \"GMinerCuda9.0+\",", "\"PluginUUID\": \"1b7019d0-7237-11e9-b20c-f9f12eb6d835\"," },
                { "\"PluginUUID\": \"LolMiner\",", "\"PluginUUID\": \"435f0820-7237-11e9-b20c-f9f12eb6d835\"," },
                { "\"PluginUUID\": \"MiniZ\",", "\"PluginUUID\": \"59bba2c0-b1ef-11e9-8e4e-bb1e2c6e76b4\"," },
                { "\"PluginUUID\": \"NanoMiner\",", "\"PluginUUID\": \"a841b4b0-ae17-11e9-8e4e-bb1e2c6e76b4\"," },
                { "\"PluginUUID\": \"NBMiner\",", "\"PluginUUID\": \"6c07f7a0-7237-11e9-b20c-f9f12eb6d835\"," },
                { "\"PluginUUID\": \"Phoenix\",", "\"PluginUUID\": \"f5d4a470-e360-11e9-a914-497feefbdfc8\"," },
                { "\"PluginUUID\": \"SGminerAvemore\",", "\"PluginUUID\": \"bc95fd70-e361-11e9-a914-497feefbdfc8\"," },
                { "\"PluginUUID\": \"SRBMiner\",", "\"PluginUUID\": \"85f507c0-b2ba-11e9-8e4e-bb1e2c6e76b4\"," },
                { "\"PluginUUID\": \"TeamRedMiner\",", "\"PluginUUID\": \"abc3e2a0-7237-11e9-b20c-f9f12eb6d835\"," },
                { "\"PluginUUID\": \"TRex\",", "\"PluginUUID\": \"d47d9b00-7237-11e9-b20c-f9f12eb6d835\"," },
                { "\"PluginUUID\": \"TTMiner\",", "\"PluginUUID\": \"f1945a30-7237-11e9-b20c-f9f12eb6d835\"," },
                { "\"PluginUUID\": \"WildRig\",", "\"PluginUUID\": \"2edd8080-9cb6-11e9-a6b8-09e27549d5bb\"," },
                { "\"PluginUUID\": \"XMRig\",", "\"PluginUUID\": \"1046ea50-c261-11e9-8e4e-bb1e2c6e76b4\"," },
                { "\"PluginUUID\": \"XmrStak\",", "\"PluginUUID\": \"3d4e56b0-7238-11e9-b20c-f9f12eb6d835\"," },
                { "\"PluginUUID\": \"ZEnemy\",", "\"PluginUUID\": \"5532d300-7238-11e9-b20c-f9f12eb6d835\"," },
            };
            try
            {
                var deviceConfigs = Directory.GetFiles(Paths.ConfigsPath(), "device_settings_*.json", SearchOption.TopDirectoryOnly);
                foreach (var devConfigPath in deviceConfigs)
                {
                    try
                    {
                        var content           = File.ReadAllText(devConfigPath);
                        var containsNameUUIDs = false;
                        foreach (var key in findReplace.Keys)
                        {
                            if (content.Contains(key))
                            {
                                containsNameUUIDs = true;
                                break;
                            }
                        }
                        if (!containsNameUUIDs)
                        {
                            continue;
                        }
                        foreach (var kvp in findReplace)
                        {
                            content = content.Replace(kvp.Key, kvp.Value);
                        }
                        File.WriteAllText(devConfigPath, content);
                    }
                    catch
                    {}
                }
            }
            catch
            {}
            #endregion MIGRATE plugin UUIDs
        }
示例#4
0
        // TODO add more options
        static void Main(string[] args)
        {
            PluginBase.IS_CALLED_FROM_PACKER = true;
            if (args.Length < 1)
            {
                Console.WriteLine("Set miner plugins root path");
                return;
            }

            var exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            var pluginPackagesFolder = Path.Combine(exePath, "plugins_packages");
            var pluginsSearchRoot    = args[0];

            // get all managed plugin dll's
            var dllFiles = Directory.GetFiles(pluginsSearchRoot, "*.dll", SearchOption.AllDirectories)
                           .Where(filePath => !filePath.Contains("MinerPlugin") && filePath.Contains("net45") && filePath.Contains("Release") && !filePath.Contains("bin")).ToList();

            var packedPlugins = new HashSet <string>();

            if (Directory.Exists(pluginPackagesFolder))
            {
                Console.WriteLine("Deleting old plugins packages");
                Directory.Delete(pluginPackagesFolder, true);
            }
            if (!Directory.Exists(pluginPackagesFolder))
            {
                Directory.CreateDirectory(pluginPackagesFolder);
            }

            // what plugins to bundle
            var bundlePlugins = new List <string>
            {
                "2257f160-7236-11e9-b20c-f9f12eb6d835", // CCMinerTpruvotPlugin
                "70984aa0-7236-11e9-b20c-f9f12eb6d835", // ClaymoreDual14Plugin
                //"92fceb00-7236-11e9-b20c-f9f12eb6d835", // CPUMinerPlugin
                "1b7019d0-7237-11e9-b20c-f9f12eb6d835", // GMinerPlugin
                "435f0820-7237-11e9-b20c-f9f12eb6d835", // LolMinerBeamPlugin
                "59bba2c0-b1ef-11e9-8e4e-bb1e2c6e76b4", // MiniZPlugin
                "6c07f7a0-7237-11e9-b20c-f9f12eb6d835", // NBMinerPlugin
                "f5d4a470-e360-11e9-a914-497feefbdfc8", // PhoenixPlugin
                "abc3e2a0-7237-11e9-b20c-f9f12eb6d835", // TeamRedMinerPlugin
                "d47d9b00-7237-11e9-b20c-f9f12eb6d835", // TRexPlugin
                //"3d4e56b0-7238-11e9-b20c-f9f12eb6d835", // XmrStakPlugin
                "5532d300-7238-11e9-b20c-f9f12eb6d835", // ZEnemyPlugin
                //"4aec5ec0-10f8-11ea-bad3-8dea21141bbb", // XmrStakRxPlugin
                "1046ea50-c261-11e9-8e4e-bb1e2c6e76b4", // XMRig
            };
            var bundlePluginsDlls = new Dictionary <string, string>();

            foreach (var filePath in dllFiles)
            {
                var dllDir = Path.GetDirectoryName(filePath);
                var loaded = MinerPluginHost.LoadPlugin(dllDir);
                if (loaded.Count() == 0)
                {
                    // log what we couldn't load and continue
                    Console.WriteLine($"Skipping: {filePath}");
                    continue;
                }
                var newPlugins = MinerPluginHost.MinerPlugin
                                 .Where(kvp => packedPlugins.Contains(kvp.Key) == false)
                                 .Select(kvp => kvp.Value);

                foreach (var plugin in newPlugins)
                {
                    try
                    {
                        CheckPluginMetaData(plugin);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine($"\t\tCheckPluginMetaData ERROR!!!!!!!!! {e.Message}");
                    }
                }

                foreach (var plugin in newPlugins)
                {
                    try
                    {
                        if (bundlePlugins.Contains(plugin.PluginUUID))
                        {
                            bundlePluginsDlls.Add(plugin.PluginUUID, filePath);
                        }

                        var pluginZipFileName = GetPluginPackageName(plugin);
                        var dllPackageZip     = Path.Combine(pluginPackagesFolder, pluginZipFileName);
                        Console.WriteLine($"Packaging: {dllPackageZip}");
                        var fileName = Path.GetFileName(filePath);

                        using (var archive = ZipFile.Open(dllPackageZip, ZipArchiveMode.Create))
                        {
                            archive.CreateEntryFromFile(filePath, fileName);
                        }

                        packedPlugins.Add(plugin.PluginUUID);
                        AddPluginToPluginPackageInfos(plugin);
                    } catch (Exception e)
                    {
                        Console.WriteLine($"\t\t{e.Message}");
                    }
                }
            }
            try
            {
                var preinstalledDlls = Path.Combine(exePath, "miner_plugins");
                if (!Directory.Exists(preinstalledDlls))
                {
                    Directory.CreateDirectory(preinstalledDlls);
                }
                foreach (var kvp in bundlePluginsDlls)
                {
                    var preinstalledDllPlugin = Path.Combine(exePath, "miner_plugins", kvp.Key);
                    var fileName = Path.GetFileName(kvp.Value);
                    var dllPath  = Path.Combine(preinstalledDllPlugin, fileName);
                    if (!Directory.Exists(preinstalledDllPlugin))
                    {
                        Directory.CreateDirectory(preinstalledDllPlugin);
                    }
                    File.Copy(kvp.Value, dllPath);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"\t\t{e.Message}");
            }

            // dump our plugin packages
            InternalConfigs.WriteFileSettings(Path.Combine(pluginPackagesFolder, "update.json"), PluginPackageInfos);

            var deleteFolder = Path.Combine(exePath, "miner_plugins", "BrokenMinerPluginUUID");

            Directory.Delete(deleteFolder, true);
        }
 public static void GeneralConfigFileCommit()
 {
     CommitBenchmarks();
     InternalConfigs.WriteFileSettings(GeneralConfigPath, GeneralConfig);
     ShowRestartRequired?.Invoke(null, IsRestartNeeded());
 }
 private static void CommitToFile() => InternalConfigs.WriteFileSettings(AcceptedPluginsPath, AcceptedPluginUUIDs);
示例#7
0
        // TODO add more options
        static void Main(string[] args)
        {
            if (args.Length < 1)
            {
                Console.WriteLine("Set miner plugins root path");
                return;
            }

            var exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            var pluginPackagesFolder = Path.Combine(exePath, "plugins_packages");
            var pluginsSearchRoot    = args[0];

            // get all managed plugin dll's
            var dllFiles = Directory.GetFiles(pluginsSearchRoot, "*.dll", SearchOption.AllDirectories)
                           .Where(filePath => !filePath.Contains("MinerPlugin") && filePath.Contains("net45") && filePath.Contains("Release") && !filePath.Contains("bin")).ToList();

            var packedPlugins = new HashSet <string>();

            if (Directory.Exists(pluginPackagesFolder))
            {
                Console.WriteLine("Deleting old plugins packages");
                Directory.Delete(pluginPackagesFolder, true);
            }
            if (!Directory.Exists(pluginPackagesFolder))
            {
                Directory.CreateDirectory(pluginPackagesFolder);
            }

            foreach (var filePath in dllFiles)
            {
                var dllDir = Path.GetDirectoryName(filePath);
                var loaded = MinerPluginHost.LoadPlugin(dllDir);
                if (loaded.Count() == 0)
                {
                    // log what we couldn't load and continue
                    Console.WriteLine($"Skipping: {filePath}");
                    continue;
                }
                var newPlugins = MinerPluginHost.MinerPlugin
                                 .Where(kvp => packedPlugins.Contains(kvp.Key) == false)
                                 .Select(kvp => kvp.Value);

                foreach (var plugin in newPlugins)
                {
                    var pluginZipFileName = GetPluginPackageName(plugin);
                    var dllPackageZip     = Path.Combine(pluginPackagesFolder, pluginZipFileName);
                    Console.WriteLine($"Packaging: {dllPackageZip}");
                    var fileName = Path.GetFileName(filePath);

                    using (var archive = ZipFile.Open(dllPackageZip, ZipArchiveMode.Create))
                    {
                        archive.CreateEntryFromFile(filePath, fileName);
                    }

                    packedPlugins.Add(plugin.PluginUUID);
                    AddPluginToPluginPackageInfos(plugin);
                }
            }

            // dump our plugin packages
            InternalConfigs.WriteFileSettings(Path.Combine(pluginPackagesFolder, "update.json"), PluginPackageInfos);
        }
示例#8
0
 static DeviceDetection()
 {
     (Settings, _) = InternalConfigs.GetDefaultOrFileSettings(Paths.InternalsPath("devices.json"), new DeviceDetectionSettings {
     });
 }