Exemplo n.º 1
0
        private static void CheckPluginMetaData(IMinerPlugin plugin)
        {
            if (plugin is IPluginSupportedAlgorithmsSettings pluginSettings)
            {
                var supportedDevicesAlgorithms      = pluginSettings.SupportedDevicesAlgorithmsDict();
                var supportedDevicesAlgorithmsCount = supportedDevicesAlgorithms.Select(dict => dict.Value.Count).Sum();
                if (supportedDevicesAlgorithmsCount == 0)
                {
                    throw new Exception($"{plugin.Name}-{plugin.PluginUUID} NO algorithms");
                }

                foreach (var kvp in supportedDevicesAlgorithms)
                {
                    foreach (var algo in kvp.Value)
                    {
                        var name = pluginSettings.AlgorithmName(algo);
                        if (string.IsNullOrEmpty(name) || string.IsNullOrWhiteSpace(name))
                        {
                            throw new Exception($"{plugin.Name}-{plugin.PluginUUID} Invalid name '{name}' for algorithm type '{algo.ToString()}'");
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        private static void AddPluginToPluginPackageInfos(IMinerPlugin plugin)
        {
            var version = new MajorMinorVersion(plugin.Version.Major, plugin.Version.Minor);

            string pluginPackageURL = null;

            if (version.major == 3)
            {
                pluginPackageURL = "https://github.com/nicehash/NHM_MinerPluginsDownloads/releases/download/v3.x/" + GetPluginPackageName(plugin);
            }
            else if (version.major == 4)
            {
                pluginPackageURL = "https://github.com/nicehash/NHM_MinerPluginsDownloads/releases/download/v4.x/" + GetPluginPackageName(plugin);
            }
            else if (version.major == 5)
            {
                pluginPackageURL = "https://github.com/nicehash/NHM_MinerPluginsDownloads/releases/download/v5.x/" + GetPluginPackageName(plugin);
            }
            else
            {
                //throw new Exception("Plugin version not supported");
            }
            string minerPackageURL = null;

            if (plugin is IMinerBinsSource binsSource)
            {
                minerPackageURL = binsSource.GetMinerBinsUrlsForPlugin().FirstOrDefault();
            }

            var binaryVersion = "N/A";

            // TODO binary version
            if (plugin is IGetMinerBinaryVersion binVersionGetter)
            {
                binaryVersion = binVersionGetter.GetMinerBinaryVersion();
            }
            PluginMetaInfo pluginMetaInfo = null;

            if (plugin is IGetPluginMetaInfo pluginMetaInfoGetter)
            {
                pluginMetaInfo = pluginMetaInfoGetter.GetPluginMetaInfo();
            }
            if (pluginMetaInfo == null)
            {
                return;
            }

            var packageInfo = new PluginPackageInfoForJson
            {
                PluginUUID                 = plugin.PluginUUID,
                PluginAuthor               = "*****@*****.**",
                PluginName                 = plugin.Name,
                PluginVersion              = version,
                PluginPackageURL           = pluginPackageURL,
                MinerPackageURL            = minerPackageURL,
                SupportedDevicesAlgorithms = TransformToPluginPackageInfoSupportedDevicesAlgorithms(pluginMetaInfo.SupportedDevicesAlgorithms),
                // TODO enhance this with the bins version
                PluginDescription = $"Miner Binary Version '{binaryVersion}'.\n\n" + pluginMetaInfo.PluginDescription
            };

            PluginPackageInfos.Add(packageInfo);
        }
Exemplo n.º 3
0
        private static PluginPackageInfoForJson ToPluginToPluginPackageInfos(IMinerPlugin plugin)
        {
            var version = new MajorMinorVersion(plugin.Version.Major, plugin.Version.Minor);

            if (!Checkers.IsMajorVersionSupported(version.major))
            {
                throw new Exception($"Plugin version '{version.major}' not supported. Make sure you add the download link for this version");
            }
            string minerPackageURL = null;

            if (plugin is IMinerBinsSource binsSource)
            {
                minerPackageURL = binsSource.GetMinerBinsUrlsForPlugin().FirstOrDefault();
            }
            string binaryHash = null;

            if (minerPackageURL != null)
            {
                var filepath = GetTemporaryWorkFolder($"{plugin.PluginUUID}.tmp");
                Logger.Info("MinerPluginsPacker", $"Calculating hash for {plugin.Name}-{plugin.PluginUUID}");
                using var myWebClient = new WebClient();
                myWebClient.DownloadFile(minerPackageURL, filepath);
                binaryHash = FileHelpers.GetFileSHA256Checksum(filepath);
                File.Delete(filepath);
            }
            var    pluginZipFileName = GetPluginPackageName(plugin);
            var    dllPackageZip     = GetPluginsPackagesPath(pluginZipFileName);
            string pluginPackageHash = FileHelpers.GetFileSHA256Checksum(dllPackageZip);
            var    binaryVersion     = "N/A";

            // TODO binary version
            if (plugin is IGetMinerBinaryVersion binVersionGetter)
            {
                binaryVersion = binVersionGetter.GetMinerBinaryVersion();
            }
            PluginMetaInfo pluginMetaInfo = null;

            if (plugin is IGetPluginMetaInfo pluginMetaInfoGetter)
            {
                pluginMetaInfo = pluginMetaInfoGetter.GetPluginMetaInfo();
            }
            if (pluginMetaInfo == null)
            {
                return(null);
            }
            var packagePassword = plugin is IGetBinsPackagePassword p ? p.BinsPackagePassword : null;
            var packageInfo     = new PluginPackageInfoForJson
            {
                PluginUUID                 = plugin.PluginUUID,
                BinaryPackageHash          = binaryHash,
                PluginPackageHash          = pluginPackageHash,
                PluginAuthor               = "*****@*****.**",
                PluginName                 = plugin.Name,
                PluginVersion              = version,
                PluginPackageURL           = $"https://github.com/nicehash/NHM_MinerPluginsDownloads/releases/download/v{version.major}.x/" + GetPluginPackageName(plugin),
                MinerPackageURL            = minerPackageURL,
                SupportedDevicesAlgorithms = TransformToPluginPackageInfoSupportedDevicesAlgorithms(pluginMetaInfo.SupportedDevicesAlgorithms),
                // TODO enhance this with the bins version
                PluginDescription = $"Miner Binary Version '{binaryVersion}'.\n\n" + pluginMetaInfo.PluginDescription,
                PackagePassword   = packagePassword
            };

            return(packageInfo);
        }
Exemplo n.º 4
0
 private PluginContainer(IMinerPlugin plugin)
 {
     _plugin = plugin;
 }