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); } }
public ActionResult DeleteConfirmed(int id) { HardwareStore hardwareStore = db.HardwareStores.Find(id); db.HardwareStores.Remove(hardwareStore); db.SaveChanges(); return(RedirectToAction("Index")); }
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)); }
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)); }
// 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)); }
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); }
public void GetsCorrectHammers(int min, int max, IEnumerable <int> expected) { Assert.Equal(expected, HardwareStore.GetHammers(min, max)); }
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(); }
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(); }
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(); }
public LobbyClient(string username, string password, HardwareStore hw, ISocketFactory socketFactory = null) : base(socketFactory) { _username = username; _password = password; _hardwareStore = hw; }