示例#1
0
        static void RunWatcher()
        {
            WatcherConfig config;

            using (var configReader = File.OpenText("watcher_conf.yml"))
            {
                var deserializer = new Deserializer();
                config = deserializer.Deserialize <WatcherConfig>(configReader);
            }

            var influxClient = new InfluxDb(config.InfluxHost, config.InfluxUsername, config.InfluxPassword, InfluxVersion.Auto);

            HardwareStore hw;

            using (TextReader reader = File.OpenText("hw.yml"))
            {
                hw = new HardwareStore(reader);
            }

            ISocketFactory sf = new ProxySocketFactory("127.0.0.1", 9150, null, null);

            while (true)
            {
                Task.Run(async() =>
                {
                    try
                    {
                        await ScrapeForAccountCharacter(0, 0, influxClient, config, hw, sf);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Error occurred");
                        Console.WriteLine(e);
                    }

                    try
                    {
                        await ScrapeForAccountCharacter(0, 1, influxClient, config, hw, sf);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Error occurred");
                        Console.WriteLine(e);
                    }

                    try
                    {
                        await ScrapeForAccountCharacter(1, 0, influxClient, config, hw, sf);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Error occurred");
                        Console.WriteLine(e);
                    }
                }).Wait();

                System.Threading.Thread.Sleep(120000);
            }
        }
示例#2
0
        public ActionResult DeleteConfirmed(int id)
        {
            HardwareStore hardwareStore = db.HardwareStores.Find(id);

            db.HardwareStores.Remove(hardwareStore);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
示例#3
0
 public ActionResult Edit([Bind(Include = "Id,Name,PhoneCentral")] HardwareStore hardwareStore)
 {
     if (ModelState.IsValid)
     {
         db.Entry(hardwareStore).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(hardwareStore));
 }
示例#4
0
        public ActionResult Create([Bind(Include = "Id,Name,PhoneCentral")] HardwareStore hardwareStore)
        {
            if (ModelState.IsValid)
            {
                db.HardwareStores.Add(hardwareStore);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(hardwareStore));
        }
示例#5
0
        // GET: HardwareStores/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            HardwareStore hardwareStore = db.HardwareStores.Find(id);

            if (hardwareStore == null)
            {
                return(HttpNotFound());
            }
            return(View(hardwareStore));
        }
