public void Start() { _webSocketServer = new WebSocketServer(); SuperSocket.SocketBase.Config.RootConfig rootConfig = new SuperSocket.SocketBase.Config.RootConfig(); var serverConfig = new SuperSocket.SocketBase.Config.ServerConfig(); serverConfig.Name = "PokeFeeder"; serverConfig.ServerTypeName = "WebSocketService"; serverConfig.Ip = "Any"; serverConfig.Port = GlobalSettings.OutgoingServerPort; serverConfig.MaxRequestLength = 4096; serverConfig.MaxConnectionNumber = 100 * 1000; serverConfig.SendingQueueSize = 25; serverConfig.SendTimeOut = 5000; var socketServerFactory = new SuperSocket.SocketEngine.SocketServerFactory(); _webSocketServer.Setup(rootConfig, serverConfig, socketServerFactory); _webSocketServer.Start(); _webSocketServer.NewMessageReceived += new SessionHandler <WebSocketSession, string>(socketServer_NewMessageReceived); _webSocketServer.NewSessionConnected += socketServer_NewSessionConnected; _webSocketServer.SessionClosed += socketServer_SessionClosed; UpdateTitle(); var pokemonIds = GlobalSettings.UseFilter ? PokemonParser.ParsePokemons(new List <string>(GlobalSettings.PokekomsToFeedFilter)) : Enum.GetValues(typeof(PokemonId)).Cast <PokemonId>().ToList(); _serverUploadFilter = ServerUploadFilterFactory.Create(pokemonIds); }
public static List <SniperInfo> FilterNonAvailableAndUpdateMissingPokemonId(List <SniperInfo> sniperInfos) { if (!GlobalSettings.VerifyOnSkiplagged) { return(sniperInfos); } var newSniperInfos = new List <SniperInfo>(); var filteredSniperInfos = SkipLaggedCache.FindUnSentMessages(sniperInfos); foreach (var sniperInfo in filteredSniperInfos) { var scanResult = ScanLocation(new GeoCoordinates(sniperInfo.Latitude, sniperInfo.Longitude)); if (scanResult.Status == "fail" || scanResult.Status == "error") { sniperInfo.Verified = false; newSniperInfos.Add(sniperInfo); } else if (scanResult.pokemons != null) { var st = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); var t = DateTime.Now.ToUniversalTime() - st; var currentTimestamp = t.TotalMilliseconds; var pokemonsToFeed = PokemonParser.ParsePokemons(GlobalSettings.PokekomsToFeedFilter); var filteredPokemon = scanResult.pokemons.Where(q => pokemonsToFeed.Contains(PokemonParser.ParseById(q.pokemon_id))); var notExpiredPokemon = filteredPokemon.Where(q => q.expires < currentTimestamp); if (notExpiredPokemon.Any()) { foreach (var pokemonLocation in notExpiredPokemon) { SniperInfo newSniperInfo = new SniperInfo(); if (sniperInfo.Id.Equals(pokemonLocation.Id)) { newSniperInfo.IV = sniperInfo.IV; } newSniperInfo.Id = PokemonParser.ParseById(pokemonLocation.pokemon_id); newSniperInfo.Latitude = pokemonLocation.latitude; newSniperInfo.Longitude = pokemonLocation.longitude; newSniperInfo.Verified = true; newSniperInfo.ExpirationTimestamp = FromUnixTime(pokemonLocation.expires); newSniperInfos.Add(newSniperInfo); } } else { Log.Trace($"No snipable pokemon found at {sniperInfo.Latitude.ToString(CultureInfo.InvariantCulture)},{sniperInfo.Longitude.ToString(CultureInfo.InvariantCulture)}"); } } } return(newSniperInfos); }
public static Filter Create(List <DiscordChannels> discordChannels = null) { List <PokemonId> pokemons = GlobalSettings.UseFilter ? PokemonParser.ParsePokemons(new List <string>(GlobalSettings.PokekomsToFeedFilter)) : Enum.GetValues(typeof(PokemonId)).Cast <PokemonId>().ToList(); var pokemonsBinary = PokemonFilterToBinary.ToBinary(pokemons); List <Channel> channelInfos = new List <Channel>(); if (discordChannels != null && discordChannels.Any()) { foreach (DiscordChannels discordChannel in discordChannels) { channelInfos.Add(new Channel() { Server = discordChannel.Server, ChannelName = discordChannel.Name }); } } if (GlobalSettings.UsePokeSnipers) { channelInfos.Add(new Channel() { Server = PokeSnipersRarePokemonRepository.Channel }); } if (GlobalSettings.UsePokemonGoIVClub) { channelInfos.Add(new Channel() { Server = PokemonGoIVClubRarePokemonRepository.Channel }); } if (GlobalSettings.UsePokewatchers) { channelInfos.Add(new Channel() { Server = PokeWatchersRarePokemonRepository.Channel }); } if (GlobalSettings.UseTrackemon) { channelInfos.Add(new Channel() { Server = TrackemonRarePokemonRepository.Channel }); } if (GlobalSettings.UsePokezz) { channelInfos.Add(new Channel() { Server = PokezzRarePokemonRepository.Channel }); } if (GlobalSettings.UsePokeSnipe) { channelInfos.Add(new Channel() { Server = PokeSnipeRarePokemonRepository.Channel }); } channelInfos.Add(new Channel() { Server = Constants.PogoFeeder }); channelInfos.Add(new Channel() { Server = Constants.Bot }); var filter = new Filter(); filter.Channels = channelInfos; filter.Pokemon = pokemonsBinary; filter.VerifiedOnly = GlobalSettings.VerifiedOnly; filter.Version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); filter.AreaBounds = GlobalSettings.UseGeoLocationBoundsFilter ? GlobalSettings.GeoLocationBounds : null; filter.MinimumIV = GlobalSettings.MinimumIV; filter.UnverifiedOnly = GlobalSettings.UnverifiedOnly; filter.UseUploadedPokemon = GlobalSettings.UseUploadedPokemon; filter.PokemonNotInFilterMinimumIV = GlobalSettings.PokemonNotInFilterMinimumIV; return(filter); }
public List <SniperInfo> FilterNonAvailableAndUpdateMissingPokemonId(List <SniperInfo> sniperInfos) { if (!GlobalSettings.VerifyOnSkiplagged) { return(sniperInfos); } if (!_skipLaggedWorking) { Log.Debug($"Skiplagged is marked as down, not checking {sniperInfos.Count} sniperInfos"); return(sniperInfos); } var newSniperInfos = new List <SniperInfo>(); foreach (var sniperInfo in sniperInfos) { if (sniperInfo.Verified) { newSniperInfos.Add(sniperInfo); continue; } var scanResult = ScanLocation(new GeoCoordinates(sniperInfo.Latitude, sniperInfo.Longitude)); if (scanResult.Status == "fail" || scanResult.Status == "error" || scanResult.pokemons == null || !scanResult.pokemons.Any()) { sniperInfo.Verified = false; newSniperInfos.Add(sniperInfo); } else if (scanResult.pokemons != null && scanResult.pokemons.Any()) { var st = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); var t = DateTime.Now.ToUniversalTime() - st; var currentTimestamp = t.TotalMilliseconds; var pokemonsToFeed = PokemonParser.ParsePokemons(GlobalSettings.PokekomsToFeedFilter); var filteredPokemon = scanResult.pokemons.Where(q => pokemonsToFeed.Contains(PokemonParser.ParseById(q.pokemon_id))); var notExpiredPokemon = filteredPokemon.Where(q => q.expires < currentTimestamp).ToList(); if (notExpiredPokemon.Any()) { foreach (var pokemonLocation in notExpiredPokemon) { var newSniperInfo = new SniperInfo(); if (((long)sniperInfo.Id).Equals(pokemonLocation.Id)) { newSniperInfo.IV = sniperInfo.IV; } newSniperInfo.Id = PokemonParser.ParseById(pokemonLocation.pokemon_id); newSniperInfo.Latitude = Math.Round(pokemonLocation.latitude, 7); newSniperInfo.Longitude = Math.Round(pokemonLocation.longitude, 7); newSniperInfo.Verified = true; newSniperInfo.VerifiedOn = DateTime.Now; newSniperInfo.ChannelInfo = sniperInfo.ChannelInfo; var timeStamp = FromUnixTime(pokemonLocation.expires); newSniperInfo.ExpirationTimestamp = DateTime.Now.AddMinutes(Constants.MaxExpirationInTheFuture) < timeStamp?DateTime.Now.AddMinutes(Constants.MaxExpirationInTheFuture) : timeStamp; newSniperInfos.Add(newSniperInfo); } } else { sniperInfo.Verified = false; newSniperInfos.Add(sniperInfo); Log.Trace( $"No snipable pokemon found at {sniperInfo.Latitude.ToString(CultureInfo.InvariantCulture)},{sniperInfo.Longitude.ToString(CultureInfo.InvariantCulture)}"); } } } return(newSniperInfos); }