internal static bool IsDiscoveryPluginSupportedForDiscoveryPollingEngineType( IDiscoveryPlugin plugin, DiscoveryPollingEngineType discovryPollingEngineType, IDictionary <IDiscoveryPlugin, DiscoveryPluginInfo> pluginInfoPairs) { return(pluginInfoPairs.ContainsKey(plugin) && ((IEnumerable <DiscoveryPollingEngineType>)pluginInfoPairs[plugin].get_SupportedPollingEngineTypes()).Contains <DiscoveryPollingEngineType>(discovryPollingEngineType)); }
private DiscoveryResultBase FilterItems( DiscoveryResultBase discoveryResult, Func <IDiscoveryPlugin, DiscoveryResultBase, DiscoveryPluginResultBase> filterFunction) { using (IEnumerator <IDiscoveryPlugin> enumerator1 = ((IEnumerable <IDiscoveryPlugin>)DiscoveryHelper.GetOrderedDiscoveryPlugins()).GetEnumerator()) { while (((IEnumerator)enumerator1).MoveNext()) { IDiscoveryPlugin current1 = enumerator1.Current; DiscoveryPluginResultBase pluginResultBase = filterFunction(current1, discoveryResult); if (pluginResultBase != null) { pluginResultBase.set_PluginTypeName(((object)current1).GetType().FullName); Type returnedType = ((object)pluginResultBase).GetType(); List <DiscoveryPluginResultBase> list = ((IEnumerable <DiscoveryPluginResultBase>)discoveryResult.get_PluginResults()).Where <DiscoveryPluginResultBase>((Func <DiscoveryPluginResultBase, bool>)(item => ((object)item).GetType() != returnedType)).ToList <DiscoveryPluginResultBase>(); discoveryResult.get_PluginResults().Clear(); discoveryResult.get_PluginResults().Add(pluginResultBase); using (List <DiscoveryPluginResultBase> .Enumerator enumerator2 = list.GetEnumerator()) { while (enumerator2.MoveNext()) { DiscoveryPluginResultBase current2 = enumerator2.Current; discoveryResult.get_PluginResults().Add(current2); } } } } } return(discoveryResult); }
private static void LoadResults(object args) { DiscoveryResultManager.LoadResultsArgs loadResultsArgs = (DiscoveryResultManager.LoadResultsArgs)args; Stopwatch stopwatch = new Stopwatch(); using (IEnumerator <IDiscoveryPlugin> enumerator = ((IEnumerable <IDiscoveryPlugin>)loadResultsArgs.discoveryPlugins).GetEnumerator()) { while (((IEnumerator)enumerator).MoveNext()) { IDiscoveryPlugin current = enumerator.Current; stopwatch.Restart(); DiscoveryResultManager.log.DebugFormat("Loading results from plugin {0}", (object)((object)current).GetType()); DiscoveryPluginResultBase pluginResultBase = current.LoadResults(loadResultsArgs.profileId); DiscoveryResultManager.log.DebugFormat("Loading results from plugin {0} took {1} milliseconds.", (object)((object)current).GetType(), (object)stopwatch.ElapsedMilliseconds); if (pluginResultBase == null) { throw new Exception(string.Format("unable to get valid result for plugin {0}", (object)((object)current).GetType())); } pluginResultBase.set_PluginTypeName(((object)current).GetType().FullName); loadResultsArgs.result.get_PluginResults().Add(pluginResultBase); } } }
public ScheduledJob CreateDiscoveryJob( DiscoveryConfiguration configuration, IDiscoveryPluginFactory pluginFactory) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } Engine engine = this.engineDAL.GetEngine(((DiscoveryConfigurationBase)configuration).get_EngineId()); DiscoveryPollingEngineType?pollingEngineType = OrionDiscoveryJobFactory.GetDiscoveryPollingEngineType(configuration.get_EngineID(), this.engineDAL); int result; if (!int.TryParse(SettingsDAL.Get("SWNetPerfMon-Settings-SNMP MaxReps"), out result)) { result = 5; } OrionDiscoveryJobDescription discoveryJobDescription1 = new OrionDiscoveryJobDescription(); discoveryJobDescription1.set_ProfileId(((DiscoveryConfigurationBase)configuration).get_ProfileId()); discoveryJobDescription1.set_EngineId(((DiscoveryConfigurationBase)configuration).get_EngineId()); discoveryJobDescription1.set_HopCount(configuration.get_HopCount()); discoveryJobDescription1.set_IcmpTimeout(configuration.get_SearchTimeout()); DiscoveryCommonSnmpConfiguration snmpConfiguration = new DiscoveryCommonSnmpConfiguration(); snmpConfiguration.set_MaxSnmpReplies(result); snmpConfiguration.set_SnmpRetries(configuration.get_SnmpRetries()); snmpConfiguration.set_SnmpTimeout(configuration.get_SnmpTimeout()); snmpConfiguration.set_SnmpPort(configuration.get_SnmpPort()); snmpConfiguration.set_PreferredSnmpVersion(configuration.get_PreferredSnmpVersion()); discoveryJobDescription1.set_SnmpConfiguration(snmpConfiguration); discoveryJobDescription1.set_DisableICMP(configuration.get_DisableICMP()); discoveryJobDescription1.set_PreferredPollingMethod(((CoreDiscoveryPluginConfiguration)((DiscoveryConfigurationBase)configuration).GetDiscoveryPluginConfiguration <CoreDiscoveryPluginConfiguration>()).get_PreferredPollingMethod()); discoveryJobDescription1.set_VulnerabilityCheckDisabled(SettingsDAL.GetCurrentInt("SWNetPerfMon-Settings-VulnerabilityCheckDisabled", 0) == 1); discoveryJobDescription1.set_MaxThreadsInDetectionPhase(SettingsDAL.GetCurrentInt("Discovery-MaxThreadsInDetectionPhase", 5)); discoveryJobDescription1.set_MaxThreadsInInventoryPhase(SettingsDAL.GetCurrentInt("Discovery-MaxThreadsInInventoryPhase", 5)); discoveryJobDescription1.set_PreferredDnsAddressFamily(SettingsDAL.GetCurrentInt("SWNetPerfMon-Settings-Default Preferred AddressFamily DHCP", 4)); discoveryJobDescription1.set_TagFilter(configuration.get_TagFilter()); discoveryJobDescription1.set_DefaultProbes(configuration.get_DefaultProbes()); OrionDiscoveryJobDescription discoveryJobDescription2 = discoveryJobDescription1; List <DiscoveryPluginInfo> discoveryPluginInfos = DiscoveryPluginFactory.GetDiscoveryPluginInfos(); IList <IDiscoveryPlugin> plugins = pluginFactory.GetPlugins((IList <DiscoveryPluginInfo>)discoveryPluginInfos); List <DiscoveryPluginInfo> pluginInfos = new List <DiscoveryPluginInfo>(); IDictionary <IDiscoveryPlugin, DiscoveryPluginInfo> pairsPluginAndInfo = DiscoveryPluginHelper.CreatePairsPluginAndInfo((IEnumerable <IDiscoveryPlugin>)plugins, (IEnumerable <DiscoveryPluginInfo>)discoveryPluginInfos); bool flag1 = RegistrySettings.IsFreePoller(); using (IEnumerator <IDiscoveryPlugin> enumerator = ((IEnumerable <IDiscoveryPlugin>)plugins).GetEnumerator()) { while (((IEnumerator)enumerator).MoveNext()) { IDiscoveryPlugin current = enumerator.Current; if (flag1 && !(current is ISupportFreeEngine)) { OrionDiscoveryJobFactory.log.DebugFormat("Discovery plugin {0} is not supported on FPE machine", (object)current); } else if (!((DiscoveryConfigurationBase)configuration).get_ProfileId().HasValue&& !(current is IOneTimeJobSupport)) { OrionDiscoveryJobFactory.log.DebugFormat("Plugin {0} is not supporting one time job and it's description woun't be added.", (object)((object)current).GetType().FullName); } else { if (configuration.get_TagFilter() != null && configuration.get_TagFilter().Any <string>()) { if (!(current is IDiscoveryPluginTags idiscoveryPluginTags)) { OrionDiscoveryJobFactory.log.DebugFormat("Discovery job for tags requested, however plugin {0} doesn't support tags, skipping.", (object)current); continue; } if (!configuration.get_TagFilter().Intersect <string>(idiscoveryPluginTags.get_Tags() ?? Enumerable.Empty <string>(), (IEqualityComparer <string>)StringComparer.InvariantCultureIgnoreCase).Any <string>()) { OrionDiscoveryJobFactory.log.DebugFormat("Discovery job for tags [{0}], however plugin {1} doesn't support any of the tags requested, skipping.", (object)string.Join(",", (IEnumerable <string>)configuration.get_TagFilter()), (object)current); continue; } } if (configuration.get_IsAgentJob() && (!(current is IAgentPluginJobSupport pluginJobSupport) || !((IEnumerable <string>)configuration.get_AgentPlugins()).Contains <string>(pluginJobSupport.get_PluginId()))) { OrionDiscoveryJobFactory.log.DebugFormat("Plugin {0} is not contained in supported agent plugins and will not be used.", (object)((object)current).GetType().FullName); }
private static void StartImportInternal( Guid importId, DiscoveryResultBase result, SortedDictionary <int, List <IDiscoveryPlugin> > importingPlugins, bool checkLicenseLimits, DiscoveryImportManager.CallbackDiscoveryImportFinished callbackAfterImport) { Resources.get_WEBJS_PS0_17(); StartImportStatus status = (StartImportStatus)4; List <DiscoveryLogItem> items = new List <DiscoveryLogItem>(); try { DiscoveryDatabase.GetDiscoveryConfiguration(result.get_ProfileID())?.get_Name(); } catch (Exception ex) { DiscoveryImportManager.log.Warn((object)"Unable to load profile name", ex); } using (LocaleThreadState.EnsurePrimaryLocale()) { try { DiscoveryNetObjectStatusManager.Instance.BeginOrionDatabaseChanges(); if (checkLicenseLimits && ((IEnumerable <ElementLicenseInfo>)DiscoveryImportManager.GetLicensedStatus(result)).Any <ElementLicenseInfo>((Func <ElementLicenseInfo, bool>)(n => (uint)n.get_ExceededBy() > 0U))) { DiscoveryImportManager.log.Debug((object)"Can't import discovery result, because license was exceeded"); status = (StartImportStatus)5; } else { double progress = 0.0; double num = (double)(100 / importingPlugins.Keys.Count); using (SortedDictionary <int, List <IDiscoveryPlugin> > .KeyCollection.Enumerator enumerator1 = importingPlugins.Keys.GetEnumerator()) { while (enumerator1.MoveNext()) { int current = enumerator1.Current; using (List <IDiscoveryPlugin> .Enumerator enumerator2 = importingPlugins[current].GetEnumerator()) { while (enumerator2.MoveNext()) { IDiscoveryPlugin plugin = enumerator2.Current; if (plugin is ISupportImportLog isupportImportLog) { isupportImportLog.SetImportLogCallback(new Action <DiscoveryLogItem>(items.Add)); } plugin.ImportResults(result, (Action <string, double>)((message, phaseProgress) => DiscoveryImportManager.UpdateProgress(importId, message, progress + phaseProgress / (double)importingPlugins.Keys.Count, phaseProgress, plugin.GetImportPhaseName(), false))); } } progress += num; } } DiscoveryImportManager.UpdateProgress(importId, Resources.get_LIBCODE_VB0_28(), 100.0, 100.0, string.Empty, true); status = (StartImportStatus)6; } } catch (Exception ex) { status = (StartImportStatus)4; DiscoveryImportManager.log.Error((object)"Exception occurred during discovery import", ex); DiscoveryImportManager.UpdateProgress(importId, Resources.get_LIBCODE_TM0_30(), 100.0, 100.0, string.Empty, true); } finally { DiscoveryNetObjectStatusManager.Instance.EndOrionDatabaseChanges(); result.set_BatchID(Guid.NewGuid()); try { DiscoveryImportManager.InsertDiscoveryLogItems(items, result.get_BatchID()); } catch (Exception ex) { DiscoveryImportManager.log.Error((object)"Unable to store discovery import items", ex); } if (callbackAfterImport != null) { try { callbackAfterImport(result, importId, status); } catch (Exception ex) { DiscoveryImportManager.log.Error((object)"Error while calling callback after import.", ex); } } DiscoveryNetObjectStatusManager.Instance.RequestUpdateAsync((Action)null, BusinessLayerSettings.Instance.DiscoveryUpdateNetObjectStatusWaitForChangesDelay); } } }
// Token: 0x06000379 RID: 889 RVA: 0x00015B01 File Offset: 0x00013D01 internal static bool IsDiscoveryPluginSupportedForDiscoveryPollingEngineType(IDiscoveryPlugin plugin, DiscoveryPollingEngineType discovryPollingEngineType, IDictionary <IDiscoveryPlugin, DiscoveryPluginInfo> pluginInfoPairs) { return(pluginInfoPairs.ContainsKey(plugin) && pluginInfoPairs[plugin].SupportedPollingEngineTypes.Contains(discovryPollingEngineType)); }
// Token: 0x060002AE RID: 686 RVA: 0x00010840 File Offset: 0x0000EA40 private static void StartImportInternal(Guid importId, DiscoveryResultBase result, SortedDictionary <int, List <IDiscoveryPlugin> > importingPlugins, bool checkLicenseLimits, DiscoveryImportManager.CallbackDiscoveryImportFinished callbackAfterImport) { string webjs_PS0_ = Resources.WEBJS_PS0_17; StartImportStatus status = StartImportStatus.Failed; List <DiscoveryLogItem> list = new List <DiscoveryLogItem>(); try { DiscoveryConfiguration discoveryConfiguration = DiscoveryDatabase.GetDiscoveryConfiguration(result.ProfileID); if (discoveryConfiguration != null) { string name = discoveryConfiguration.Name; } } catch (Exception ex) { DiscoveryImportManager.log.Warn("Unable to load profile name", ex); } using (LocaleThreadState.EnsurePrimaryLocale()) { try { DiscoveryNetObjectStatusManager.Instance.BeginOrionDatabaseChanges(); if (checkLicenseLimits) { if (DiscoveryImportManager.GetLicensedStatus(result).Any((ElementLicenseInfo n) => n.ExceededBy != 0)) { DiscoveryImportManager.log.Debug("Can't import discovery result, because license was exceeded"); status = StartImportStatus.LicenseExceeded; return; } } double progress = 0.0; double num = (double)(100 / importingPlugins.Keys.Count); foreach (int key in importingPlugins.Keys) { using (List <IDiscoveryPlugin> .Enumerator enumerator2 = importingPlugins[key].GetEnumerator()) { while (enumerator2.MoveNext()) { IDiscoveryPlugin plugin = enumerator2.Current; ISupportImportLog supportImportLog = plugin as ISupportImportLog; if (supportImportLog != null) { supportImportLog.SetImportLogCallback(new Action <DiscoveryLogItem>(list.Add)); } plugin.ImportResults(result, delegate(string message, double phaseProgress) { DiscoveryImportManager.UpdateProgress(importId, message, progress + phaseProgress / (double)importingPlugins.Keys.Count, phaseProgress, plugin.GetImportPhaseName(), false); }); } } progress += num; } DiscoveryImportManager.UpdateProgress(importId, Resources.LIBCODE_VB0_28, 100.0, 100.0, string.Empty, true); status = StartImportStatus.Finished; } catch (Exception ex2) { status = StartImportStatus.Failed; DiscoveryImportManager.log.Error("Exception occurred during discovery import", ex2); DiscoveryImportManager.UpdateProgress(importId, Resources.LIBCODE_TM0_30, 100.0, 100.0, string.Empty, true); } finally { DiscoveryNetObjectStatusManager.Instance.EndOrionDatabaseChanges(); result.BatchID = Guid.NewGuid(); try { DiscoveryImportManager.InsertDiscoveryLogItems(list, result.BatchID); } catch (Exception ex3) { DiscoveryImportManager.log.Error("Unable to store discovery import items", ex3); } if (callbackAfterImport != null) { try { callbackAfterImport(result, importId, status); } catch (Exception ex4) { DiscoveryImportManager.log.Error("Error while calling callback after import.", ex4); } } DiscoveryNetObjectStatusManager.Instance.RequestUpdateAsync(null, BusinessLayerSettings.Instance.DiscoveryUpdateNetObjectStatusWaitForChangesDelay); } } }