示例#6
0
        private void Form1_Load(object sender, EventArgs e)
        {
            if (!File.Exists(Constants.HARDWARE_YAML_LOC))
            {
                MessageBox.Show($"File '{Constants.HARDWARE_YAML_LOC}' is missing! Make sure it is in the same folder as this executable.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Environment.Exit(0);
                return;
            }

            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

            if (!Directory.Exists("Packets"))
            {
                Directory.CreateDirectory("Packets");
            }

            if (!Directory.Exists("Appearances"))
            {
                Directory.CreateDirectory("Appearances");
            }

            using (TextReader reader = File.OpenText("hw.yml"))
                hw = new HardwareStore(reader);
        }
示例#7
0
 public void GetsCorrectHammers(int min, int max, IEnumerable <int> expected)
 {
     Assert.Equal(expected, HardwareStore.GetHammers(min, max));
 }
示例#8
0
        static void Main2(/*USE THIS FOR UI DEV*/)
        {
            Console.Title = "egoAPB - External Game Observer for APB: Reloaded";
            string email = "mail", password = "******", character = "char";

            if (!Directory.Exists("PacketDumps"))
            {
                Directory.CreateDirectory("PacketDumps");
            }

            HardwareStore hw;

            using (TextReader reader = File.OpenText("hw.yml"))
                hw = new HardwareStore(reader);

            Task.Run(async() =>
            {
                try
                {
                    var client = new APBClient.APBClient(email, password, hw);
                    await client.Login();
                    Console.WriteLine("Connected to lobby server");

                    List <CharacterInfo> characters = client.GetCharacters();
                    Console.WriteLine($"Got {characters.Count} characters (threat: '{characters[0].Threat}')");
                    Console.WriteLine();

                    foreach (var ch in characters)
                    {
                        CharacterInfo.Detailed charinfo = await client.GetDetailedCharacterInfo(ch.SlotNumber);
                        ch.Details = charinfo;
                        Console.WriteLine($"Got details for character '{ch.CharacterName}'");
                        Console.WriteLine($"\t-> Faction: {ch.Faction.ToString()}\n\t-> Gender: {charinfo.Gender.ToString()}\n\t-> Money: {ch.Details.Money}$\n\t-> Jocker Tickets: {ch.Details.JokerTickets}\n\t-> Rank: {ch.Details.Rank}\n\t-> Clan: {ch.Details.Clan}");
                        Console.WriteLine();
                    }

                    List <WorldInfo> worlds = await client.GetWorlds();
                    Console.WriteLine($"Got {worlds.Count} worlds");
                    worlds.ForEach(world => { Console.WriteLine($"\t-> {world.Name}, {world.Region}, {world.Status.ToString()}"); });
                    Console.WriteLine();

                    //DONE TO THIS POINT
                    CharacterInfo ChosenCharacter  = characters.SingleOrDefault(c => c.CharacterName == character);
                    ChosenCharacter.WorldEnterData = await client.EnterWorld(ChosenCharacter.SlotNumber);
                    Console.WriteLine($"Connected to world server '{ChosenCharacter.WorldName}'");
                    Console.WriteLine();

                    try
                    {
                        ChosenCharacter.Clan      = client.GetClanInfo();
                        ChosenCharacter.Clan.MOTD = client.GetClanMOTD();
                        Console.WriteLine($"Got clan info for '{ChosenCharacter.Clan.Name}'");
                        string motd = ChosenCharacter.Clan.MOTD.Replace("\n", string.Empty).Replace("\r", string.Empty).Replace("\t", string.Empty);
                        Console.WriteLine($"\t-> Total members: {ChosenCharacter.Clan.Members}\n\t-> Message of the day: {motd}\n\t-> Leader ID: {ChosenCharacter.Clan.Leader}");
                        Console.WriteLine();

                        ChosenCharacter.Friends = client.GetFriendList();
                        ChosenCharacter.Ignores = client.GetIgnoreList();
                        Console.WriteLine($"Got friendlist with {ChosenCharacter.Friends.TotalFriends} friends and ignorelist with {ChosenCharacter.Ignores.TotalIgnores} ignores");

                        ChosenCharacter.ChallengesInfo = client.GetChallenges();
                        Console.WriteLine($"Got info for {ChosenCharacter.ChallengesInfo.TotalChallenges} challenges");
                    }
                    catch
                    {
                    }

                    ChosenCharacter.MailsInfo = client.GetMailInfo();
                    Console.WriteLine($"Got total of {ChosenCharacter.MailsInfo.Total} mails in inbox (unread: {ChosenCharacter.MailsInfo.Unread}, expired: {ChosenCharacter.MailsInfo.Expired})");

                    Dictionary <int, DistrictInfo> districts = client.GetDistricts();
                    Console.WriteLine($"Got {districts.Count} districts");
                    Console.WriteLine();

                    List <InstanceInfo> instances = await client.GetInstances();
                    Console.WriteLine($"Got {instances.Count} instances");

                    instances.ForEach(instance => { Console.WriteLine($"\t-> {districts[instance.DistrictUid].Name}-{instance.InstanceNum} ({instance.Enforcers} Enf, {instance.Criminals} Crim, Threat = {((ThreatType)instance.Threat).ToString()})"); });
                    Console.WriteLine();

                    var instanceToJoin          = (from instance in instances where instance.DistrictStatus == 0 && instance.Threat == (int)ChosenCharacter.Threat select instance).OrderBy(s => s.Criminals + s.Enforcers).First();
                    string inst                 = districts[instanceToJoin.DistrictUid].Name + "-" + instanceToJoin.InstanceNum;
                    DistrictEnterInfo enterInfo = await client.JoinInstance(instanceToJoin);
                    Console.WriteLine($"Joined {inst}");

                    Console.ReadKey();
                    client.Disconnect();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    Console.ReadKey();
                }
            }).Wait();
        }
示例#9
0
        static async Task ScrapeForAccountCharacter(int accountIndex, int characterIndex, InfluxDb influxClient, WatcherConfig config, HardwareStore hw, ISocketFactory sf)
        {
            var defaultTimeout = new TimeSpan(0, 0, 30);
            var client         = new APBClient.APBClient(config.ApbAccounts[accountIndex]["username"], config.ApbAccounts[accountIndex]["password"], hw, sf);

            await TimeoutAfter(client.Login(), defaultTimeout);

            Console.WriteLine("Logged In!");
            List <CharacterInfo> characters = client.GetCharacters();

            Console.WriteLine("Got characters!");
            List <WorldInfo> worlds = await TimeoutAfter(client.GetWorlds(), defaultTimeout);

            Console.WriteLine("Received worlds!");
            CharacterInfo       chosenCharacter = characters[characterIndex];
            FinalWorldEnterData worldEnterData  = await TimeoutAfter(client.EnterWorld(chosenCharacter.SlotNumber), defaultTimeout);

            Console.WriteLine("Connected to world!");
            Dictionary <int, DistrictInfo> districts = client.GetDistricts();

            Console.WriteLine("Got districts");
            List <InstanceInfo> instances = await TimeoutAfter(client.GetInstances(), defaultTimeout);

            Console.WriteLine("Recieved instances");

            int totalCriminals = 0;
            int totalEnforcers = 0;

            foreach (var instance in instances)
            {
                string name = "UNKNOWN";
                try
                {
                    name = districts[instance.DistrictUid].Name;
                }
                catch (Exception e)
                {
                }

                Console.WriteLine(String.Format("DistrictUID={0}, SDD={1:X}, Instance={2}, Threat={3}, Crims={4}, Enfs={5}, Status={6}, World={7} ({8})", instance.DistrictUid, districts[instance.DistrictUid].DistrictInstanceTypeSdd, instance.InstanceNum, instance.Threat, instance.Criminals, instance.Enforcers, instance.DistrictStatus, chosenCharacter.WorldUID, name));

                totalCriminals += instance.Criminals;
                totalEnforcers += instance.Enforcers;

                var point = BuildPoint(instance, districts[instance.DistrictUid], chosenCharacter);
                var resp  = await influxClient.WriteAsync("apb", point);
            }

            var aggPoint = BuildAggregatePoint(chosenCharacter.WorldUID, instances.Count, totalEnforcers, totalCriminals);
            var resp2    = await influxClient.WriteAsync("apb", aggPoint);

            client.Disconnect();
        }
示例#10
0
        static void DistrictTest()
        {
            WatcherConfig config;

            using (var configReader = File.OpenText("watcher_conf.yml"))
            {
                var deserializer = new Deserializer();
                config = deserializer.Deserialize <WatcherConfig>(configReader);
            }

            HardwareStore hw;

            using (TextReader reader = File.OpenText("hw.yml"))
            {
                hw = new HardwareStore(reader);
            }

            ISocketFactory sf = new ProxySocketFactory("127.0.0.1", 9150, null, null);

            Task.Run(async() =>
            {
                var client = new APBClient.APBClient(config.ApbAccounts[3]["username"], config.ApbAccounts[3]["password"], hw, sf);
                await client.Login();
                Console.WriteLine("Logged In!");
                List <CharacterInfo> characters = client.GetCharacters();
                Console.WriteLine("Got characters!");
                List <WorldInfo> worlds = await client.GetWorlds();
                Console.WriteLine("Received worlds!");
                CharacterInfo chosenCharacter      = characters[0];
                FinalWorldEnterData worldEnterData = await client.EnterWorld(chosenCharacter.SlotNumber);
                Console.WriteLine("Connected to world!");
                Dictionary <int, DistrictInfo> districts = client.GetDistricts();
                Console.WriteLine("Got districts");
                List <InstanceInfo> instances = await client.GetInstances();
                Console.WriteLine("Recieved instances");

                foreach (var instance in instances)
                {
                    string name = "UNKNOWN";
                    try
                    {
                        name = districts[instance.DistrictUid].Name;
                    }
                    catch (Exception e)
                    {
                    }

                    Console.WriteLine(
                        String.Format(
                            "DistrictUID={0}, SDD={1:X}, Instance={2}, Threat={3}, Crims={4}, Enfs={5}, Status={6}, World={7} ({8})",
                            instance.DistrictUid, districts[instance.DistrictUid].DistrictInstanceTypeSdd,
                            instance.InstanceNum, instance.Threat, instance.Criminals, instance.Enforcers,
                            instance.DistrictStatus, chosenCharacter.WorldUID, name));
                }

                var instanceToJoin = (from instance in instances
                                      where instance.DistrictStatus == 0 && instance.Threat == 1
                                      select instance).OrderBy(s => s.Criminals + s.Enforcers).First();

                Console.WriteLine(
                    String.Format(
                        "JOINING DistrictUID={0}, SDD={1:X}, Instance={2}, Threat={3}, Crims={4}, Enfs={5}, Status={6}, World={7}",
                        instanceToJoin.DistrictUid, districts[instanceToJoin.DistrictUid].DistrictInstanceTypeSdd,
                        instanceToJoin.InstanceNum, instanceToJoin.Threat, instanceToJoin.Criminals, instanceToJoin.Enforcers,
                        instanceToJoin.DistrictStatus, chosenCharacter.WorldUID));

                DistrictEnterInfo enterInfo = await client.JoinInstance(instanceToJoin);

                client.Disconnect();
            }).Wait();
        }
示例#11
0
 public LobbyClient(string username, string password, HardwareStore hw, ISocketFactory socketFactory = null) : base(socketFactory)
 {
     _username      = username;
     _password      = password;
     _hardwareStore = hw;
 }