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); } } } } }
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; } } }
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; } } }
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); } }