diff --git a/src/NOCQ.Application/Program.cs b/src/NOCQ.Application/Program.cs index 594c4f4..2b53dba 100644 --- a/src/NOCQ.Application/Program.cs +++ b/src/NOCQ.Application/Program.cs @@ -1,4 +1,7 @@ using System; +using System.Dynamic; +using NOCQ.Plugins.Email; +using System.Collections.Generic; namespace NOCQ.Application { @@ -6,10 +9,33 @@ namespace NOCQ.Application { public static void Main (string[] args) { - dynamic settings = new ExpandoObject (); - //settings. + var settings = new EmailSettings (); + settings.Host = "imap.gmail.com"; + settings.IsSsl = true; + settings.Frequency = 20; + settings.Username = "gwyrox@gmail.com"; - var email = new NOCQ.Plugins.Email.ImapInput( + + Console.WriteLine ("Password: "); + settings.Password = Console.ReadLine (); + settings.Port = 993; + settings.Folder = "INBOX"; + + var rule = new ParseRule (); + rule.Name = "Nagios"; + rule.Enabled = true; + rule.From = "gwyrox@gmail.com"; + rule.Source = "Nagios"; + rule.System = "(?<=Host: ).*"; + rule.Service = "(?<=Service: ).*"; + rule.Data = "(?<=Additional Info:[\\n]*).*"; + rule.Severity = "P3"; + rule.Runbook = "http://google.com"; + + settings.ParseRules = new List { rule }; + + var email = new ImapInput (settings); + email.Execute (null,null); } } } diff --git a/src/NOCQ/NOCQ.csproj b/src/NOCQ/NOCQ.csproj index 6206afc..9acdb7f 100644 --- a/src/NOCQ/NOCQ.csproj +++ b/src/NOCQ/NOCQ.csproj @@ -59,15 +59,12 @@ - - IEmailSetting.cs - - + diff --git a/src/NOCQ/Plugins/Email/EmailSettings.cs b/src/NOCQ/Plugins/Email/EmailSettings.cs index d5af464..0a25ad0 100644 --- a/src/NOCQ/Plugins/Email/EmailSettings.cs +++ b/src/NOCQ/Plugins/Email/EmailSettings.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; namespace NOCQ.Plugins.Email { - public class EmailSettings :IEmailSetting + public class EmailSettings { public string Username {get;set;} public string Password {get;set;} diff --git a/src/NOCQ/Plugins/Email/ImapInput.cs b/src/NOCQ/Plugins/Email/ImapInput.cs index 8d690b7..90cf921 100644 --- a/src/NOCQ/Plugins/Email/ImapInput.cs +++ b/src/NOCQ/Plugins/Email/ImapInput.cs @@ -3,6 +3,7 @@ using System.Timers; using AE.Net.Mail; using System.Collections.Generic; using System.Linq; +using System.Text.RegularExpressions; namespace NOCQ.Plugins.Email { @@ -28,12 +29,15 @@ namespace NOCQ.Plugins.Email || sets.GetType().GetProperty("Folder") == null) throw new ArgumentException ("You are missing a required setting."); - parseRules = sets.ParseRules.Where (x => x.Enabled).ToList(); + if (sets.ParseRules != null) { + parseRules = sets.ParseRules.Where (x => x.Enabled).ToList (); + } loginName = sets.Username; password = sets.Password; server = sets.Host; folderPath = sets.Folder; + port = sets.Port; timer = new Timer (sets.Frequency); timer.Elapsed += Execute; @@ -41,7 +45,7 @@ namespace NOCQ.Plugins.Email public void Execute(object sender, ElapsedEventArgs args) { - using(var imap = new ImapClient(server, loginName, password, ImapClient.AuthMethods.Login, port, ssl)) { + using(var imap = new ImapClient(server, loginName, password, ImapClient.AuthMethods.Login, 993, true)) { var msgs = imap.SearchMessages( SearchCondition.Undeleted().And( SearchCondition.SentSince(new DateTime(2014, 5, 7)) @@ -51,8 +55,30 @@ namespace NOCQ.Plugins.Email { var realMsg = msg.Value; - Console.WriteLine ("FROM:" + realMsg.From); + var rule = parseRules.Where (x => x.From.Equals (realMsg.From.Address, StringComparison.CurrentCultureIgnoreCase)); + //"fuc".Com + if (rule.Any ()) + { + var thisRule = rule.First (); + var source = thisRule.Source; + + var sysRegex = new Regex(thisRule.System); + var servRegex = new Regex(thisRule.Service); + + var sysMatch = sysRegex.Match(realMsg.Body); + var servMatch = servRegex.Match(realMsg.Body); + + if (sysMatch.Success && servMatch.Success) { + Console.WriteLine ("Source: " + source); + Console.WriteLine("System: " + sysMatch.Value); + Console.WriteLine ("Service: " + servMatch.Value); + } + + + + //Console.WriteLine (system); + } } } }