コード例 #1
0
ファイル: Program.cs プロジェクト: xoperator/GoKapara
        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");
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: xoperator/GoKapara
        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");
        }
コード例 #3
0
ファイル: ProviderBase.cs プロジェクト: xoperator/GoKapara
 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();
 }
コード例 #4
0
ファイル: UIModule.cs プロジェクト: xoperator/GoKapara
        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;
        }