public Data AsData(DataCollectorContext context) { DictionaryData d = new DictionaryData(context); d.Data["Message"] = Message; d.Data["TimeGenerated"] = TimeGeneratedAsDateTimeOffset.ToString("o"); d.Data["Source"] = SourceName; d.Data["RecordNumber"] = RecordNumber.ToString(); d.Data["EventCode"] = EventCode.ToString(); return(d); }
// road segment public static FileError IdentifierNotUnique(this IDbaseFileRecordProblemBuilder builder, RoadSegmentId identifier, RecordNumber takenByRecordNumber) { return(builder .Error(nameof(IdentifierNotUnique)) .WithParameters( new ProblemParameter("Identifier", identifier.ToString()), new ProblemParameter("TakenByRecordNumber", takenByRecordNumber.ToString()) ) .Build()); }
public traderBean ToBean() { traderBean bean = new traderBean(); bean.ID = RecordNumber.ToString(); bean.DATA_NEGOCIO = TradeDate.ToString("yyyy-MM-dd"); bean.HORA_NEGOCIO = HoraNegocio; bean.NR_NEGOCIO = TradeID; bean.CODNEG = Papel; bean.SERPAP = Serie; bean.OPERACAO = Orientation; bean.QTDADE = NumberOfContracts.ToString(); bean.PDENEG = Price.ToString(ciEn); bean.FC_NOME = BuyerName; bean.NM_EMIT_ORDEM = TraderName; bean.MERCADO = SegmentoBolsa; return(bean); }
public EventRecord(BinaryReader recordData, int recordPosition, ChunkInfo chunk) { var l = LogManager.GetLogger("EventRecord"); RecordPosition = recordPosition; ChunkNumber = chunk.ChunkNumber; recordData.ReadInt32(); //signature Size = recordData.ReadUInt32(); RecordNumber = recordData.ReadInt64(); Timestamp = DateTimeOffset.FromFileTime(recordData.ReadInt64()).ToUniversalTime(); if (recordData.PeekChar() != 0xf) { throw new Exception("Payload does not start with 0x1f!"); } l.Trace( $"Record position: 0x{RecordPosition:X4} Record #: {RecordNumber.ToString().PadRight(3)} Timestamp: {Timestamp:yyyy-MM-dd HH:mm:ss.fffffff}"); Nodes = new List <IBinXml>(); var eof = false; while (eof == false) { var nextTag = TagBuilder.BuildTag(recordPosition, recordData, chunk); Nodes.Add(nextTag); if (nextTag is EndOfBXmlStream) //nothing left to do, so exit { eof = true; } } BuildProperties(); }
public override string ToString() { return ($"Record position: 0x{RecordPosition:X4} Record #: {RecordNumber.ToString().PadRight(3)} Timestamp: {Timestamp:yyyy-MM-dd HH:mm:ss.fffffff} Event Id: {EventId}"); }
public EventRecord(BinaryReader recordData, int recordPosition, ChunkInfo chunk) { var l = LogManager.GetLogger("EventRecord"); RecordPosition = recordPosition; ChunkNumber = chunk.ChunkNumber; recordData.ReadInt32(); //signature Size = recordData.ReadUInt32(); RecordNumber = recordData.ReadInt64(); Timestamp = DateTimeOffset.FromFileTime(recordData.ReadInt64()).ToUniversalTime(); if (recordData.PeekChar() != 0xf) { throw new Exception("Payload does not start with 0x1f!"); } l.Trace( $"\r\nRecord position: 0x{RecordPosition:X4} Record #: {RecordNumber.ToString().PadRight(3)} Timestamp: {Timestamp:yyyy-MM-dd HH:mm:ss.fffffff}"); Nodes = new List <IBinXml>(); var eof = false; while (eof == false) { var nextTag = TagBuilder.BuildTag(recordPosition, recordData, chunk); Nodes.Add(nextTag); if (nextTag is EndOfBXmlStream) { //nothing left to do, so exit eof = true; //check here if there is a 0x2a0x2a and if so, another record! var found2a = true; //danderspritz test var maxCount = 0; while (recordData.ReadByte() != 0x2a && maxCount < 15) { if (recordData.BaseStream.Position == recordData.BaseStream.Length) { found2a = false; break; //out of data } maxCount += 1; } if (found2a) { //a secondary check to eliminate false positives if (recordData.ReadByte() == 0x2a) { //back up two recordData.BaseStream.Seek(-2, SeekOrigin.Current); ExtraDataOffset = recordData.BaseStream.Position; } } } } BuildProperties(); }
public IShapeFileRecordProblemBuilder AtShapeRecord(RecordNumber number) { return(new FileProblemBuilder(_file, _parameters.Add(new ProblemParameter("RecordNumber", number.ToString())))); }
public virtual string GetRecordNumberString() => RecordNumber.ToString("D6");
public EventRecord(BinaryReader recordData, int recordPosition, ChunkInfo chunk) { var l = LogManager.GetLogger("EventRecord"); RecordPosition = recordPosition; recordData.ReadInt32(); //signature Size = recordData.ReadUInt32(); RecordNumber = recordData.ReadInt64(); Timestamp = DateTimeOffset.FromFileTime(recordData.ReadInt64()).ToUniversalTime(); if (recordData.PeekChar() != 0xf) { throw new Exception("Payload does not start with 0x1f!"); } l.Trace( $"Record position: 0x{RecordPosition:X4} Record #: {RecordNumber.ToString().PadRight(3)} Timestamp: {Timestamp:yyyy-MM-dd HH:mm:ss.fffffff}"); Nodes = new List <IBinXml>(); var eof = false; while (eof == false) { var nextTag = TagBuilder.BuildTag(recordPosition, recordData, chunk); Nodes.Add(nextTag); if (nextTag is EndOfBXmlStream) //nothing left to do, so exit { eof = true; } } var xml = ConvertPayloadToXml(); using (var sr = new StringReader(xml)) { var docNav = new XPathDocument(sr); var nav = docNav.CreateNavigator(); var computer = nav.SelectSingleNode(@"/Event/System/Computer"); var channel = nav.SelectSingleNode(@"/Event/System/Channel"); var eventRecordId = nav.SelectSingleNode(@"/Event/System/EventRecordID"); var eventId = nav.SelectSingleNode(@"/Event/System/EventID"); var level = nav.SelectSingleNode(@"/Event/System/Level"); var timeCreated = nav.SelectSingleNode(@"/Event/System/TimeCreated")?.GetAttribute("SystemTime", ""); var provider = nav.SelectSingleNode(@"/Event/System/Provider")?.GetAttribute("Name", ""); var processId = nav.SelectSingleNode(@"/Event/System/Execution")?.GetAttribute("ProcessID", ""); var threadId = nav.SelectSingleNode(@"/Event/System/Execution")?.GetAttribute("ThreadID", ""); var userId = nav.SelectSingleNode(@"/Event/System/Security")?.GetAttribute("UserID", ""); TimeCreated = DateTimeOffset.Parse(timeCreated, null, DateTimeStyles.AssumeUniversal).ToUniversalTime(); if (eventId != null) { EventId = eventId.ValueAsInt; } //if (level != null) //{ // Level = level.ValueAsInt; //} //if (eventRecordId != null) //{ // EventRecordId = eventRecordId.Value; //} //if (processId != null) //{ // ProcessId = int.Parse(processId); //} //if (threadId != null) //{ // ThreadId = int.Parse(threadId); //} var payloadNode = nav.SelectSingleNode(@"/Event/EventData"); if (payloadNode == null) { payloadNode = nav.SelectSingleNode(@"/Event/UserData"); } var payloadXml = payloadNode?.OuterXml; //if (EventLog.EventLogMaps.ContainsKey($"{EventId}-{channel.ToString().ToUpperInvariant()}")) //{ // l.Trace($"Found map for event id {EventId} with Channel '{channel}'!"); // var map = EventLog.EventLogMaps[$"{EventId}-{channel.ToString().ToUpperInvariant()}"]; // MapDescription = map.Description; // foreach (var mapEntry in map.Maps) // { // var valProps = new Dictionary<string, string>(); // foreach (var me in mapEntry.Values) // { // //xpath out variables // var propVal = nav.SelectSingleNode(me.Value); // if (propVal != null) // { // var propValue = propVal.Value; // if (me.Refine.IsNullOrEmpty() == false) // { // var hits = new List<string>(); // //regex time // MatchCollection allMatchResults = null; // try { // Regex regexObj = new Regex(me.Refine, RegexOptions.IgnoreCase); // allMatchResults = regexObj.Matches(propValue); // if (allMatchResults.Count > 0) { // // Access individual matches using allMatchResults.Item[] // foreach (Match allMatchResult in allMatchResults) // { // hits.Add(allMatchResult.Value); // } // propValue = string.Join(" | ", hits); // } // } catch (ArgumentException ) { // // Syntax error in the regular expression // } // } // valProps.Add(me.Name, propValue); // } // else // { // valProps.Add(me.Name, string.Empty); // l.Warn( // $"Record # {RecordNumber} (Event Record Id: {EventRecordId}): In map for event '{map.EventId}', Property '{me.Value}' not found! Replacing with empty string"); // } // } // //we have the values, now substitute // var propertyValue = mapEntry.PropertyValue; // foreach (var valProp in valProps) // { // propertyValue = propertyValue.Replace($"%{valProp.Key}%", valProp.Value); // } // var propertyToUpdate = mapEntry.Property.ToUpperInvariant(); // if (valProps.Count == 0) // { // propertyToUpdate = "NOMATCH"; //prevents variables from showing up in the CSV // } // //we should now have our new value, so stick it in its place // switch (propertyToUpdate) // { // case "USERNAME": // UserName = propertyValue; // break; // case "REMOTEHOST": // RemoteHost = propertyValue; // break; // case "EXECUTABLEINFO": // ExecutableInfo = propertyValue; // break; // case "PAYLOADDATA1": // PayloadData1 = propertyValue; // break; // case "PAYLOADDATA2": // PayloadData2 = propertyValue; // break; // case "PAYLOADDATA3": // PayloadData3 = propertyValue; // break; // case "PAYLOADDATA4": // PayloadData4 = propertyValue; // break; // case "PAYLOADDATA5": // PayloadData5 = propertyValue; // break; // case "PAYLOADDATA6": // PayloadData6 = propertyValue; // break; // case "NOMATCH": // //when a property was not found. // break; // default: // l.Warn( // $"Unknown property name '{propertyToUpdate}'! Dropping mapping value of '{propertyValue}'"); // break; //} //sanity checks //UserId = userId ?? string.Empty; Provider = provider ?? string.Empty; Channel = channel?.Value ?? string.Empty; Computer = computer?.Value ?? string.Empty; Payload = payloadXml ?? string.Empty; } }
public Response Load(int LineNumber) { try { int RecordCount = 0; int RecordNumber; int SubLineNumber; // tbl_Accounts Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Accounts into Cache..", Log.LogType.CACHE); RecordCount = Count("SELECT COUNT(*) FROM tbl_Accounts;"); reader = QueryDatabase("SELECT * FROM tbl_Accounts;"); RecordNumber = 0; SubLineNumber = -1; while (reader.Read()) { Data.tbl_Accounts.TryAdd(reader.GetInt32("Account_ID"), new _Accounts(reader.GetInt32("Account_ID"), reader.GetString("Username"), reader.GetString("Email"), reader.GetString("Password"), reader.GetBoolean("Logged_In"))); ++RecordNumber; if (SubLineNumber == -1) { SubLineNumber = Log.log("Downloading data from tbl_Accounts, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } else { Log.log(SubLineNumber, "Downloading data from tbl_Accounts, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } } reader.Close(); // tbl_Activity Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Activity into Cache..", Log.LogType.CACHE); RecordCount = Count("SELECT COUNT(*) from tbl_Activity;"); reader = QueryDatabase("SELECT * FROM tbl_Activity;"); RecordNumber = 0; SubLineNumber = -1; while (reader.Read()) { Data.tbl_Activity.Add(new _Activity(reader.GetInt32("Activity_ID"), reader.GetInt32("Account_ID"), (Activity)reader.GetInt32("Activity_Type"), reader.GetDateTime("DTStamp"), reader.GetString("Session_ID"), false)); ++RecordNumber; if (SubLineNumber == -1) { SubLineNumber = Log.log("Downloading data from tbl_Activity, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } else { Log.log(SubLineNumber, "Downloading data from tbl_Activity, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } } reader.Close(); // tbl_Characters Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Characters into Cache..", Log.LogType.CACHE); RecordCount = Count("SELECT COUNT(*) from tbl_Characters;"); reader = QueryDatabase("SELECT * FROM tbl_Characters;"); RecordNumber = 0; SubLineNumber = -1; while (reader.Read()) { Data.tbl_Characters.TryAdd(reader.GetInt32("Character_ID"), new _Characters(reader.GetInt32("Character_ID"), reader.GetInt32("Account_ID"), reader.GetString("Character_Name"), reader.GetInt32("Character_Level"), reader.GetInt32("Gender"), reader.GetFloat("Pos_X"), reader.GetFloat("Pos_Y"), reader.GetFloat("Pos_Z"), reader.GetFloat("Rotation_Y"), reader.GetFloat("Camera_Pos_X"), reader.GetFloat("Camera_Pos_Y"), reader.GetFloat("Camera_Pos_Z"), reader.GetFloat("Camera_Rotation_Y"), reader.GetInt32("Health"), reader.GetInt32("Strength"), reader.GetInt32("Agility"), reader.GetInt32("Experience"))); ++RecordNumber; if (SubLineNumber == -1) { SubLineNumber = Log.log("Downloading data from tbl_Characters, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } else { Log.log(SubLineNumber, "Downloading data from tbl_Characters, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } } reader.Close(); // tbl_Quests Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Quests into Cache..", Log.LogType.CACHE); RecordCount = Count("SELECT COUNT(*) from tbl_Quests;"); reader = QueryDatabase("SELECT * FROM tbl_Quests;"); RecordNumber = 0; SubLineNumber = -1; while (reader.Read()) { Data.tbl_Quests.TryAdd(reader.GetInt32("Quest_ID"), new _Quests(reader.GetInt32("Quest_ID"), reader.GetString("Title"), reader.GetString("Start_Text"), reader.GetString("End_Text"), reader.GetInt32("Reward_ID"), reader.GetInt32("NPC_Start_ID"), reader.GetInt32("NPC_End_ID"), reader.GetInt32("Objective_Target"), reader.GetInt32("Start_Requirement_Quest_ID"), reader.GetInt32("Item_Objective_ID"), reader.GetInt32("NPC_Objective_ID"), reader.GetInt32("Experience"))); ++RecordNumber; if (SubLineNumber == -1) { SubLineNumber = Log.log("Downloading data from tbl_Quests, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } else { Log.log(SubLineNumber, "Downloading data from tbl_Quests, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } } reader.Close(); // tbl_Quest_Log Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Quest_Log into Cache..", Log.LogType.CACHE); RecordCount = Count("SELECT COUNT(*) from tbl_Quest_Log;"); reader = QueryDatabase("SELECT * FROM tbl_Quest_Log;"); RecordNumber = 0; SubLineNumber = -1; while (reader.Read()) { Data.tbl_Quest_Log.TryAdd(reader.GetInt32("Log_ID"), new _Quest_Log(reader.GetInt32("Log_ID"), reader.GetInt32("Character_ID"), reader.GetInt32("Quest_ID"), reader.GetInt32("Quest_Status"), reader.GetInt32("Progress"))); ++RecordNumber; if (SubLineNumber == -1) { SubLineNumber = Log.log("Downloading data from tbl_Quest_Log, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } else { Log.log(SubLineNumber, "Downloading data from tbl_Quest_Log, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } } reader.Close(); // tbl_NPC Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_NPC into Cache..", Log.LogType.CACHE); RecordCount = Count("SELECT COUNT(*) from tbl_NPC;"); reader = QueryDatabase("SELECT * FROM tbl_NPC;"); RecordNumber = 0; SubLineNumber = -1; while (reader.Read()) { Data.tbl_NPC.TryAdd(reader.GetInt32("NPC_ID"), new _NPC(reader.GetInt32("NPC_ID"), reader.GetInt32("Status"), reader.GetString("Name"), reader.GetInt32("Level"), reader.GetInt32("HP"), reader.GetInt32("Gender"), reader.GetInt32("Respawn_Time"), reader.GetInt32("Strength"), reader.GetInt32("Agility"), reader.GetInt32("Experience"))); ++RecordNumber; if (SubLineNumber == -1) { SubLineNumber = Log.log("Downloading data from tbl_NPC, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } else { Log.log(SubLineNumber, "Downloading data from tbl_NPC, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } } reader.Close(); // tbl_Collectables Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Collectables into Cache..", Log.LogType.CACHE); RecordCount = Count("SELECT COUNT(*) from tbl_Collectables;"); reader = QueryDatabase("SELECT * FROM tbl_Collectables;"); RecordNumber = 0; SubLineNumber = -1; while (reader.Read()) { Data.tbl_Collectables.TryAdd(reader.GetInt32("Collectable_ID"), new _Collectables(reader.GetInt32("Collectable_ID"), reader.GetString("Collectable_Name"), reader.GetInt32("Respawn_Time"))); ++RecordNumber; if (SubLineNumber == -1) { SubLineNumber = Log.log("Downloading data from tbl_Collectables, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } else { Log.log(SubLineNumber, "Downloading data from tbl_Collectables, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } } reader.Close(); // tbl_Spawn_Positions Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Spawn_Positions into Cache..", Log.LogType.CACHE); RecordCount = Count("SELECT COUNT(*) from tbl_Spawn_Positions;"); reader = QueryDatabase("SELECT * FROM tbl_Spawn_Positions;"); RecordNumber = 0; SubLineNumber = -1; while (reader.Read()) { Data.tbl_Spawn_Positions.TryAdd(reader.GetInt32("Position_ID"), new _Spawn_Positions(reader.GetInt32("Position_ID"), reader.GetFloat("Pos_X"), reader.GetFloat("Pos_Y"), reader.GetFloat("Pos_Z"), reader.GetFloat("Rotation_Y"), reader.GetInt32("NPC_ID"), reader.GetInt32("Collectable_ID"))); ++RecordNumber; if (SubLineNumber == -1) { SubLineNumber = Log.log("Downloading data from tbl_Spawn_Positions, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } else { Log.log(SubLineNumber, "Downloading data from tbl_Spawn_Positions, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } } reader.Close(); // tbl_Experience Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Experience into Cache..", Log.LogType.CACHE); RecordCount = Count("SELECT COUNT(*) from tbl_Experience;"); reader = QueryDatabase("SELECT * FROM tbl_Experience;"); RecordNumber = 0; SubLineNumber = -1; while (reader.Read()) { Data.tbl_Experience.TryAdd(reader.GetInt32("XP_ID"), new _Experience(reader.GetInt32("XP_ID"), reader.GetInt32("Level"), reader.GetInt32("Experience"), reader.GetInt32("Strength"), reader.GetInt32("Agility"), reader.GetInt32("HP"))); ++RecordNumber; if (SubLineNumber == -1) { SubLineNumber = Log.log("Downloading data from tbl_Experience, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } else { Log.log(SubLineNumber, "Downloading data from tbl_Experience, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } } reader.Close(); // tbl_Connectivity Log.log(LineNumber, "Performing initial synchronization of database.. Loading tbl_Connectivity into Cache..", Log.LogType.CACHE); RecordCount = Count("SELECT COUNT(*) from tbl_Connectivity;"); reader = QueryDatabase("SELECT * FROM tbl_Connectivity;"); RecordNumber = 0; SubLineNumber = -1; while (reader.Read()) { Data.tbl_Connectivity.Add(new _Connectivity(reader.GetInt32("Character_ID"), reader.GetDateTime("DTStamp"), reader.GetFloat("TCP_Latency"), reader.GetFloat("TCP_Throughput"), reader.GetInt32("TCP_Packets_Sent"), reader.GetInt32("TCP_Packets_Received"), reader.GetFloat("UDP_Latency"), reader.GetFloat("UDP_Throughput"), reader.GetInt32("UDP_Packets_Sent"), reader.GetInt32("UDP_Packets_Received"), false, reader.GetInt32("ID"))); ++RecordNumber; if (SubLineNumber == -1) { SubLineNumber = Log.log("Downloading data from tbl_Connectivity, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } else { Log.log(SubLineNumber, "Downloading data from tbl_Connectivity, Record: " + RecordNumber.ToString() + " of " + RecordCount.ToString() + " (" + ((RecordNumber == 0 || RecordCount == 0) ? "0.00%" : ((RecordCount / RecordNumber) * 100).ToString("0.00") + "%") + ")", Log.LogType.CACHE); } } reader.Close(); Log.log(LineNumber, "Initial synchronization of database successful, see below for a data summary report.", Log.LogType.CACHE); return(Response.SUCCESSFUL); } catch (Exception e) { Log.log("An error occurred when attempting to load data from the database. > " + e.Message, Log.LogType.ERROR); return(Response.ERROR); } }
public EventRecord(BinaryReader recordData, int recordPosition, ChunkInfo chunk) { var l = LogManager.GetLogger("EventRecord"); RecordPosition = recordPosition; recordData.ReadInt32(); //signature Size = recordData.ReadUInt32(); RecordNumber = recordData.ReadInt64(); Timestamp = DateTimeOffset.FromFileTime(recordData.ReadInt64()).ToUniversalTime(); if (recordData.PeekChar() != 0xf) { throw new Exception("Payload does not start with 0x1f!"); } l.Trace( $"Record position: 0x{RecordPosition:X4} Record #: {RecordNumber.ToString().PadRight(3)} Timestamp: {Timestamp:yyyy-MM-dd HH:mm:ss.fffffff}"); Nodes = new List <IBinXml>(); var eof = false; while (eof == false) { var nextTag = TagBuilder.BuildTag(recordPosition, recordData, chunk); Nodes.Add(nextTag); if (nextTag is EndOfBXmlStream) //nothing left to do, so exit { eof = true; } } var xml = ConvertPayloadToXml(); xml = xml.Replace(" xmlns=\"http://schemas.microsoft.com/win/2004/08/events/event\"", ""); using (var sr = new StringReader(xml)) { var docNav = new XPathDocument(sr); var nav = docNav.CreateNavigator(); var computer = nav.SelectSingleNode(@"/Event/System/Computer"); var channel = nav.SelectSingleNode(@"/Event/System/Channel"); var eventId = nav.SelectSingleNode(@"/Event/System/EventID"); var level = nav.SelectSingleNode(@"/Event/System/Level"); var timeCreated = nav.SelectSingleNode(@"/Event/System/TimeCreated")?.GetAttribute("SystemTime", ""); var provider = nav.SelectSingleNode(@"/Event/System/Provider")?.GetAttribute("Name", ""); var processId = nav.SelectSingleNode(@"/Event/System/Execution")?.GetAttribute("ProcessID", ""); var threadId = nav.SelectSingleNode(@"/Event/System/Execution")?.GetAttribute("ThreadID", ""); var userId = nav.SelectSingleNode(@"/Event/System/Security")?.GetAttribute("UserID", ""); TimeCreated = DateTimeOffset.Parse(timeCreated, null, DateTimeStyles.AssumeUniversal).ToUniversalTime(); if (eventId != null) { EventId = eventId.ValueAsInt; } if (level != null) { Level = level.ValueAsInt; } if (processId != null) { ProcessId = int.Parse(processId); } if (threadId != null) { ThreadId = int.Parse(threadId); } var payloadNode = nav.SelectSingleNode(@"/Event/EventData"); if (payloadNode == null) { payloadNode = nav.SelectSingleNode(@"/Event/UserData"); } var payloadXml = payloadNode?.OuterXml; if (EventLog.EventLogMaps.ContainsKey(EventId)) { l.Trace($"Found map for event id {EventId}!"); var map = EventLog.EventLogMaps[EventId]; foreach (var mapEntry in map.Maps) { var valProps = new Dictionary <string, string>(); foreach (var me in mapEntry.Values) { //xpath out variables var propVal = nav.SelectSingleNode(me.Value); valProps.Add(me.Name, propVal.Value); } //we have the values, now substitute var propertyValue = mapEntry.PropertyValue; foreach (var valProp in valProps) { propertyValue = propertyValue.Replace($"%{valProp.Key}%", valProp.Value); } //we should now have our new value, so stick it in its place switch (mapEntry.Property.ToUpperInvariant()) { case "USERNAME": UserName = propertyValue; break; case "REMOTEHOST": RemoteHost = propertyValue; break; case "EXECUTABLEINFO": ExecutableInfo = propertyValue; break; case "PAYLOADDATA1": PayloadData1 = propertyValue; break; case "PAYLOADDATA2": PayloadData2 = propertyValue; break; case "PAYLOADDATA3": PayloadData3 = propertyValue; break; case "PAYLOADDATA4": PayloadData4 = propertyValue; break; case "PAYLOADDATA5": PayloadData5 = propertyValue; break; case "PAYLOADDATA6": PayloadData6 = propertyValue; break; default: l.Warn($"Unknown property name '{mapEntry.Property}'! Dropping mapping value of '{propertyValue}'"); break; } } } //sanity checks UserId = userId ?? string.Empty; Provider = provider ?? string.Empty; Channel = channel?.Value ?? string.Empty; Computer = computer?.Value ?? string.Empty; PayloadXml = payloadXml ?? string.Empty; } }