From 32553888bb99bacdff422df7be01f7c28545e0f2 Mon Sep 17 00:00:00 2001 From: Jonathan Preddy Date: Thu, 17 Jul 2014 11:51:42 -0400 Subject: [PATCH] Updated Configuration.cs to use FieldDefinition --- TimberWinR/Configuration.cs | 146 +++++++++++++++++++----------------- 1 file changed, 78 insertions(+), 68 deletions(-) diff --git a/TimberWinR/Configuration.cs b/TimberWinR/Configuration.cs index 9dacdc6..bf3b30f 100644 --- a/TimberWinR/Configuration.cs +++ b/TimberWinR/Configuration.cs @@ -5,6 +5,7 @@ using System.Text; using System.Xml.Linq; using System.IO; using System.Globalization; +using TimberWinR.Inputs; namespace TimberWinR { public class Configuration @@ -23,35 +24,35 @@ namespace TimberWinR parseXMLConf(xmlConfFile); } - static List parseFields_Events(IEnumerable xml_fields) + static List parseFields_Events(IEnumerable xml_fields) { - List fields = new List(); + List fields = new List(); - List allPossibleFields = new List + Dictionary allPossibleFields = new Dictionary() { - "EventLog", - "RecordNumber", - "TimeGenerated", - "TimeWritten", - "EventID", - "EventType", - "EventTypeName", - "EventCategory", - "EventCategoryName", - "SourceName", - "Strings", - "ComputerName", - "SID", - "Message", - "Data" + { "EventLog", typeof(string) }, + { "RecordNumber", typeof(int) }, + { "TimeGenerated", typeof(DateTime) }, + { "TimeWritten", typeof(DateTime) }, + { "EventID", typeof(int) }, + { "EventType", typeof(int) }, + { "EventTypeName", typeof(string) }, + { "EventCategory", typeof(int) }, + { "EventCategoryName", typeof(string) }, + { "SourceName", typeof(string) }, + { "Strings", typeof(string) }, + { "ComputerName", typeof(string) }, + { "SID", typeof(string) }, + { "Message", typeof(string) }, + { "Data", typeof(string) } }; foreach (XElement f in xml_fields) { string name = f.Attribute("name").Value; - if (allPossibleFields.Contains(name)) + if (allPossibleFields.ContainsKey(name)) { - fields.Add(name); + fields.Add(new FieldDefinition(name, allPossibleFields[name])); } else { @@ -61,29 +62,32 @@ namespace TimberWinR if (fields.Count == 0) { - fields = allPossibleFields; + foreach (KeyValuePair entry in allPossibleFields) + { + fields.Add(new FieldDefinition(entry.Key, entry.Value)); + } } return fields; } - static List parseFields_Logs(IEnumerable xml_fields) + static List parseFields_Logs(IEnumerable xml_fields) { - List fields = new List(); + List fields = new List(); - List allPossibleFields = new List + Dictionary allPossibleFields = new Dictionary() { - "LogFilename", - "Index", - "Text" + { "LogFilename", typeof(string) }, + { "Index", typeof(int) }, + { "Text", typeof(string) } }; foreach (XElement f in xml_fields) { string name = f.Attribute("name").Value; - if (allPossibleFields.Contains(name)) + if (allPossibleFields.ContainsKey(name)) { - fields.Add(name); + fields.Add(new FieldDefinition(name, allPossibleFields[name])); } else { @@ -93,43 +97,46 @@ namespace TimberWinR if (fields.Count == 0) { - fields = allPossibleFields; + foreach (KeyValuePair entry in allPossibleFields) + { + fields.Add(new FieldDefinition(entry.Key, entry.Value)); + } } return fields; } - static List parseFields_IIS(IEnumerable xml_fields) + static List parseFields_IIS(IEnumerable xml_fields) { - List fields = new List(); + List fields = new List(); - List allPossibleFields = new List + Dictionary allPossibleFields = new Dictionary() { - "LogFilename", - "LogRow", - "UserIP", - "UserName", - "Date", - "Time", - "ServiceInstance", - "HostName", - "ServerIP", - "TimeTaken", - "BytesSent", - "BytesReceived", - "StatusCode", - "Win32StatusCode", - "RequestType", - "Target", - "Parameters" + { "LogFilename", typeof(string) }, + { "LogRow", typeof(int) }, + { "UserIP", typeof(string) }, + { "UserName", typeof(string) }, + { "Date", typeof(DateTime) }, + { "Time", typeof(DateTime) }, + { "ServiceInstance", typeof(string) }, + { "HostName", typeof(string) }, + { "ServerIP", typeof(string) }, + { "TimeTaken", typeof(int) }, + { "BytesSent", typeof(int) }, + { "BytesReceived", typeof(int) }, + { "StatusCode", typeof(int) }, + { "Win32StatusCode", typeof(int) }, + { "RequestType", typeof(string) }, + { "Target", typeof(string) }, + { "Parameters", typeof(string) } }; foreach (XElement f in xml_fields) { string name = f.Attribute("name").Value; - if (allPossibleFields.Contains(name)) + if (allPossibleFields.ContainsKey(name)) { - fields.Add(name); + fields.Add(new FieldDefinition(name, allPossibleFields[name])); } else { @@ -139,7 +146,10 @@ namespace TimberWinR if (fields.Count == 0) { - fields = allPossibleFields; + foreach (KeyValuePair entry in allPossibleFields) + { + fields.Add(new FieldDefinition(entry.Key, entry.Value)); + } } return fields; @@ -406,7 +416,7 @@ namespace TimberWinR IEnumerable xml_fields = from el in e.Descendants("Fields").Descendants("Field") select el; - List fields = parseFields_Events(xml_fields); + List fields = parseFields_Events(xml_fields); Params_WindowsEvents args = parseParams_Events(e.Attributes()); @@ -430,7 +440,7 @@ namespace TimberWinR IEnumerable xml_fields = from el in e.Descendants("Fields").Descendants("Field") select el; - List fields = parseFields_Logs(xml_fields); + List fields = parseFields_Logs(xml_fields); Params_TextLogs args = parseParams_Logs(e.Attributes()); @@ -452,7 +462,7 @@ namespace TimberWinR IEnumerable xml_fields = from el in e.Descendants("Fields").Descendants("Field") select el; - List fields = parseFields_IIS(xml_fields); + List fields = parseFields_IIS(xml_fields); Params_IISLogs args = parseParams_IIS(e.Attributes()); @@ -468,7 +478,7 @@ namespace TimberWinR public class WindowsEvents { public string Source { get; private set; } - public List Fields { get; private set; } + public List Fields { get; private set; } // Parameters public bool FullText { get; private set; } @@ -481,7 +491,7 @@ namespace TimberWinR public string ICheckpoint { get; private set; } public string BinaryFormat { get; private set; } - public WindowsEvents(string source, List fields, Params_WindowsEvents args) + public WindowsEvents(string source, List fields, Params_WindowsEvents args) { Source = source; Fields = fields; @@ -502,9 +512,9 @@ namespace TimberWinR sb.Append("WindowsEvent\n"); sb.Append(String.Format("Source: {0}\n", Source)); sb.Append("Fields:\n"); - foreach (string f in Fields) + foreach (FieldDefinition f in Fields) { - sb.Append(String.Format("\t{0}\n", f)); + sb.Append(String.Format("\t{0}\n", f.Name)); } sb.Append("Parameters:\n"); sb.Append(String.Format("\tfullText: {0}\n", FullText)); @@ -525,7 +535,7 @@ namespace TimberWinR { public string Name { get; private set; } public string Location { get; private set; } - public List Fields { get; private set; } + public List Fields { get; private set; } // Parameters public int ICodepage { get; private set; } @@ -533,7 +543,7 @@ namespace TimberWinR public bool SplitLongLines { get; private set; } public string ICheckpoint { get; private set; } - public TextLogs(string name, string location, List fields, Params_TextLogs args) + public TextLogs(string name, string location, List fields, Params_TextLogs args) { Name = name; Location = location; @@ -552,9 +562,9 @@ namespace TimberWinR sb.Append(String.Format("Name: {0}\n", Name)); sb.Append(String.Format("Location: {0}\n", Location)); sb.Append("Fields:\n"); - foreach (string f in Fields) + foreach (FieldDefinition f in Fields) { - sb.Append(String.Format("\t{0}\n", f)); + sb.Append(String.Format("\t{0}\n", f.Name)); } sb.Append("Parameters:\n"); sb.Append(String.Format("\tiCodepage: {0}\n", ICodepage)); @@ -570,7 +580,7 @@ namespace TimberWinR { public string Name { get; private set; } public string Location { get; private set; } - public List Fields { get; private set; } + public List Fields { get; private set; } // Parameters public int ICodepage { get; private set; } @@ -579,7 +589,7 @@ namespace TimberWinR public string Locale { get; private set; } public string ICheckpoint { get; private set; } - public IISLogs(string name, string location, List fields, Params_IISLogs args) + public IISLogs(string name, string location, List fields, Params_IISLogs args) { Name = name; Location = location; @@ -599,9 +609,9 @@ namespace TimberWinR sb.Append(String.Format("Name: {0}\n", Name)); sb.Append(String.Format("Location: {0}\n", Location)); sb.Append("Fields:\n"); - foreach (string f in Fields) + foreach (FieldDefinition f in Fields) { - sb.Append(String.Format("\t{0}\n", f)); + sb.Append(String.Format("\t{0}\n", f.Name)); } sb.Append("Parameters:\n"); sb.Append(String.Format("\tiCodepage: {0}\n", ICodepage));