/// <summary> /// Initialization with HTTP message. /// </summary> /// <param name="message">HTTPMsg message</param> public void Init(HTTPMsg message) { if (message.HTTPHeader.Fields.ContainsKey("Content-Type")) { this.ContentSpotter = this.SpotterPool.GetSpotterOrWait(message.HTTPHeader.Fields["Content-Type"].First()); this.ContentSpotter.Init(message); } this.WebmailApp = WebmailSuggest.Unknown; }
private void SpotterGetMailFields(SpotterBase spotter, out string from, out string to, out string cc, out string bcc, out string subject, out string content) { from = spotter.GetContentPart("^(from|From|FROM|senderEmail)$", "^<?[^@]+@[\\w]+\\.[a-zA-Z]{2,4}>?$"); to = spotter.GetContentPart("^(to|To|TO|recipientEmail)$", "^<?[^@]+@[\\w]+\\.[a-zA-Z]{2,4}>?$"); cc = spotter.GetContentPart("^(cc|Cc|CC)$", "^<?[^@]+@[\\w]+\\.[a-zA-Z]{2,4}>?$"); bcc = spotter.GetContentPart("^(bcc|Bcc|BCC)$", "^<?[^@]+@[\\w]+\\.[a-zA-Z]{2,4}>?$"); subject = spotter.GetContentPart("^(subject|Subject|SUBJECT)$", ".+"); content = spotter.GetContentPart("^([Cc]ontent|(simple)?[Bb]ody)$", ".*"); }
public override bool IsMsgWebmailEvent(HTTPMsg message, ref List <EventSuggest> detectedEvents, out SpotterBase spotter) { this.Init(message); spotter = this.ContentSpotter; if (this.ContentSpotter == null) { return(false); } if (this.ContentSpotter.ContainsKeyValuePair("cn", "Microsoft.Msn.Hotmail.Ui.Fpp.MailBox", SpotterBase.SpotterContext.ContentPair)) { if (this.ContentSpotter.ContainsKeyValuePair("mn", "SendMessage_ec", SpotterBase.SpotterContext.ContentPair)) { detectedEvents.Add(EventSuggest.MailNewMessage); } if (this.ContentSpotter.ContainsKeyValuePair("mn", "GetInboxData", SpotterBase.SpotterContext.ContentPair) && !detectedEvents.Contains(EventSuggest.MailNewMessage)) { detectedEvents.Add(EventSuggest.MailListFolder); } // TODO other events } return(detectedEvents.Any()); }
public override bool IsMsgWebmailEvent(HTTPMsg message, ref List <EventSuggest> detectedEvents, out SpotterBase spotter) { this.Init(message); spotter = this.ContentSpotter; if (this.ContentSpotter == null) { return(false); } /* webmail application detection for better content parsing purposes */ if (this.ContentSpotter.ContainsKeyValuePair("appid", "YahooMailNeo", SpotterBase.SpotterContext.AllPair)) { this.WebmailApp = WebmailSuggest.YahooMailNeo; } else if (this.ContentSpotter.ContainsKeyValuePair("Host", "email.seznam.cz", SpotterBase.SpotterContext.AllPair)) { this.WebmailApp = WebmailSuggest.Seznam; } /* event detection */ if (this.ContentSpotter.Contains("from", SpotterBase.SpotterContext.ContentKey) && this.ContentSpotter.Contains("to", SpotterBase.SpotterContext.ContentKey) && this.ContentSpotter.Contains("subject", SpotterBase.SpotterContext.ContentKey) && this.ContentSpotter.ContainsOneOf(this.MailContentFields, SpotterBase.SpotterContext.ContentKey)) { detectedEvents.Add(EventSuggest.MailNewMessage); } else { foreach (var pair in this.ListFolderPairs) { var key = pair.Key; if ((pair.Value.Equals("*") && this.ContentSpotter.Contains(pair.Key, SpotterBase.SpotterContext.AllKey)) || this.ContentSpotter.ContainsKeyValuePair(key, pair.Value, SpotterBase.SpotterContext.AllPair)) { detectedEvents.Add(EventSuggest.MailListFolder); } } foreach (var pair in this.DisplayMessagePairs) { var key = pair.Key; if ((pair.Value.Equals("*") && this.ContentSpotter.Contains(pair.Key, SpotterBase.SpotterContext.AllKey)) || this.ContentSpotter.ContainsKeyValuePair(key, pair.Value, SpotterBase.SpotterContext.AllPair)) { detectedEvents.Add(EventSuggest.MailDisplayMessage); } } // other events detection comes here } return(detectedEvents.Any()); }
/// <summary> /// Check if HTTP message is webmail event. /// </summary> /// <param name="message">HTTP message to check</param> /// <param name="detectedEvents">Webmail events found in message</param> /// <param name="spotter">Spotter used to handle message.</param> /// <returns></returns> public abstract bool IsMsgWebmailEvent(HTTPMsg message, ref List <EventSuggest> detectedEvents, out SpotterBase spotter);
private WebmailEventBase CreateEvent(WebmailAnalyzerBase.EventSuggest evt, WebmailAnalyzerBase.WebmailSuggest webmailApp, SpotterBase spotter) { string from; string to; string cc; string bcc; string subject; string body; switch (evt) { case WebmailAnalyzerBase.EventSuggest.MailDisplayMessage: if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.Seznam) { var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Seznam/GetDisplayMessage")); var m = o as MailMsg; if (m != null) { return(new EventDisplayMessage(this.SnooperExport, m)); } } else if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.YahooMailNeo) { var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Yahoo/GetDisplayMessage")); var m = o as MailMsg; if (m != null) { return(new EventDisplayMessage(this.SnooperExport, m)); } } this.SpotterGetMailFields(spotter, out from, out to, out cc, out bcc, out subject, out body); return(new EventDisplayMessage(this.SnooperExport, from, to, cc, bcc, subject, body)); case WebmailAnalyzerBase.EventSuggest.MailListFolder: if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.YahooMailNeo) { var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Yahoo/GetListedMessages")); var l = o as List <MailMsg>; if (l != null) { return(new EventListFolder(this.SnooperExport, l)); } } else if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.Seznam) { var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Seznam/GetListedMessages")); var l = o as List <MailMsg>; if (l != null) { return(new EventListFolder(this.SnooperExport, l)); } } else if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.MicrosoftLive) { // TODO var content = spotter.GetStringContent(); var splitted = content.Split(','); var list = new List <MailMsg>(); for (int i = 0; i < splitted.Length; i++) { if (!splitted[i].Contains("new HM.Rollup")) { continue; } var mail = new MailMsg(); mail.From = splitted[i + 11]; mail.Subject = splitted[i + 27]; list.Add(mail); } return(new EventListFolder(this.SnooperExport, list)); } return(new EventListFolder(this.SnooperExport, spotter.GetStringContent())); default: if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.Seznam) { var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Seznam/GetNewMessage")); var m = o as MailMsg; if (m != null) { return(new EventNewMessage(this.SnooperExport, m)); } } else if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.MicrosoftLive) { var pars = spotter.GetContentPart("^d$", "*"); var value = pars.Substring(1, pars.Length - 2); var parray = value.Split(','); to = parray.Length > 0 ? parray[0] : ""; from = parray.Length > 1 ? parray[1] : ""; cc = parray.Length > 2 ? parray[2] : ""; bcc = parray.Length > 3 ? parray[3] : ""; subject = parray.Length > 5 ? parray[5] : ""; body = parray.Length > 6 ? parray[6] : ""; return(new EventNewMessage(this.SnooperExport, from, to, cc, bcc, subject, body)); } this.SpotterGetMailFields(spotter, out from, out to, out cc, out bcc, out subject, out body); return(new EventNewMessage(this.SnooperExport, from, to, cc, bcc, subject, body)); } }