public void Initialize() { this.LoadPlugins(); this.auditingInstancesReadOnly = this.auditingInstances.AsReadOnly(); using (IEnumerator <IAuditing2> enumerator = this.auditingInstancesReadOnly.GetEnumerator()) { while (((IEnumerator)enumerator).MoveNext()) { IAuditing2 current = enumerator.Current; string supportedIndicationType = ((IAuditing)current).get_SupportedIndicationType(); if (this.cacheTypeInstances.ContainsKey(supportedIndicationType)) { this.cacheTypeInstances[supportedIndicationType].Add(current); } else { Dictionary <string, List <IAuditing2> > cacheTypeInstances = this.cacheTypeInstances; string key = supportedIndicationType; List <IAuditing2> iauditing2List = new List <IAuditing2>(); iauditing2List.Add(current); cacheTypeInstances.Add(key, iauditing2List); } } } using (Dictionary <string, List <IAuditing2> > .Enumerator enumerator = this.cacheTypeInstances.GetEnumerator()) { while (enumerator.MoveNext()) { KeyValuePair <string, List <IAuditing2> > current = enumerator.Current; this.cacheTypeInstancesReadOnly.Add(current.Key, (IEnumerable <IAuditing2>)current.Value); } } this.init = true; }
public IAuditing2 GetAuditingInstancesOfActionType(AuditActionType actionType) { if (!this.init) { throw new InvalidOperationException("Object has not been initialized yet. Call Start method before using."); } using (Dictionary <string, IEnumerable <IAuditing2> > .Enumerator enumerator1 = this.cacheTypeInstancesReadOnly.GetEnumerator()) { while (enumerator1.MoveNext()) { using (IEnumerator <IAuditing2> enumerator2 = enumerator1.Current.Value.GetEnumerator()) { while (((IEnumerator)enumerator2).MoveNext()) { IAuditing2 current = enumerator2.Current; if (current != null && ((IAuditing)current).get_SupportedActionTypes().Any <AuditActionType>((Func <AuditActionType, bool>)(supportedType => AuditActionType.op_Equality(supportedType, actionType)))) { return(current); } } } } } return((IAuditing2)null); }
public Task OnNotificationAsync(Notification notification) { if (AuditingNotificationSubscriber.log.get_IsDebugEnabled()) { AuditingNotificationSubscriber.log.DebugFormat("OnNotification type: {0} SubscriptionId: {1}", (object)notification.get_IndicationType(), (object)notification.get_SubscriptionId()); } PropertyBag propertyBag1 = new PropertyBag(notification.get_SourceInstanceProperties()); PropertyBag propertyBag2 = new PropertyBag(notification.get_IndicationProperties()); if (this.checkAuditingSetting) { try { object obj; if (IndicationHelper.GetIndicationType((IndicationType)2) == notification.get_IndicationType() && propertyBag1 != null && ((string)propertyBag1.TryGet <string>("SettingsID") == "SWNetPerfMon-AuditingTrails" && (string)propertyBag1.TryGet <string>("InstanceType") == "Orion.Settings") && ((Dictionary <string, object>)propertyBag1).TryGetValue("CurrentValue", out obj)) { this.AuditingTrailsEnabled = Convert.ToBoolean(obj); } else if (!this.AuditingTrailsEnabled) { return(Task.CompletedTask); } } catch (Exception ex) { AuditingNotificationSubscriber.log.FatalFormat("Auditing check error - will be forciby enabled. {0}", (object)ex); this.AuditingTrailsEnabled = true; this.checkAuditingSetting = false; } } AuditNotificationContainer auditNotificationContainer = new AuditNotificationContainer(notification.get_IndicationType(), propertyBag2, propertyBag1); IEnumerable <IAuditing2> iauditing2s; if (this.subscriptionIdToAuditingInstances.TryGetValue(notification.get_SubscriptionId().ToString(), out iauditing2s)) { using (IEnumerator <IAuditing2> enumerator1 = iauditing2s.GetEnumerator()) { while (((IEnumerator)enumerator1).MoveNext()) { IAuditing2 current1 = enumerator1.Current; try { if (AuditingNotificationSubscriber.log.get_IsTraceEnabled()) { AuditingNotificationSubscriber.log.TraceFormat("Trying plugin {0}", new object[1] { (object)current1 }); } IEnumerable <AuditDataContainer> source = ((IAuditing)current1).ComposeDataContainers(auditNotificationContainer); if (source != null) { if (AuditingNotificationSubscriber.log.get_IsTraceEnabled()) { AuditingNotificationSubscriber.log.Trace((object)"Storing notification."); } CultureInfo currentUiCulture = Thread.CurrentThread.CurrentUICulture; try { Thread.CurrentThread.CurrentUICulture = LocaleConfiguration.GetNonNeutralLocale(LocaleConfiguration.get_PrimaryLocale()); } catch (Exception ex) { AuditingNotificationSubscriber.log.Warn((object)"Unable set CurrentUICulture to PrimaryLocale.", ex); } using (IEnumerator <AuditDataContainer> enumerator2 = source.Select <AuditDataContainer, AuditDataContainer>((Func <AuditDataContainer, AuditDataContainer>)(composedDataContainer => new AuditDataContainer(composedDataContainer, auditNotificationContainer.get_AccountId()))).GetEnumerator()) { while (((IEnumerator)enumerator2).MoveNext()) { AuditDataContainer current2 = enumerator2.Current; AuditDatabaseDecoratedContainer decoratedContainer = new AuditDatabaseDecoratedContainer(current2, auditNotificationContainer, ((IAuditing)current1).GetMessage(current2)); int insertedId = this.auditingDAL.StoreNotification(decoratedContainer); this.PublishModificationOfAuditingEvents(decoratedContainer, insertedId); } } try { Thread.CurrentThread.CurrentUICulture = currentUiCulture; } catch (Exception ex) { AuditingNotificationSubscriber.log.Warn((object)"Unable set CurrentUICulture back to original locale.", ex); } } else if (AuditingNotificationSubscriber.log.get_IsTraceEnabled()) { AuditingNotificationSubscriber.log.Trace((object)"ComposeDataContainers returned null."); } } catch (Exception ex) { string seed = string.Empty; if (propertyBag2 != null) { seed = ((IEnumerable <KeyValuePair <string, object> >)propertyBag2).Aggregate <KeyValuePair <string, object>, string>(Environment.NewLine, (Func <string, KeyValuePair <string, object>, string>)((current, item) => current + this.FormatPropertyData("Indication Property: ", item.Key, item.Value))); } if (propertyBag1 != null) { seed = ((IEnumerable <KeyValuePair <string, object> >)propertyBag1).Aggregate <KeyValuePair <string, object>, string>(seed, (Func <string, KeyValuePair <string, object>, string>)((current, item) => current + this.FormatPropertyData("SourceInstance Property: ", item.Key, item.Value))); } AuditingNotificationSubscriber.log.ErrorFormat("Auditing translation failed. IndicationType: {0}, {1} PluginName: {2}, subscriptionId: {3} Exception: {4}", new object[5] { (object)notification.get_IndicationType(), (object)seed, (object)((IAuditing)current1).get_PluginName(), (object)notification.get_SubscriptionId(), (object)ex }); } } } } else if (AuditingNotificationSubscriber.log.get_IsDebugEnabled()) { AuditingNotificationSubscriber.log.DebugFormat("No auditing instances has been registered yet for subscriptionId '{0}'", (object)notification.get_SubscriptionId().ToString()); } return(Task.CompletedTask); }
private void Subscribe(object state) { AuditingNotificationSubscriber.log.Debug((object)"Subscribing auditing indications.."); try { AuditingNotificationSubscriber.DeleteOldSubscriptions(); } catch (Exception ex) { AuditingNotificationSubscriber.log.Warn((object)"Exception deleting old subscriptions:", ex); } HashSet <string> stringSet = new HashSet <string>((IEqualityComparer <string>)StringComparer.OrdinalIgnoreCase); using (IEnumerator <IAuditing2> enumerator = this.auditingPlugins.AuditingInstances.GetEnumerator()) { while (((IEnumerator)enumerator).MoveNext()) { IAuditing2 current = enumerator.Current; if (current is IAuditingMultiSubscription multiSubscription) { foreach (string subscriptionQuery in multiSubscription.GetSubscriptionQueries()) { stringSet.Add(subscriptionQuery); } } else { stringSet.Add(current.GetSubscriptionQuery()); } } } foreach (string query in stringSet) { try { SubscriptionId subscriptionId; ((SubscriptionId) ref subscriptionId).\u002Ector("Core", typeof(AuditingNotificationSubscriber).FullName + "." + this.GetHashFromQuery(query), (Scope)0); SubscriberConfiguration subscriberConfiguration1 = new SubscriberConfiguration(); subscriberConfiguration1.set_SubscriptionQuery(query); SubscriberConfiguration subscriberConfiguration2 = subscriberConfiguration1; AuditingNotificationSubscriber.log.DebugFormat("Subscribing '{0}'", (object)query); SubscriptionId id = this.subscriptionManager.Subscribe(subscriptionId, (ISubscriber)this, subscriberConfiguration2).get_Id(); string query1 = query; this.subscriptionIdToAuditingInstances.TryAdd(id.ToString(), ((IEnumerable <IAuditing2>) this.auditingPlugins.AuditingInstances).Where <IAuditing2>((Func <IAuditing2, bool>)(instance => { try { return(string.Compare(query1, instance.GetSubscriptionQuery(), StringComparison.OrdinalIgnoreCase) == 0); } catch (NotImplementedException ex) { return(instance is IAuditingMultiSubscription multiSubscription && ((IEnumerable <string>)multiSubscription.GetSubscriptionQueries()).Contains <string>(query1)); } }))); AuditingNotificationSubscriber.log.DebugFormat("Subscribed '{0}' with {1} number of auditing instances.", (object)query, (object)this.subscriptionIdToAuditingInstances[id.ToString()].Count <IAuditing2>()); } catch (Exception ex) { AuditingNotificationSubscriber.log.ErrorFormat("Unable to subscribe auditing instance with query '{0}'. {1}", (object)query, (object)ex); } } AuditingNotificationSubscriber.log.InfoFormat("Auditing pub/sub subscription succeeded.", Array.Empty <object>()); Scheduler.get_Instance().Remove("AuditingIndications"); }
// Token: 0x06000044 RID: 68 RVA: 0x00003FA4 File Offset: 0x000021A4 private void LoadPlugins() { AuditingPluginManager.log.Trace("LoadPlugins"); string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; AuditingPluginManager.log.DebugFormat("PluginDir:'{0}'", baseDirectory); if (!Directory.Exists(baseDirectory)) { AuditingPluginManager.log.Warn(string.Format("Directory '{0}' was not found.", baseDirectory)); return; } string[] array = null; try { if (AuditingPluginManager.log.IsVerboseEnabled) { AuditingPluginManager.log.Verbose("Searching files..."); } array = Directory.GetFiles(baseDirectory, "*Auditing.dll", SearchOption.AllDirectories); if (AuditingPluginManager.log.IsVerboseEnabled) { AuditingPluginManager.log.Verbose("Searching files done."); } } catch (Exception ex) { AuditingPluginManager.log.ErrorFormat("GetFiles failed on '{0}'. Exception: {1}", baseDirectory, ex); } if (array == null) { return; } foreach (string text in array) { try { AuditingPluginManager.log.DebugFormat("Loading library '{0}'.", text); AssemblyName assemblyName = null; Assembly assembly = null; try { assemblyName = AssemblyName.GetAssemblyName(text); assembly = Assembly.Load(assemblyName); } catch (FileLoadException ex2) { AuditingPluginManager.log.WarnFormat("Unable to Load '{0}' - trying LoadFrom. {1}", assemblyName ?? text, ex2); } if (assembly == null) { assembly = Assembly.LoadFrom(text); } foreach (Type type in this.FindDerivedTypes(assembly)) { IAuditing2 auditing = (IAuditing2)assembly.CreateInstance(type.FullName); if (auditing != null) { AuditingPluginManager.log.InfoFormat("Instance of {0} created.", type); this.auditingInstances.Add(auditing); } else { AuditingPluginManager.log.ErrorFormat("Instance of {0} coudn't be created. Library: '{1}'", type.FullName, text); } } } catch (Exception ex3) { AuditingPluginManager.log.ErrorFormat("Unable to Load library '{0}'. Exception: {1}", text, ex3); } } }
private void LoadPlugins() { AuditingPluginManager.log.Trace((object)nameof(LoadPlugins)); string baseDirectory = AppDomain.CurrentDomain.BaseDirectory; AuditingPluginManager.log.DebugFormat("PluginDir:'{0}'", (object)baseDirectory); if (Directory.Exists(baseDirectory)) { string[] strArray = (string[])null; try { if (AuditingPluginManager.log.get_IsVerboseEnabled()) { AuditingPluginManager.log.Verbose((object)"Searching files..."); } strArray = Directory.GetFiles(baseDirectory, "*Auditing.dll", SearchOption.AllDirectories); if (AuditingPluginManager.log.get_IsVerboseEnabled()) { AuditingPluginManager.log.Verbose((object)"Searching files done."); } } catch (Exception ex) { AuditingPluginManager.log.ErrorFormat("GetFiles failed on '{0}'. Exception: {1}", (object)baseDirectory, (object)ex); } if (strArray == null) { return; } foreach (string assemblyFile in strArray) { try { AuditingPluginManager.log.DebugFormat("Loading library '{0}'.", (object)assemblyFile); AssemblyName assemblyRef = (AssemblyName)null; Assembly assembly = (Assembly)null; try { assemblyRef = AssemblyName.GetAssemblyName(assemblyFile); assembly = Assembly.Load(assemblyRef); } catch (FileLoadException ex) { AuditingPluginManager.log.WarnFormat("Unable to Load '{0}' - trying LoadFrom. {1}", (object)assemblyRef ?? (object)assemblyFile, (object)ex); } if (assembly == (Assembly)null) { assembly = Assembly.LoadFrom(assemblyFile); } foreach (Type derivedType in this.FindDerivedTypes(assembly)) { IAuditing2 instance = (IAuditing2)assembly.CreateInstance(derivedType.FullName); if (instance != null) { AuditingPluginManager.log.InfoFormat("Instance of {0} created.", (object)derivedType); this.auditingInstances.Add(instance); } else { AuditingPluginManager.log.ErrorFormat("Instance of {0} coudn't be created. Library: '{1}'", (object)derivedType.FullName, (object)assemblyFile); } } } catch (Exception ex) { AuditingPluginManager.log.ErrorFormat("Unable to Load library '{0}'. Exception: {1}", (object)assemblyFile, (object)ex); } } } else { AuditingPluginManager.log.Warn((object)string.Format("Directory '{0}' was not found.", (object)baseDirectory)); } }