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); }
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)}"); } } }