示例#1
0
        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);
        }
示例#2
0
        // 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());
        }
示例#3
0
文件: Trade.cs 项目: radtek/Gradual
        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);
        }
示例#4
0
        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();
        }
示例#5
0
 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}");
 }
示例#6
0
        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()))));
 }
示例#8
0
 public virtual string GetRecordNumberString() => RecordNumber.ToString("D6");
示例#9
0
        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;
            }
        }
示例#10
0
        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);
            }
        }
示例#11
0
        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;
            }
        }