Ejemplo n.º 1
0
 /// <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;
 }
Ejemplo n.º 2
0
 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)$", ".*");
 }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
 /// <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);
Ejemplo n.º 6
0
        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));
            }
        }