Example #1
0
        public void Test2()
        {
            var list = ProtocolHandlerFactory.GetSupportedParsers();

            Assert.True(list.Count > 0);
            Assert.Contains("ssh", list);
            Assert.Contains("rdp", list);
            Assert.Contains("url", list);
            Assert.Contains("telnet", list);
        }
        public override async Task <INdmCapabilityConnector> InitAsync(INdmApi ndmApi)
        {
            INdmConfig ndmConfig = ndmApi.ConfigProvider.GetConfig <INdmConfig>();

            await PreInitAsync(ndmApi);

            if (!ndmConfig.Enabled)
            {
                return(NullNdmCapabilityConnector.Instance);
            }

            providersModule = new NdmProvidersModule(ndmApi);
            await _consumerModule.Init();

            await providersModule.InitAsync();

            IProviderService providerService = providersModule.GetProviderService();

            var subprotocolFactory = new NdmProviderSubprotocolFactory(ndmApi.MessageSerializationService, ndmApi.NodeStatsManager,
                                                                       ndmApi.LogManager, ndmApi.AccountService, ndmApi.ConsumerService, providerService, ndmApi.NdmConsumerChannelManager, ndmApi.EthereumEcdsa,
                                                                       ndmApi.Wallet, ndmApi.NdmFaucet, ndmApi.Enode.PublicKey, ndmApi.ProviderAddress, ndmApi.ConsumerAddress, ndmConfig.VerifyP2PSignature);
            var protocolHandlerFactory = new ProtocolHandlerFactory(subprotocolFactory, ndmApi.ProtocolValidator,
                                                                    ndmApi.EthRequestService, ndmApi.LogManager);
            var capabilityConnector = new NdmCapabilityConnector(ndmApi.ProtocolsManager, protocolHandlerFactory,
                                                                 ndmApi.AccountService, ndmApi.LogManager, ndmApi.ProviderAddress);

            providerService.AddressChanged += (_, e) =>
            {
                if (!(e.OldAddress is null) && e.OldAddress != Address.Zero)
                {
                    return;
                }

                capabilityConnector.AddCapability();
            };

            var pluginBuilder = new YamlNdmPluginBuilder();
            var pluginLoader  = new YamlNdmPluginLoader("ndm-plugins", pluginBuilder, ndmApi.LogManager);
            var plugins       = pluginLoader.Load();

            foreach (var plugin in plugins)
            {
                await providerService.InitPluginAsync(plugin);
            }

            ndmApi.MonitoringService?.RegisterMetrics(typeof(Metrics));

            return(capabilityConnector);
        }
Example #3
0
        public void Validate(List <string> errors)
        {
            var supported = ProtocolHandlerFactory.GetSupportedParsers();

            if (!supported.Contains(ParserId))
            {
                errors.Add($"Selected parser is not in the supported list:{string.Join(',',supported.ToArray())}");
            }

            if (Options?.Count > 0)
            {
                var opts = string.Join(',', Enum.GetValues(typeof(ParserConfigDefinitions.ProcessingOptions)));
                foreach (var opt in Options)
                {
                    if (!Enum.TryParse(typeof(ParserConfigDefinitions.ProcessingOptions), opt, true, out object o))
                    {
                        if (Regex.IsMatch(opt, $"{ParserConfigDefinitions.ProcessingOptions.wait}:\\d+"))
                        {
                            continue;
                        }

                        errors.Add($"Invalid Processing Option:{opt}. Valid values are:{opts}");
                    }
                }
            }

            if (UseDefaultTemplate && !string.IsNullOrEmpty(UseTemplateFile))
            {
                errors.Add($"The properties: {nameof(UseDefaultTemplate)} and {nameof(UseTemplateFile)} are mutually exclusive");
            }

            if (!string.IsNullOrEmpty(PostProcessingExec))
            {
                if (!UseDefaultTemplate && string.IsNullOrEmpty(UseTemplateFile))
                {
                    errors.Add($"{nameof(PostProcessingExec)} can only be used with {nameof(UseDefaultTemplate)} or {nameof(UseTemplateFile)}");
                }
            }
        }