private static void InsertGopIpLocations() { Console.WriteLine("inserting ip locations"); var csv = new CsvReader(new StreamReader("GeoLiteCity-Location.csv")); csv.Read(); var bsonDocuments = new List<BsonDocument>(); while (csv.Read()) { var document = new BsonDocument(); document.Add(new BsonElement("location_id", int.Parse(csv.GetField(0)))); document.Add(new BsonElement("country", csv.GetField(1))); document.Add(new BsonElement("region", csv.GetField(2))); document.Add(new BsonElement("city_name", csv.GetField(3).ToLower())); document.Add(new BsonElement("city_display_name", csv.GetField(3))); document.Add(new BsonElement("postal_code", csv.GetField(4))); document.Add(new BsonElement("latitude", double.Parse(csv.GetField(5)))); document.Add(new BsonElement("longitude", double.Parse(csv.GetField(6)))); document.Add(new BsonElement("metro_code", string.IsNullOrEmpty(csv.GetField(7)) ? 0 : int.Parse(csv.GetField(7)))); document.Add(new BsonElement("area_code", csv.GetField(8))); bsonDocuments.Add(document); } var geoIpDataProvider = new GeoIpDataProvider(); geoIpDataProvider.InsertGeoIpLocations(bsonDocuments); Console.WriteLine("done"); }
private static void InsertGopIpIpBlocks() { Console.WriteLine("inserting ip blocks"); var csv = new CsvReader(new StreamReader("GeoLiteCity-Blocks.csv")); csv.Read(); var bsonDocuments = new List<BsonDocument>(); while (csv.Read()) { var document = new BsonDocument(); document.Add(new BsonElement("start_ip_num", long.Parse(csv.GetField(0)))); document.Add(new BsonElement("end_ip_num", long.Parse(csv.GetField(1)))); document.Add(new BsonElement("location_id", int.Parse(csv.GetField(2)))); bsonDocuments.Add(document); } var geoIpDataProvider = new GeoIpDataProvider(); geoIpDataProvider.InsertGeoIpBlocks(bsonDocuments); Console.WriteLine("done"); }
public ProviderBase() { _localizationDataProvider = new LocalizationDataProvider(); _appsDataProvider = new AppsDataProvider(); _facebookDataProvider = new FacebookDataProvider(); _userDataProvider = new UserDataProvider(); _userFavoritesDataProvider = new UserFavoritesDataProvider(); _userMessagesDataProvider = new UserMessagesDataProvider(); _userVisitsDataProvider = new UserVisitsDataProvider(); _userLikesDataProvider = new UserLikesDataProvider(); _geoIpDataProvider = new GeoIpDataProvider(); }
private bool IsAllowedToSeeContent() { if (!bool.Parse(ConfigurationManager.AppSettings["EnableGeoBlocking"])) return true; long facebookUserId = 0; if (Request.Form.signed_request != null) { var signedRequest = Request.Form.signed_request; var parsedRequest = new FacebookClient().ParseSignedRequest("549eeee523fbf171723433b118a14d8b", signedRequest); if (((JsonObject)parsedRequest).ContainsKey("user_id")) facebookUserId = long.Parse((string)((JsonObject)parsedRequest)["user_id"]); } if (facebookUserId == 0) return true; var geoIpDataProvider = new GeoIpDataProvider(); var usersDataProvider = new UserDataProvider(); var ipsWhiteList = geoIpDataProvider.GetWhiteListedIps(); var usersWhiteList = usersDataProvider.GetUsersWhitelist("gokapara-newyork"); var userIp = Request.UserHostAddress; if (ipsWhiteList.Exists(z => z["ip"].AsString == userIp)) return true; if (usersWhiteList.Exists(z => z == facebookUserId)) return true; BsonDocument geoLocation = null; try { geoLocation = geoIpDataProvider.GetIpLocationInfo(userIp, "country"); } catch (Exception ex) { _logger.Error(ex); } string userCountry = geoLocation != null ? geoLocation["country"].AsString : null; if (!string.IsNullOrEmpty(userCountry) && userCountry != "IL") return true; return false; }