コード例 #1
0
        private void updateFileData(FileChannel item)
        {
            bool isNew = (item.Channel.ChannelID == null);

            string[] lines = item.ReadLastBlock();

            if (isNew && item.Channel.ChannelID != null)
            {
                if (ChangedLogChannel != null)
                {
                    ChangedLogChannel(item.Channel);
                }
            }

            if (lines != null)
            {
                foreach (string line in lines)
                {
                    // ((FileChannel)item).LogCannel
                    if (LogMessage.isValidMessage(line))
                    {
                        LogMessage message = new LogMessage(item.Channel, line);
                        if (ChangedLogMessage != null)
                        {
                            ChangedLogMessage(message);
                        }
                    }
                }
            }
        }
コード例 #2
0
 private bool VerifyHash(LogMessage message)
 {
     using (MD5 md5Hash = MD5.Create())
     {
         string textToHash = (message.Name + message.Timestamp + message.Message);
         byte[] hash = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(textToHash));
         if (messageHash.Contains(hash))
         {
             return false;
         }
         else
         {
             messageHash.Add(hash);
             return true;
         }
     }
 }
コード例 #3
0
        public void NotifyLogMessage(LogMessage message)
        {
            if (!Active)
            {
                return;
            }

            foreach (string searchText in MatchStrings)
            {
                Match match = Regex.Match(message.Message, ".*" + searchText + ".*",
                              RegexOptions.IgnorePatternWhitespace | RegexOptions.IgnoreCase);

                if (match.Success)
                {
                    Intel intel = new Intel();
                    intel.LogMessage = message;

                    string formattedMessage = message.Message;

                    foreach (string word in IntelSettings.Default.DetectIgroreWords)
                    {
                        formattedMessage = formattedMessage.Replace(word, "");
                    }
                    /*(string formattedMessage = message.Message.Replace("at ", "").
                                                   Replace("near ", "").
                                                   Replace("in ", "").
                                                   Replace("the ", "").
                                                   Replace("a ", "");
                    */

                    string[] systemKeywords = null;

                    foreach (string systemKeyword in IntelSettings.Default.DetectSystem)
                    {
                        if (formattedMessage.Contains(systemKeyword)) {
                            systemKeywords = systemKeyword.Split(' ');
                            break;
                        }
                    }

                    string[] messageParts = formattedMessage.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries);
                    if (systemKeywords != null)
                    {
                        for (int i = 0; i < messageParts.Length; i++)
                        {
                            if (systemKeywords[0] == messageParts[i] && i - 1 >= 0)
                            {
                                intel.System = SolarSystem.GetSystem(messageParts[i - 1]);
                            }
                            else if (systemKeywords.Contains(messageParts[i]))
                            {
                                // ignore the rest of the solar system keyword
                            }
                            else if (messageParts[i].ToLower() == "nv" ||
                                messageParts[i].ToLower() == "novisual" ||
                                messageParts[i].ToLower() == "visual")
                            {
                                intel.NoVisual = true;
                                intel.Location = "No Visual";
                            }
                            else if (messageParts[i].ToLower() == "docked"
                                || messageParts[i].ToLower() == "doc")
                            {
                                intel.Docked = true;
                                intel.Location = "Docked";
                            }
                            else if (messageParts[i].ToLower() == "clear"
                                    || messageParts[i].ToLower() == "clr")
                            {
                                intel.Clear = true;
                                intel.Location = "Clear";
                            }
                            else if (i + 1 < messageParts.Length && !systemKeywords.Contains(messageParts[i + 1]))
                            {
                                intel.Players += (intel.Players != "" ? " " : "") + messageParts[i];
                            }
                            else if (i + 1 < messageParts.Length && systemKeywords.Contains(messageParts[i + 1]))
                            {
                                // since this keyword is a system, we need to skip it.
                            }
                            else if (i < messageParts.Length && !systemKeywords.Contains(messageParts[i]))
                            {
                                intel.Players += (intel.Players != "" ? " " : "") + messageParts[i];
                            }
                        }

                    }
                    if (ChangedIntel != null)
                    {
                        ChangedIntel(intel);
                        // since we alrady matched this intel, we do not want to keep searching
                    }
                    return;
                }
            }
        }
コード例 #4
0
        private void SetLogMessage(LogMessage message)
        {
            if (InvokeRequired)
            {
                this.Invoke((NotifyLogMessage)SetLogMessage, message);
                return;
            }

            if (VerifyHash(message))
            {
                if (eventList.Items.Count > 0)
                {
                    eventList.Items.Insert(0, message);
                }
                else
                {
                    eventList.Items.Add(message);
                }
            }
            else
            {
                Console.WriteLine("Detected duplicate message: " + message);
            }
        }