Ejemplo n.º 1
0
        public JsonResult Get(int pageIndex, int pageSize, string pageOrder, string title)
        {
            var list = Keywords.Get(pageIndex, pageSize, pageOrder, title);

            int total     = Keywords.Count(title);
            int totalPage = (int)Math.Ceiling((decimal)total / pageSize);

            if (pageSize > total)
            {
                pageSize = total;
            }

            if (list.Count < pageSize)
            {
                pageSize = list.Count;
            }

            JsonResult result = new JsonResult()
            {
                Data = new
                {
                    TotalPages = totalPage,
                    PageIndex  = pageIndex,
                    PageSize   = pageSize,
                    Rows       = list
                },
                JsonRequestBehavior = JsonRequestBehavior.AllowGet
            };

            return(result);
        }
Ejemplo n.º 2
0
        public bool Check(T value)
        {
            if (value == null)
            {
                return(true);
            }

            var str = value as string;

            if (Keywords.Count() > 0 && Keywords.Any(v => str.ToLower().Contains(v.ToLower())))
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// merge two results who having the same OriginalString
        /// </summary>
        /// <param name="o"></param>
        /// <exception cref="Exception"></exception>
        public void Merge(MatchResult o)
        {
            if (OriginalString != o.OriginalString)
            {
                throw new Exception($"can't merge two results with different {nameof(OriginalString)}");
            }

            if (Keywords.Count() == o.Keywords.Count() &&
                IsCaseSensitive == o.IsCaseSensitive &&
                CompareKeywords(Keywords, o.Keywords))
            {
                for (int i = 0; i < o.KeywordsMatchedFlags.Count; i++)
                {
                    KeywordsMatchedFlags[i] |= o.KeywordsMatchedFlags[i];
                }
            }
            else
            {
                // append keywords
                foreach (var keyword in o.Keywords)
                {
                    if (this.Keywords.Contains(keyword) == false)
                    {
                        this.Keywords.Add(keyword);
                        KeywordsMatchedFlags.Add(false);
                    }
                }

                // merge matched flags
                for (var i = 0; i < o.Keywords.Count; i++)
                {
                    var keyword = o.Keywords[i];
                    var j       = this.Keywords.IndexOf(keyword);
                    this.KeywordsMatchedFlags[j] |= o.KeywordsMatchedFlags[i];
                }
            }

            for (int i = 0; i < o.HitFlags.Count; i++)
            {
                HitFlags[i] |= o.HitFlags[i];
            }
        }
        /// <summary>
        /// Creates event data associated with a specific provider with the specified event metadata.
        /// </summary>
        /// <param name="providerName">The name of the provider.</param>
        /// <param name="metadata">The event metadata.</param>
        public EventData(string providerName, EventMetadata metadata)
        {
            if (metadata != null)
            {
                Provider = string.IsNullOrEmpty(providerName) ? string.Empty : providerName;
                Id       = new EventId(metadata.Id);
                Level    = new EventLevelData(metadata.Level.DisplayName, metadata.Level.Value);
                Version  = metadata.Version;
                Task     = new EventTaskData(metadata.Task.Name, metadata.Task.DisplayName, metadata.Task.Value, metadata.Task.EventGuid);
                Opcode   = new EventOpcodeData(metadata.Opcode.DisplayName, metadata.Opcode.Value);
                Keywords = EventKeywordData.GetKeywords(metadata.Keywords);
                LoggedTo = string.IsNullOrEmpty(metadata.LogLink.LogName) ? new EventLogData() : new EventLogData(metadata.LogLink.LogName);
                Message  = metadata.Description ?? string.Empty;

                // only check the template for parameters if the event has an actual message string
                //Parameters = string.IsNullOrEmpty(metadata.Description) ? new OrderedDictionary() : GetEventParametersFromXmlTemplate(metadata.Template);
                Parameters = string.IsNullOrEmpty(metadata.Template) ? new OrderedDictionary() : GetEventParametersFromXmlTemplate(metadata.Template);

                // use the officially defined level information when it exists, otherwise we try to guess the level from Id.Severity which may or may not be accurate
                // previously, there was a question mark added to the end of the level name to denote this case but it was removed since it seems like a valid guess
                if (string.IsNullOrEmpty(Level.Name))
                {
                    Level = new EventLevelData(string.Format(CultureInfo.CurrentCulture, "{0}", Id.Severity), (int)Enum.Parse(typeof(NtSeverity), Id.Severity));
                }

                // odd case but fairly common
                if (string.IsNullOrEmpty(metadata.Description) && !string.IsNullOrEmpty(metadata.Template))
                {
                    Logger.Debug(CultureInfo.CurrentCulture, "Event did not have a message but had message parameters defined. {0}", this);
                }

                // another odd case but seems to be normal for "Classic" events so log only the non-classic instances
                if (!string.IsNullOrEmpty(metadata.Description) && metadata.Description.Contains("%1") && string.IsNullOrEmpty(metadata.Template) && (Keywords.Count(keyword => keyword.Name.Equals("Classic")) == 0))
                {
                    Logger.Debug(CultureInfo.CurrentCulture, "Event had a message with a parameter but no message parameters were defined. {0}", this);
                }
            }
            else
            {
                Provider   = string.Empty;
                Id         = new EventId();
                Level      = new EventLevelData();
                Version    = 0;
                Task       = new EventTaskData();
                Opcode     = new EventOpcodeData();
                Keywords   = new List <EventKeywordData>();
                LoggedTo   = new EventLogData();
                Message    = string.Empty;
                Parameters = new OrderedDictionary();
            }
        }