Пример #1
0
        // Token: 0x060006BC RID: 1724 RVA: 0x0002AC94 File Offset: 0x00028E94
        public AuditDataContainer GetAuditDataContainer(int auditEventId)
        {
            Dictionary <string, string> dictionary = new Dictionary <string, string>();

            using (SqlCommand textCommand = SqlHelper.GetTextCommand("SELECT [ArgsKey], [ArgsValue] FROM [dbo].[AuditingArguments] WITH(NOLOCK) WHERE [AuditEventID] = @AuditEventID;"))
            {
                textCommand.Parameters.AddWithValue("@AuditEventID", auditEventId);
                using (IDataReader dataReader = SqlHelper.ExecuteReader(textCommand))
                {
                    while (dataReader.Read())
                    {
                        dictionary.Add(dataReader["ArgsKey"].ToString(), dataReader["ArgsValue"].ToString());
                    }
                }
            }
            AuditDataContainer result;

            using (SqlCommand textCommand2 = SqlHelper.GetTextCommand("SELECT TOP 1 [AccountID], [ActionTypeID] FROM [dbo].[AuditingEvents] WITH(NOLOCK) WHERE [AuditEventID] = @AuditEventID;"))
            {
                textCommand2.Parameters.AddWithValue("@AuditEventID", auditEventId);
                using (IDataReader dataReader2 = SqlHelper.ExecuteReader(textCommand2))
                {
                    dataReader2.Read();
                    result = new AuditDataContainer(this.GetActionTypeFromActionId((int)dataReader2["ActionTypeID"]), dictionary, dataReader2["AccountID"].ToString());
                }
            }
            return(result);
        }
        // Token: 0x06000021 RID: 33 RVA: 0x00002700 File Offset: 0x00000900
        public AuditDatabaseDecoratedContainer(AuditDataContainer adc, AuditNotificationContainer anc, string message) : base(adc)
        {
            if (anc == null)
            {
                throw new ArgumentNullException("anc");
            }
            if (string.IsNullOrEmpty(message))
            {
                throw new ArgumentNullException("message");
            }
            object obj;

            if (anc.IndicationProperties != null && anc.IndicationProperties.TryGetValue(IndicationConstants.AccountId, out obj))
            {
                this.accountId = (obj as string);
            }
            else
            {
                this.accountId = "SYSTEM";
            }
            this.indicationTime = anc.GetIndicationPropertyValue <DateTime>("IndicationTime");
            if (this.indicationTime.Kind == DateTimeKind.Unspecified)
            {
                this.indicationTime = DateTime.SpecifyKind(this.indicationTime, DateTimeKind.Utc);
            }
            else
            {
                this.indicationTime = this.indicationTime.ToUniversalTime();
            }
            this.message = message;
        }
Пример #3
0
 private static void DebugAuditingPluginNPM(Type derivedType, IAuditing pluginInstance)
 {
     if (AuditingPluginManager.log.IsDebugEnabled && derivedType.FullName == "SolarWinds.NPM.Auditing.InterfaceAdded")
     {
         AuditDataContainer auditDataContainer = new AuditDataContainer(pluginInstance.SupportedActionTypes.First <AuditActionType>(), new Dictionary <string, string>
         {
             {
                 "ObjectType",
                 "dummy"
             }
         }, "dummy");
         string message = pluginInstance.GetMessage(auditDataContainer);
         AuditingPluginManager.log.DebugFormat("\"{0}::{1}\" Installed Successfully. Example message: \"{2}\".", pluginInstance.GetType(), pluginInstance.SupportedIndicationType, message);
         GC.KeepAlive(message);
     }
 }
Пример #4
0
        public AuditDatabaseDecoratedContainer(
            AuditDataContainer adc,
            AuditNotificationContainer anc,
            string message)
        {
            this.\u002Ector(adc);
            if (anc == null)
            {
                throw new ArgumentNullException(nameof(anc));
            }
            if (string.IsNullOrEmpty(message))
            {
                throw new ArgumentNullException(nameof(message));
            }
            object obj;

            this.accountId      = anc.get_IndicationProperties() == null || !((Dictionary <string, object>)anc.get_IndicationProperties()).TryGetValue((string)IndicationConstants.AccountId, out obj) ? "SYSTEM" : obj as string;
            this.indicationTime = (DateTime)anc.GetIndicationPropertyValue <DateTime>(nameof(IndicationTime));
            this.indicationTime = this.indicationTime.Kind != DateTimeKind.Unspecified ? this.indicationTime.ToUniversalTime() : DateTime.SpecifyKind(this.indicationTime, DateTimeKind.Utc);
            this.message        = message;
        }
Пример #5
0
        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);
        }