[-] Core : maxmind geoip API was outdated #PSCFV-5941
This commit is contained in:
+388
-205
@@ -20,84 +20,106 @@
|
|||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* PrestaShop
|
/*
|
||||||
Test if functions and defines are already defined
|
* Hack PrestaShop because some users may use mod_geoip with this lib and it will cause a crash
|
||||||
END
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('GEOIP_COUNTRY_BEGIN'))
|
if (!defined("GEOIP_COUNTRY_BEGIN"))
|
||||||
define("GEOIP_COUNTRY_BEGIN", 16776960);
|
define("GEOIP_COUNTRY_BEGIN", 16776960);
|
||||||
if (!defined('GEOIP_STATE_BEGIN_REV0'))
|
if (!defined("GEOIP_STATE_BEGIN_REV0"))
|
||||||
define("GEOIP_STATE_BEGIN_REV0", 16700000);
|
define("GEOIP_STATE_BEGIN_REV0", 16700000);
|
||||||
if (!defined('GEOIP_STATE_BEGIN_REV1'))
|
if (!defined("GEOIP_STATE_BEGIN_REV1"))
|
||||||
define("GEOIP_STATE_BEGIN_REV1", 16000000);
|
define("GEOIP_STATE_BEGIN_REV1", 16000000);
|
||||||
if (!defined('GEOIP_STANDARD'))
|
if (!defined("GEOIP_STANDARD"))
|
||||||
define("GEOIP_STANDARD", 0);
|
define("GEOIP_STANDARD", 0);
|
||||||
if (!defined('GEOIP_MEMORY_CACHE'))
|
if (!defined("GEOIP_MEMORY_CACHE"))
|
||||||
define("GEOIP_MEMORY_CACHE", 1);
|
define("GEOIP_MEMORY_CACHE", 1);
|
||||||
if (!defined('GEOIP_SHARED_MEMORY'))
|
if (!defined("GEOIP_SHARED_MEMORY"))
|
||||||
define("GEOIP_SHARED_MEMORY", 2);
|
define("GEOIP_SHARED_MEMORY", 2);
|
||||||
if (!defined('STRUCTURE_INFO_MAX_SIZE'))
|
if (!defined("STRUCTURE_INFO_MAX_SIZE"))
|
||||||
define("STRUCTURE_INFO_MAX_SIZE", 20);
|
define("STRUCTURE_INFO_MAX_SIZE", 20);
|
||||||
if (!defined('DATABASE_INFO_MAX_SIZE'))
|
if (!defined("DATABASE_INFO_MAX_SIZE"))
|
||||||
define("DATABASE_INFO_MAX_SIZE", 100);
|
define("DATABASE_INFO_MAX_SIZE", 100);
|
||||||
if (!defined('GEOIP_COUNTRY_EDITION'))
|
if (!defined("GEOIP_COUNTRY_EDITION"))
|
||||||
define("GEOIP_COUNTRY_EDITION", 106);
|
define("GEOIP_COUNTRY_EDITION", 106);
|
||||||
if (!defined('GEOIP_PROXY_EDITION'))
|
if (!defined("GEOIP_PROXY_EDITION"))
|
||||||
define("GEOIP_PROXY_EDITION", 8);
|
define("GEOIP_PROXY_EDITION", 8);
|
||||||
if (!defined('GEOIP_ASNUM_EDITION'))
|
if (!defined("GEOIP_ASNUM_EDITION"))
|
||||||
define("GEOIP_ASNUM_EDITION", 9);
|
define("GEOIP_ASNUM_EDITION", 9);
|
||||||
if (!defined('GEOIP_NETSPEED_EDITION'))
|
if (!defined("GEOIP_NETSPEED_EDITION"))
|
||||||
define("GEOIP_NETSPEED_EDITION", 10);
|
define("GEOIP_NETSPEED_EDITION", 10);
|
||||||
if (!defined('GEOIP_REGION_EDITION_REV0'))
|
if (!defined("GEOIP_REGION_EDITION_REV0"))
|
||||||
define("GEOIP_REGION_EDITION_REV0", 112);
|
define("GEOIP_REGION_EDITION_REV0", 112);
|
||||||
if (!defined('GEOIP_REGION_EDITION_REV1'))
|
if (!defined("GEOIP_REGION_EDITION_REV1"))
|
||||||
define("GEOIP_REGION_EDITION_REV1", 3);
|
define("GEOIP_REGION_EDITION_REV1", 3);
|
||||||
if (!defined('GEOIP_CITY_EDITION_REV0'))
|
if (!defined("GEOIP_CITY_EDITION_REV0"))
|
||||||
define("GEOIP_CITY_EDITION_REV0", 111);
|
define("GEOIP_CITY_EDITION_REV0", 111);
|
||||||
if (!defined('GEOIP_CITY_EDITION_REV1'))
|
if (!defined("GEOIP_CITY_EDITION_REV1"))
|
||||||
define("GEOIP_CITY_EDITION_REV1", 2);
|
define("GEOIP_CITY_EDITION_REV1", 2);
|
||||||
if (!defined('GEOIP_ORG_EDITION'))
|
if (!defined("GEOIP_ORG_EDITION"))
|
||||||
define("GEOIP_ORG_EDITION", 110);
|
define("GEOIP_ORG_EDITION", 110);
|
||||||
if (!defined('GEOIP_ISP_EDITION'))
|
if (!defined("GEOIP_ISP_EDITION"))
|
||||||
define("GEOIP_ISP_EDITION", 4);
|
define("GEOIP_ISP_EDITION", 4);
|
||||||
if (!defined('SEGMENT_RECORD_LENGTH'))
|
if (!defined("SEGMENT_RECORD_LENGTH"))
|
||||||
define("SEGMENT_RECORD_LENGTH", 3);
|
define("SEGMENT_RECORD_LENGTH", 3);
|
||||||
if (!defined('STANDARD_RECORD_LENGTH'))
|
if (!defined("STANDARD_RECORD_LENGTH"))
|
||||||
define("STANDARD_RECORD_LENGTH", 3);
|
define("STANDARD_RECORD_LENGTH", 3);
|
||||||
if (!defined('ORG_RECORD_LENGTH'))
|
if (!defined("ORG_RECORD_LENGTH"))
|
||||||
define("ORG_RECORD_LENGTH", 4);
|
define("ORG_RECORD_LENGTH", 4);
|
||||||
if (!defined('MAX_RECORD_LENGTH'))
|
if (!defined("MAX_RECORD_LENGTH"))
|
||||||
define("MAX_RECORD_LENGTH", 4);
|
define("MAX_RECORD_LENGTH", 4);
|
||||||
if (!defined('MAX_ORG_RECORD_LENGTH'))
|
if (!defined("MAX_ORG_RECORD_LENGTH"))
|
||||||
define("MAX_ORG_RECORD_LENGTH", 300);
|
define("MAX_ORG_RECORD_LENGTH", 300);
|
||||||
if (!defined('GEOIP_SHM_KEY'))
|
if (!defined("GEOIP_SHM_KEY"))
|
||||||
define("GEOIP_SHM_KEY", 0x4f415401);
|
define("GEOIP_SHM_KEY", 0x4f415401);
|
||||||
if (!defined('US_OFFSET'))
|
if (!defined("US_OFFSET"))
|
||||||
define("US_OFFSET", 1);
|
define("US_OFFSET", 1);
|
||||||
if (!defined('CANADA_OFFSET'))
|
if (!defined("CANADA_OFFSET"))
|
||||||
define("CANADA_OFFSET", 677);
|
define("CANADA_OFFSET", 677);
|
||||||
if (!defined('WORLD_OFFSET'))
|
if (!defined("WORLD_OFFSET"))
|
||||||
define("WORLD_OFFSET", 1353);
|
define("WORLD_OFFSET", 1353);
|
||||||
if (!defined('FIPS_RANGE'))
|
if (!defined("FIPS_RANGE"))
|
||||||
define("FIPS_RANGE", 360);
|
define("FIPS_RANGE", 360);
|
||||||
if (!defined('GEOIP_UNKNOWN_SPEED'))
|
if (!defined("GEOIP_UNKNOWN_SPEED"))
|
||||||
define("GEOIP_UNKNOWN_SPEED", 0);
|
define("GEOIP_UNKNOWN_SPEED", 0);
|
||||||
if (!defined('GEOIP_DIALUP_SPEED'))
|
if (!defined("GEOIP_DIALUP_SPEED"))
|
||||||
define("GEOIP_DIALUP_SPEED", 1);
|
define("GEOIP_DIALUP_SPEED", 1);
|
||||||
if (!defined('GEOIP_CABLEDSL_SPEED'))
|
if (!defined("GEOIP_CABLEDSL_SPEED"))
|
||||||
define("GEOIP_CABLEDSL_SPEED", 2);
|
define("GEOIP_CABLEDSL_SPEED", 2);
|
||||||
if (!defined('GEOIP_CORPORATE_SPEED'))
|
if (!defined("GEOIP_CORPORATE_SPEED"))
|
||||||
define("GEOIP_CORPORATE_SPEED", 3);
|
define("GEOIP_CORPORATE_SPEED", 3);
|
||||||
if (!defined('GEOIP_DOMAIN_EDITION'))
|
if (!defined("GEOIP_DOMAIN_EDITION"))
|
||||||
define("GEOIP_DOMAIN_EDITION", 11);
|
define("GEOIP_DOMAIN_EDITION", 11);
|
||||||
if (!defined('GEOIP_LOCATIONA_EDITION'))
|
if (!defined("GEOIP_COUNTRY_EDITION_V6"))
|
||||||
|
define("GEOIP_COUNTRY_EDITION_V6", 12);
|
||||||
|
if (!defined("GEOIP_LOCATIONA_EDITION"))
|
||||||
define("GEOIP_LOCATIONA_EDITION", 13);
|
define("GEOIP_LOCATIONA_EDITION", 13);
|
||||||
if (!defined('GEOIP_ACCURACYRADIUS_EDITION'))
|
if (!defined("GEOIP_ACCURACYRADIUS_EDITION"))
|
||||||
define("GEOIP_ACCURACYRADIUS_EDITION", 14);
|
define("GEOIP_ACCURACYRADIUS_EDITION", 14);
|
||||||
if (!defined('GEOIP_CITYCOMBINED_EDITION'))
|
if (!defined("GEOIP_CITYCOMBINED_EDITION"))
|
||||||
define("GEOIP_CITYCOMBINED_EDITION", 15);
|
define("GEOIP_CITYCOMBINED_EDITION", 15);
|
||||||
if (!defined('CITYCOMBINED_FIXED_RECORD'))
|
if (!defined("GEOIP_CITY_EDITION_REV1_V6"))
|
||||||
|
define("GEOIP_CITY_EDITION_REV1_V6", 30);
|
||||||
|
if (!defined("GEOIP_CITY_EDITION_REV0_V6"))
|
||||||
|
define("GEOIP_CITY_EDITION_REV0_V6",31);
|
||||||
|
if (!defined("GEOIP_NETSPEED_EDITION_REV1"))
|
||||||
|
define("GEOIP_NETSPEED_EDITION_REV1",32);
|
||||||
|
if (!defined("GEOIP_NETSPEED_EDITION_REV1_V6"))
|
||||||
|
define("GEOIP_NETSPEED_EDITION_REV1_V6",33);
|
||||||
|
if (!defined("GEOIP_USERTYPE_EDITION"))
|
||||||
|
define("GEOIP_USERTYPE_EDITION",28);
|
||||||
|
if (!defined("GEOIP_USERTYPE_EDITION_V6"))
|
||||||
|
define("GEOIP_USERTYPE_EDITION_V6",29);
|
||||||
|
if (!defined("GEOIP_ASNUM_EDITION_V6"))
|
||||||
|
define("GEOIP_ASNUM_EDITION_V6",21);
|
||||||
|
if (!defined("GEOIP_ISP_EDITION_V6"))
|
||||||
|
define("GEOIP_ISP_EDITION_V6",22);
|
||||||
|
if (!defined("GEOIP_ORG_EDITION_V6"))
|
||||||
|
define("GEOIP_ORG_EDITION_V6",23);
|
||||||
|
if (!defined("GEOIP_DOMAIN_EDITION_V6"))
|
||||||
|
define("GEOIP_DOMAIN_EDITION_V6",24);
|
||||||
|
|
||||||
|
if (!defined("CITYCOMBINED_FIXED_RECORD"))
|
||||||
define("CITYCOMBINED_FIXED_RECORD", 7 );
|
define("CITYCOMBINED_FIXED_RECORD", 7 );
|
||||||
|
|
||||||
class GeoIP {
|
class GeoIP {
|
||||||
@@ -110,7 +132,7 @@ class GeoIP {
|
|||||||
var $shmid;
|
var $shmid;
|
||||||
var $GEOIP_COUNTRY_CODE_TO_NUMBER = array(
|
var $GEOIP_COUNTRY_CODE_TO_NUMBER = array(
|
||||||
"" => 0, "AP" => 1, "EU" => 2, "AD" => 3, "AE" => 4, "AF" => 5,
|
"" => 0, "AP" => 1, "EU" => 2, "AD" => 3, "AE" => 4, "AF" => 5,
|
||||||
"AG" => 6, "AI" => 7, "AL" => 8, "AM" => 9, "AN" => 10, "AO" => 11,
|
"AG" => 6, "AI" => 7, "AL" => 8, "AM" => 9, "CW" => 10, "AO" => 11,
|
||||||
"AQ" => 12, "AR" => 13, "AS" => 14, "AT" => 15, "AU" => 16, "AW" => 17,
|
"AQ" => 12, "AR" => 13, "AS" => 14, "AT" => 15, "AU" => 16, "AW" => 17,
|
||||||
"AZ" => 18, "BA" => 19, "BB" => 20, "BD" => 21, "BE" => 22, "BF" => 23,
|
"AZ" => 18, "BA" => 19, "BB" => 20, "BD" => 21, "BE" => 22, "BF" => 23,
|
||||||
"BG" => 24, "BH" => 25, "BI" => 26, "BJ" => 27, "BM" => 28, "BN" => 29,
|
"BG" => 24, "BH" => 25, "BI" => 26, "BJ" => 27, "BM" => 28, "BN" => 29,
|
||||||
@@ -121,7 +143,7 @@ class GeoIP {
|
|||||||
"CY" => 54, "CZ" => 55, "DE" => 56, "DJ" => 57, "DK" => 58, "DM" => 59,
|
"CY" => 54, "CZ" => 55, "DE" => 56, "DJ" => 57, "DK" => 58, "DM" => 59,
|
||||||
"DO" => 60, "DZ" => 61, "EC" => 62, "EE" => 63, "EG" => 64, "EH" => 65,
|
"DO" => 60, "DZ" => 61, "EC" => 62, "EE" => 63, "EG" => 64, "EH" => 65,
|
||||||
"ER" => 66, "ES" => 67, "ET" => 68, "FI" => 69, "FJ" => 70, "FK" => 71,
|
"ER" => 66, "ES" => 67, "ET" => 68, "FI" => 69, "FJ" => 70, "FK" => 71,
|
||||||
"FM" => 72, "FO" => 73, "FR" => 74, "FX" => 75, "GA" => 76, "GB" => 77,
|
"FM" => 72, "FO" => 73, "FR" => 74, "SX" => 75, "GA" => 76, "GB" => 77,
|
||||||
"GD" => 78, "GE" => 79, "GF" => 80, "GH" => 81, "GI" => 82, "GL" => 83,
|
"GD" => 78, "GE" => 79, "GF" => 80, "GH" => 81, "GI" => 82, "GL" => 83,
|
||||||
"GM" => 84, "GN" => 85, "GP" => 86, "GQ" => 87, "GR" => 88, "GS" => 89,
|
"GM" => 84, "GN" => 85, "GP" => 86, "GQ" => 87, "GR" => 88, "GS" => 89,
|
||||||
"GT" => 90, "GU" => 91, "GW" => 92, "GY" => 93, "HK" => 94, "HM" => 95,
|
"GT" => 90, "GU" => 91, "GW" => 92, "GY" => 93, "HK" => 94, "HM" => 95,
|
||||||
@@ -151,138 +173,124 @@ class GeoIP {
|
|||||||
"VU" => 234, "WF" => 235, "WS" => 236, "YE" => 237, "YT" => 238, "RS" => 239,
|
"VU" => 234, "WF" => 235, "WS" => 236, "YE" => 237, "YT" => 238, "RS" => 239,
|
||||||
"ZA" => 240, "ZM" => 241, "ME" => 242, "ZW" => 243, "A1" => 244, "A2" => 245,
|
"ZA" => 240, "ZM" => 241, "ME" => 242, "ZW" => 243, "A1" => 244, "A2" => 245,
|
||||||
"O1" => 246, "AX" => 247, "GG" => 248, "IM" => 249, "JE" => 250, "BL" => 251,
|
"O1" => 246, "AX" => 247, "GG" => 248, "IM" => 249, "JE" => 250, "BL" => 251,
|
||||||
"MF" => 252
|
"MF" => 252, "BQ" => 253,
|
||||||
);
|
);
|
||||||
var $GEOIP_COUNTRY_CODES = array(
|
var $GEOIP_COUNTRY_CODES = array(
|
||||||
"", "AP", "EU", "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AN", "AO", "AQ",
|
"","AP","EU","AD","AE","AF","AG","AI","AL","AM","CW",
|
||||||
"AR", "AS", "AT", "AU", "AW", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH",
|
"AO","AQ","AR","AS","AT","AU","AW","AZ","BA","BB",
|
||||||
"BI", "BJ", "BM", "BN", "BO", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA",
|
"BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO",
|
||||||
"CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU",
|
"BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD",
|
||||||
"CV", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG",
|
"CF","CG","CH","CI","CK","CL","CM","CN","CO","CR",
|
||||||
"EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "FX", "GA", "GB",
|
"CU","CV","CX","CY","CZ","DE","DJ","DK","DM","DO",
|
||||||
"GD", "GE", "GF", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT",
|
"DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ",
|
||||||
"GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IN",
|
"FK","FM","FO","FR","SX","GA","GB","GD","GE","GF",
|
||||||
"IO", "IQ", "IR", "IS", "IT", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM",
|
"GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT",
|
||||||
"KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS",
|
"GU","GW","GY","HK","HM","HN","HR","HT","HU","ID",
|
||||||
"LT", "LU", "LV", "LY", "MA", "MC", "MD", "MG", "MH", "MK", "ML", "MM", "MN",
|
"IE","IL","IN","IO","IQ","IR","IS","IT","JM","JO",
|
||||||
"MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA",
|
"JP","KE","KG","KH","KI","KM","KN","KP","KR","KW",
|
||||||
"NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA",
|
"KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT",
|
||||||
"PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY",
|
"LU","LV","LY","MA","MC","MD","MG","MH","MK","ML",
|
||||||
"QA", "RE", "RO", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI",
|
"MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV",
|
||||||
"SJ", "SK", "SL", "SM", "SN", "SO", "SR", "ST", "SV", "SY", "SZ", "TC", "TD",
|
"MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI",
|
||||||
"TF", "TG", "TH", "TJ", "TK", "TM", "TN", "TO", "TL", "TR", "TT", "TV", "TW",
|
"NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF",
|
||||||
"TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN",
|
"PG","PH","PK","PL","PM","PN","PR","PS","PT","PW",
|
||||||
"VU", "WF", "WS", "YE", "YT", "RS", "ZA", "ZM", "ME", "ZW", "A1", "A2", "O1",
|
"PY","QA","RE","RO","RU","RW","SA","SB","SC","SD",
|
||||||
"AX", "GG", "IM", "JE", "BL", "MF"
|
"SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO",
|
||||||
);
|
"SR","ST","SV","SY","SZ","TC","TD","TF","TG","TH",
|
||||||
|
"TJ","TK","TM","TN","TO","TL","TR","TT","TV","TW",
|
||||||
|
"TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE",
|
||||||
|
"VG","VI","VN","VU","WF","WS","YE","YT","RS","ZA",
|
||||||
|
"ZM","ME","ZW","A1","A2","O1","AX","GG","IM","JE",
|
||||||
|
"BL","MF", "BQ");
|
||||||
var $GEOIP_COUNTRY_CODES3 = array(
|
var $GEOIP_COUNTRY_CODES3 = array(
|
||||||
"","AP","EU","AND","ARE","AFG","ATG","AIA","ALB","ARM","ANT","AGO","ATA","ARG",
|
"","AP","EU","AND","ARE","AFG","ATG","AIA","ALB","ARM","CUW",
|
||||||
"ASM","AUT","AUS","ABW","AZE","BIH","BRB","BGD","BEL","BFA","BGR","BHR","BDI",
|
"AGO","ATA","ARG","ASM","AUT","AUS","ABW","AZE","BIH","BRB",
|
||||||
"BEN","BMU","BRN","BOL","BRA","BHS","BTN","BVT","BWA","BLR","BLZ","CAN","CCK",
|
"BGD","BEL","BFA","BGR","BHR","BDI","BEN","BMU","BRN","BOL",
|
||||||
"COD","CAF","COG","CHE","CIV","COK","CHL","CMR","CHN","COL","CRI","CUB","CPV",
|
"BRA","BHS","BTN","BVT","BWA","BLR","BLZ","CAN","CCK","COD",
|
||||||
"CXR","CYP","CZE","DEU","DJI","DNK","DMA","DOM","DZA","ECU","EST","EGY","ESH",
|
"CAF","COG","CHE","CIV","COK","CHL","CMR","CHN","COL","CRI",
|
||||||
"ERI","ESP","ETH","FIN","FJI","FLK","FSM","FRO","FRA","FX","GAB","GBR","GRD",
|
"CUB","CPV","CXR","CYP","CZE","DEU","DJI","DNK","DMA","DOM",
|
||||||
"GEO","GUF","GHA","GIB","GRL","GMB","GIN","GLP","GNQ","GRC","SGS","GTM","GUM",
|
"DZA","ECU","EST","EGY","ESH","ERI","ESP","ETH","FIN","FJI",
|
||||||
"GNB","GUY","HKG","HMD","HND","HRV","HTI","HUN","IDN","IRL","ISR","IND","IOT",
|
"FLK","FSM","FRO","FRA","SXM","GAB","GBR","GRD","GEO","GUF",
|
||||||
"IRQ","IRN","ISL","ITA","JAM","JOR","JPN","KEN","KGZ","KHM","KIR","COM","KNA",
|
"GHA","GIB","GRL","GMB","GIN","GLP","GNQ","GRC","SGS","GTM",
|
||||||
"PRK","KOR","KWT","CYM","KAZ","LAO","LBN","LCA","LIE","LKA","LBR","LSO","LTU",
|
"GUM","GNB","GUY","HKG","HMD","HND","HRV","HTI","HUN","IDN",
|
||||||
"LUX","LVA","LBY","MAR","MCO","MDA","MDG","MHL","MKD","MLI","MMR","MNG","MAC",
|
"IRL","ISR","IND","IOT","IRQ","IRN","ISL","ITA","JAM","JOR",
|
||||||
"MNP","MTQ","MRT","MSR","MLT","MUS","MDV","MWI","MEX","MYS","MOZ","NAM","NCL",
|
"JPN","KEN","KGZ","KHM","KIR","COM","KNA","PRK","KOR","KWT",
|
||||||
"NER","NFK","NGA","NIC","NLD","NOR","NPL","NRU","NIU","NZL","OMN","PAN","PER",
|
"CYM","KAZ","LAO","LBN","LCA","LIE","LKA","LBR","LSO","LTU",
|
||||||
"PYF","PNG","PHL","PAK","POL","SPM","PCN","PRI","PSE","PRT","PLW","PRY","QAT",
|
"LUX","LVA","LBY","MAR","MCO","MDA","MDG","MHL","MKD","MLI",
|
||||||
"REU","ROU","RUS","RWA","SAU","SLB","SYC","SDN","SWE","SGP","SHN","SVN","SJM",
|
"MMR","MNG","MAC","MNP","MTQ","MRT","MSR","MLT","MUS","MDV",
|
||||||
"SVK","SLE","SMR","SEN","SOM","SUR","STP","SLV","SYR","SWZ","TCA","TCD","ATF",
|
"MWI","MEX","MYS","MOZ","NAM","NCL","NER","NFK","NGA","NIC",
|
||||||
"TGO","THA","TJK","TKL","TLS","TKM","TUN","TON","TUR","TTO","TUV","TWN","TZA",
|
"NLD","NOR","NPL","NRU","NIU","NZL","OMN","PAN","PER","PYF",
|
||||||
"UKR","UGA","UMI","USA","URY","UZB","VAT","VCT","VEN","VGB","VIR","VNM","VUT",
|
"PNG","PHL","PAK","POL","SPM","PCN","PRI","PSE","PRT","PLW",
|
||||||
"WLF","WSM","YEM","MYT","SRB","ZAF","ZMB","MNE","ZWE","A1","A2","O1",
|
"PRY","QAT","REU","ROU","RUS","RWA","SAU","SLB","SYC","SDN",
|
||||||
"ALA","GGY","IMN","JEY","BLM","MAF"
|
"SWE","SGP","SHN","SVN","SJM","SVK","SLE","SMR","SEN","SOM",
|
||||||
|
"SUR","STP","SLV","SYR","SWZ","TCA","TCD","ATF","TGO","THA",
|
||||||
|
"TJK","TKL","TKM","TUN","TON","TLS","TUR","TTO","TUV","TWN",
|
||||||
|
"TZA","UKR","UGA","UMI","USA","URY","UZB","VAT","VCT","VEN",
|
||||||
|
"VGB","VIR","VNM","VUT","WLF","WSM","YEM","MYT","SRB","ZAF",
|
||||||
|
"ZMB","MNE","ZWE","A1","A2","O1","ALA","GGY","IMN","JEY",
|
||||||
|
"BLM","MAF", "BES"
|
||||||
);
|
);
|
||||||
var $GEOIP_COUNTRY_NAMES = array(
|
var $GEOIP_COUNTRY_NAMES = array(
|
||||||
"", "Asia/Pacific Region", "Europe", "Andorra", "United Arab Emirates",
|
"","Asia/Pacific Region","Europe","Andorra","United Arab Emirates","Afghanistan","Antigua and Barbuda","Anguilla","Albania","Armenia","Curacao",
|
||||||
"Afghanistan", "Antigua and Barbuda", "Anguilla", "Albania", "Armenia",
|
"Angola","Antarctica","Argentina","American Samoa","Austria","Australia","Aruba","Azerbaijan","Bosnia and Herzegovina","Barbados",
|
||||||
"Netherlands Antilles", "Angola", "Antarctica", "Argentina", "American Samoa",
|
"Bangladesh","Belgium","Burkina Faso","Bulgaria","Bahrain","Burundi","Benin","Bermuda","Brunei Darussalam","Bolivia",
|
||||||
"Austria", "Australia", "Aruba", "Azerbaijan", "Bosnia and Herzegovina",
|
"Brazil","Bahamas","Bhutan","Bouvet Island","Botswana","Belarus","Belize","Canada","Cocos (Keeling) Islands","Congo, The Democratic Republic of the",
|
||||||
"Barbados", "Bangladesh", "Belgium", "Burkina Faso", "Bulgaria", "Bahrain",
|
"Central African Republic","Congo","Switzerland","Cote D'Ivoire","Cook Islands","Chile","Cameroon","China","Colombia","Costa Rica",
|
||||||
"Burundi", "Benin", "Bermuda", "Brunei Darussalam", "Bolivia", "Brazil",
|
"Cuba","Cape Verde","Christmas Island","Cyprus","Czech Republic","Germany","Djibouti","Denmark","Dominica","Dominican Republic",
|
||||||
"Bahamas", "Bhutan", "Bouvet Island", "Botswana", "Belarus", "Belize",
|
"Algeria","Ecuador","Estonia","Egypt","Western Sahara","Eritrea","Spain","Ethiopia","Finland","Fiji",
|
||||||
"Canada", "Cocos (Keeling) Islands", "Congo, The Democratic Republic of the",
|
"Falkland Islands (Malvinas)","Micronesia, Federated States of","Faroe Islands","France","Sint Maarten (Dutch part)","Gabon","United Kingdom","Grenada","Georgia","French Guiana",
|
||||||
"Central African Republic", "Congo", "Switzerland", "Cote D'Ivoire", "Cook Islands",
|
"Ghana","Gibraltar","Greenland","Gambia","Guinea","Guadeloupe","Equatorial Guinea","Greece","South Georgia and the South Sandwich Islands","Guatemala",
|
||||||
"Chile", "Cameroon", "China", "Colombia", "Costa Rica", "Cuba", "Cape Verde",
|
"Guam","Guinea-Bissau","Guyana","Hong Kong","Heard Island and McDonald Islands","Honduras","Croatia","Haiti","Hungary","Indonesia",
|
||||||
"Christmas Island", "Cyprus", "Czech Republic", "Germany", "Djibouti",
|
"Ireland","Israel","India","British Indian Ocean Territory","Iraq","Iran, Islamic Republic of","Iceland","Italy","Jamaica","Jordan",
|
||||||
"Denmark", "Dominica", "Dominican Republic", "Algeria", "Ecuador", "Estonia",
|
"Japan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Comoros","Saint Kitts and Nevis","Korea, Democratic People's Republic of","Korea, Republic of","Kuwait",
|
||||||
"Egypt", "Western Sahara", "Eritrea", "Spain", "Ethiopia", "Finland", "Fiji",
|
"Cayman Islands","Kazakhstan","Lao People's Democratic Republic","Lebanon","Saint Lucia","Liechtenstein","Sri Lanka","Liberia","Lesotho","Lithuania",
|
||||||
"Falkland Islands (Malvinas)", "Micronesia, Federated States of", "Faroe Islands",
|
"Luxembourg","Latvia","Libya","Morocco","Monaco","Moldova, Republic of","Madagascar","Marshall Islands","Macedonia","Mali",
|
||||||
"France", "France, Metropolitan", "Gabon", "United Kingdom",
|
"Myanmar","Mongolia","Macau","Northern Mariana Islands","Martinique","Mauritania","Montserrat","Malta","Mauritius","Maldives",
|
||||||
"Grenada", "Georgia", "French Guiana", "Ghana", "Gibraltar", "Greenland",
|
"Malawi","Mexico","Malaysia","Mozambique","Namibia","New Caledonia","Niger","Norfolk Island","Nigeria","Nicaragua",
|
||||||
"Gambia", "Guinea", "Guadeloupe", "Equatorial Guinea", "Greece", "South Georgia and the South Sandwich Islands",
|
"Netherlands","Norway","Nepal","Nauru","Niue","New Zealand","Oman","Panama","Peru","French Polynesia",
|
||||||
"Guatemala", "Guam", "Guinea-Bissau",
|
"Papua New Guinea","Philippines","Pakistan","Poland","Saint Pierre and Miquelon","Pitcairn Islands","Puerto Rico","Palestinian Territory","Portugal","Palau",
|
||||||
"Guyana", "Hong Kong", "Heard Island and McDonald Islands", "Honduras",
|
"Paraguay","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saudi Arabia","Solomon Islands","Seychelles","Sudan",
|
||||||
"Croatia", "Haiti", "Hungary", "Indonesia", "Ireland", "Israel", "India",
|
"Sweden","Singapore","Saint Helena","Slovenia","Svalbard and Jan Mayen","Slovakia","Sierra Leone","San Marino","Senegal","Somalia","Suriname",
|
||||||
"British Indian Ocean Territory", "Iraq", "Iran, Islamic Republic of",
|
"Sao Tome and Principe","El Salvador","Syrian Arab Republic","Swaziland","Turks and Caicos Islands","Chad","French Southern Territories","Togo","Thailand",
|
||||||
"Iceland", "Italy", "Jamaica", "Jordan", "Japan", "Kenya", "Kyrgyzstan",
|
"Tajikistan","Tokelau","Turkmenistan","Tunisia","Tonga","Timor-Leste","Turkey","Trinidad and Tobago","Tuvalu","Taiwan",
|
||||||
"Cambodia", "Kiribati", "Comoros", "Saint Kitts and Nevis", "Korea, Democratic People's Republic of",
|
"Tanzania, United Republic of","Ukraine","Uganda","United States Minor Outlying Islands","United States","Uruguay","Uzbekistan","Holy See (Vatican City State)","Saint Vincent and the Grenadines","Venezuela",
|
||||||
"Korea, Republic of", "Kuwait", "Cayman Islands",
|
"Virgin Islands, British","Virgin Islands, U.S.","Vietnam","Vanuatu","Wallis and Futuna","Samoa","Yemen","Mayotte","Serbia","South Africa",
|
||||||
"Kazakhstan", "Lao People's Democratic Republic", "Lebanon", "Saint Lucia",
|
"Zambia","Montenegro","Zimbabwe","Anonymous Proxy","Satellite Provider","Other","Aland Islands","Guernsey","Isle of Man","Jersey",
|
||||||
"Liechtenstein", "Sri Lanka", "Liberia", "Lesotho", "Lithuania", "Luxembourg",
|
"Saint Barthelemy","Saint Martin", "Bonaire, Saint Eustatius and Saba"
|
||||||
"Latvia", "Libyan Arab Jamahiriya", "Morocco", "Monaco", "Moldova, Republic of",
|
|
||||||
"Madagascar", "Marshall Islands", "Macedonia",
|
|
||||||
"Mali", "Myanmar", "Mongolia", "Macau", "Northern Mariana Islands",
|
|
||||||
"Martinique", "Mauritania", "Montserrat", "Malta", "Mauritius", "Maldives",
|
|
||||||
"Malawi", "Mexico", "Malaysia", "Mozambique", "Namibia", "New Caledonia",
|
|
||||||
"Niger", "Norfolk Island", "Nigeria", "Nicaragua", "Netherlands", "Norway",
|
|
||||||
"Nepal", "Nauru", "Niue", "New Zealand", "Oman", "Panama", "Peru", "French Polynesia",
|
|
||||||
"Papua New Guinea", "Philippines", "Pakistan", "Poland", "Saint Pierre and Miquelon",
|
|
||||||
"Pitcairn Islands", "Puerto Rico", "Palestinian Territory",
|
|
||||||
"Portugal", "Palau", "Paraguay", "Qatar", "Reunion", "Romania",
|
|
||||||
"Russian Federation", "Rwanda", "Saudi Arabia", "Solomon Islands",
|
|
||||||
"Seychelles", "Sudan", "Sweden", "Singapore", "Saint Helena", "Slovenia",
|
|
||||||
"Svalbard and Jan Mayen", "Slovakia", "Sierra Leone", "San Marino", "Senegal",
|
|
||||||
"Somalia", "Suriname", "Sao Tome and Principe", "El Salvador", "Syrian Arab Republic",
|
|
||||||
"Swaziland", "Turks and Caicos Islands", "Chad", "French Southern Territories",
|
|
||||||
"Togo", "Thailand", "Tajikistan", "Tokelau", "Turkmenistan",
|
|
||||||
"Tunisia", "Tonga", "Timor-Leste", "Turkey", "Trinidad and Tobago", "Tuvalu",
|
|
||||||
"Taiwan", "Tanzania, United Republic of", "Ukraine",
|
|
||||||
"Uganda", "United States Minor Outlying Islands", "United States", "Uruguay",
|
|
||||||
"Uzbekistan", "Holy See (Vatican City State)", "Saint Vincent and the Grenadines",
|
|
||||||
"Venezuela", "Virgin Islands, British", "Virgin Islands, U.S.",
|
|
||||||
"Vietnam", "Vanuatu", "Wallis and Futuna", "Samoa", "Yemen", "Mayotte",
|
|
||||||
"Serbia", "South Africa", "Zambia", "Montenegro", "Zimbabwe",
|
|
||||||
"Anonymous Proxy","Satellite Provider","Other",
|
|
||||||
"Aland Islands","Guernsey","Isle of Man","Jersey","Saint Barthelemy","Saint Martin"
|
|
||||||
);
|
);
|
||||||
|
|
||||||
var $GEOIP_CONTINENT_CODES = array(
|
var $GEOIP_CONTINENT_CODES = array(
|
||||||
"--", "AS", "EU", "EU", "AS", "AS", "NA", "NA", "EU", "AS",
|
"--", "AS","EU","EU","AS","AS","NA","NA","EU","AS","NA",
|
||||||
"NA", "AF", "AN", "SA", "OC", "EU", "OC", "NA", "AS", "EU",
|
"AF","AN","SA","OC","EU","OC","NA","AS","EU","NA",
|
||||||
"NA", "AS", "EU", "AF", "EU", "AS", "AF", "AF", "NA", "AS",
|
"AS","EU","AF","EU","AS","AF","AF","NA","AS","SA",
|
||||||
"SA", "SA", "NA", "AS", "AN", "AF", "EU", "NA", "NA", "AS",
|
"SA","NA","AS","AN","AF","EU","NA","NA","AS","AF",
|
||||||
"AF", "AF", "AF", "EU", "AF", "OC", "SA", "AF", "AS", "SA",
|
"AF","AF","EU","AF","OC","SA","AF","AS","SA","NA",
|
||||||
"NA", "NA", "AF", "AS", "AS", "EU", "EU", "AF", "EU", "NA",
|
"NA","AF","AS","AS","EU","EU","AF","EU","NA","NA",
|
||||||
"NA", "AF", "SA", "EU", "AF", "AF", "AF", "EU", "AF", "EU",
|
"AF","SA","EU","AF","AF","AF","EU","AF","EU","OC",
|
||||||
"OC", "SA", "OC", "EU", "EU", "EU", "AF", "EU", "NA", "AS",
|
"SA","OC","EU","EU","NA","AF","EU","NA","AS","SA",
|
||||||
"SA", "AF", "EU", "NA", "AF", "AF", "NA", "AF", "EU", "AN",
|
"AF","EU","NA","AF","AF","NA","AF","EU","AN","NA",
|
||||||
"NA", "OC", "AF", "SA", "AS", "AN", "NA", "EU", "NA", "EU",
|
"OC","AF","SA","AS","AN","NA","EU","NA","EU","AS",
|
||||||
"AS", "EU", "AS", "AS", "AS", "AS", "AS", "EU", "EU", "NA",
|
"EU","AS","AS","AS","AS","AS","EU","EU","NA","AS",
|
||||||
"AS", "AS", "AF", "AS", "AS", "OC", "AF", "NA", "AS", "AS",
|
"AS","AF","AS","AS","OC","AF","NA","AS","AS","AS",
|
||||||
"AS", "NA", "AS", "AS", "AS", "NA", "EU", "AS", "AF", "AF",
|
"NA","AS","AS","AS","NA","EU","AS","AF","AF","EU",
|
||||||
"EU", "EU", "EU", "AF", "AF", "EU", "EU", "AF", "OC", "EU",
|
"EU","EU","AF","AF","EU","EU","AF","OC","EU","AF",
|
||||||
"AF", "AS", "AS", "AS", "OC", "NA", "AF", "NA", "EU", "AF",
|
"AS","AS","AS","OC","NA","AF","NA","EU","AF","AS",
|
||||||
"AS", "AF", "NA", "AS", "AF", "AF", "OC", "AF", "OC", "AF",
|
"AF","NA","AS","AF","AF","OC","AF","OC","AF","NA",
|
||||||
"NA", "EU", "EU", "AS", "OC", "OC", "OC", "AS", "NA", "SA",
|
"EU","EU","AS","OC","OC","OC","AS","NA","SA","OC",
|
||||||
"OC", "OC", "AS", "AS", "EU", "NA", "OC", "NA", "AS", "EU",
|
"OC","AS","AS","EU","NA","OC","NA","AS","EU","OC",
|
||||||
"OC", "SA", "AS", "AF", "EU", "EU", "AF", "AS", "OC", "AF",
|
"SA","AS","AF","EU","EU","AF","AS","OC","AF","AF",
|
||||||
"AF", "EU", "AS", "AF", "EU", "EU", "EU", "AF", "EU", "AF",
|
"EU","AS","AF","EU","EU","EU","AF","EU","AF","AF",
|
||||||
"AF", "SA", "AF", "NA", "AS", "AF", "NA", "AF", "AN", "AF",
|
"SA","AF","NA","AS","AF","NA","AF","AN","AF","AS",
|
||||||
"AS", "AS", "OC", "AS", "AF", "OC", "AS", "EU", "NA", "OC",
|
"AS","OC","AS","AF","OC","AS","EU","NA","OC","AS",
|
||||||
"AS", "AF", "EU", "AF", "OC", "NA", "SA", "AS", "EU", "NA",
|
"AF","EU","AF","OC","NA","SA","AS","EU","NA","SA",
|
||||||
"SA", "NA", "NA", "AS", "OC", "OC", "OC", "AS", "AF", "EU",
|
"NA","NA","AS","OC","OC","OC","AS","AF","EU","AF",
|
||||||
"AF", "AF", "EU", "AF", "--", "--", "--", "EU", "EU", "EU",
|
"AF","EU","AF","--","--","--","EU","EU","EU","EU",
|
||||||
"EU", "NA", "NA"
|
"NA","NA","NA"
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (!function_exists('geoip_load_shared_mem'))
|
|
||||||
{
|
if (!function_exists('geoip_load_shared_mem ')){
|
||||||
function geoip_load_shared_mem ($file) {
|
function geoip_load_shared_mem ($file) {
|
||||||
|
|
||||||
$fp = fopen($file, "rb");
|
$fp = fopen($file, "rb");
|
||||||
@@ -301,8 +309,8 @@ if (!function_exists('geoip_load_shared_mem'))
|
|||||||
shmop_close ($shmid);
|
shmop_close ($shmid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!function_exists('_setup_segments'))
|
|
||||||
{
|
if (!function_exists('_setup_segments')){
|
||||||
function _setup_segments($gi){
|
function _setup_segments($gi){
|
||||||
$gi->databaseType = GEOIP_COUNTRY_EDITION;
|
$gi->databaseType = GEOIP_COUNTRY_EDITION;
|
||||||
$gi->record_length = STANDARD_RECORD_LENGTH;
|
$gi->record_length = STANDARD_RECORD_LENGTH;
|
||||||
@@ -322,19 +330,32 @@ if (!function_exists('_setup_segments'))
|
|||||||
} else if (($gi->databaseType == GEOIP_CITY_EDITION_REV0)||
|
} else if (($gi->databaseType == GEOIP_CITY_EDITION_REV0)||
|
||||||
($gi->databaseType == GEOIP_CITY_EDITION_REV1)
|
($gi->databaseType == GEOIP_CITY_EDITION_REV1)
|
||||||
|| ($gi->databaseType == GEOIP_ORG_EDITION)
|
|| ($gi->databaseType == GEOIP_ORG_EDITION)
|
||||||
|
|| ($gi->databaseType == GEOIP_ORG_EDITION_V6)
|
||||||
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION)
|
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION)
|
||||||
|
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6)
|
||||||
|| ($gi->databaseType == GEOIP_ISP_EDITION)
|
|| ($gi->databaseType == GEOIP_ISP_EDITION)
|
||||||
|
|| ($gi->databaseType == GEOIP_ISP_EDITION_V6)
|
||||||
|
|| ($gi->databaseType == GEOIP_USERTYPE_EDITION)
|
||||||
|
|| ($gi->databaseType == GEOIP_USERTYPE_EDITION_V6)
|
||||||
|| ($gi->databaseType == GEOIP_LOCATIONA_EDITION)
|
|| ($gi->databaseType == GEOIP_LOCATIONA_EDITION)
|
||||||
|| ($gi->databaseType == GEOIP_ACCURACYRADIUS_EDITION)
|
|| ($gi->databaseType == GEOIP_ACCURACYRADIUS_EDITION)
|
||||||
|| ($gi->databaseType == GEOIP_ASNUM_EDITION)){
|
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6)
|
||||||
|
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6)
|
||||||
|
|| ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1)
|
||||||
|
|| ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1_V6)
|
||||||
|
|| ($gi->databaseType == GEOIP_ASNUM_EDITION)
|
||||||
|
|| ($gi->databaseType == GEOIP_ASNUM_EDITION_V6)){
|
||||||
$gi->databaseSegments = 0;
|
$gi->databaseSegments = 0;
|
||||||
$buf = @shmop_read ($gi->shmid, $offset, SEGMENT_RECORD_LENGTH);
|
$buf = @shmop_read ($gi->shmid, $offset, SEGMENT_RECORD_LENGTH);
|
||||||
for ($j = 0;$j < SEGMENT_RECORD_LENGTH;$j++){
|
for ($j = 0;$j < SEGMENT_RECORD_LENGTH;$j++){
|
||||||
$gi->databaseSegments += (ord($buf[$j]) << ($j * 8));
|
$gi->databaseSegments += (ord($buf[$j]) << ($j * 8));
|
||||||
}
|
}
|
||||||
if (($gi->databaseType == GEOIP_ORG_EDITION)
|
if (($gi->databaseType == GEOIP_ORG_EDITION)
|
||||||
|
|| ($gi->databaseType == GEOIP_ORG_EDITION_V6)
|
||||||
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION)
|
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION)
|
||||||
|| ($gi->databaseType == GEOIP_ISP_EDITION)) {
|
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6)
|
||||||
|
|| ($gi->databaseType == GEOIP_ISP_EDITION)
|
||||||
|
|| ($gi->databaseType == GEOIP_ISP_EDITION_V6)) {
|
||||||
$gi->record_length = ORG_RECORD_LENGTH;
|
$gi->record_length = ORG_RECORD_LENGTH;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -344,6 +365,7 @@ if (!function_exists('_setup_segments'))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (($gi->databaseType == GEOIP_COUNTRY_EDITION)||
|
if (($gi->databaseType == GEOIP_COUNTRY_EDITION)||
|
||||||
|
($gi->databaseType == GEOIP_COUNTRY_EDITION_V6)||
|
||||||
($gi->databaseType == GEOIP_PROXY_EDITION)||
|
($gi->databaseType == GEOIP_PROXY_EDITION)||
|
||||||
($gi->databaseType == GEOIP_NETSPEED_EDITION)){
|
($gi->databaseType == GEOIP_NETSPEED_EDITION)){
|
||||||
$gi->databaseSegments = GEOIP_COUNTRY_BEGIN;
|
$gi->databaseSegments = GEOIP_COUNTRY_BEGIN;
|
||||||
@@ -362,12 +384,24 @@ if (!function_exists('_setup_segments'))
|
|||||||
$gi->databaseSegments = GEOIP_STATE_BEGIN_REV1;
|
$gi->databaseSegments = GEOIP_STATE_BEGIN_REV1;
|
||||||
} else if (($gi->databaseType == GEOIP_CITY_EDITION_REV0)
|
} else if (($gi->databaseType == GEOIP_CITY_EDITION_REV0)
|
||||||
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV1)
|
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV1)
|
||||||
|
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6)
|
||||||
|
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6)
|
||||||
|| ($gi->databaseType == GEOIP_ORG_EDITION)
|
|| ($gi->databaseType == GEOIP_ORG_EDITION)
|
||||||
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION)
|
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION)
|
||||||
|| ($gi->databaseType == GEOIP_ISP_EDITION)
|
|| ($gi->databaseType == GEOIP_ISP_EDITION)
|
||||||
|
|| ($gi->databaseType == GEOIP_ORG_EDITION_V6)
|
||||||
|
|| ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6)
|
||||||
|
|| ($gi->databaseType == GEOIP_ISP_EDITION_V6)
|
||||||
|| ($gi->databaseType == GEOIP_LOCATIONA_EDITION)
|
|| ($gi->databaseType == GEOIP_LOCATIONA_EDITION)
|
||||||
|| ($gi->databaseType == GEOIP_ACCURACYRADIUS_EDITION)
|
|| ($gi->databaseType == GEOIP_ACCURACYRADIUS_EDITION)
|
||||||
|| ($gi->databaseType == GEOIP_ASNUM_EDITION)){
|
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6)
|
||||||
|
|| ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6)
|
||||||
|
|| ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1)
|
||||||
|
|| ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1_V6)
|
||||||
|
|| ($gi->databaseType == GEOIP_USERTYPE_EDITION)
|
||||||
|
|| ($gi->databaseType == GEOIP_USERTYPE_EDITION_V6)
|
||||||
|
|| ($gi->databaseType == GEOIP_ASNUM_EDITION)
|
||||||
|
|| ($gi->databaseType == GEOIP_ASNUM_EDITION_V6)){
|
||||||
$gi->databaseSegments = 0;
|
$gi->databaseSegments = 0;
|
||||||
$buf = fread($gi->filehandle,SEGMENT_RECORD_LENGTH);
|
$buf = fread($gi->filehandle,SEGMENT_RECORD_LENGTH);
|
||||||
for ($j = 0;$j < SEGMENT_RECORD_LENGTH;$j++){
|
for ($j = 0;$j < SEGMENT_RECORD_LENGTH;$j++){
|
||||||
@@ -375,7 +409,10 @@ if (!function_exists('_setup_segments'))
|
|||||||
}
|
}
|
||||||
if ( ( $gi->databaseType == GEOIP_ORG_EDITION )
|
if ( ( $gi->databaseType == GEOIP_ORG_EDITION )
|
||||||
|| ( $gi->databaseType == GEOIP_DOMAIN_EDITION )
|
|| ( $gi->databaseType == GEOIP_DOMAIN_EDITION )
|
||||||
|| ( $gi->databaseType == GEOIP_ISP_EDITION ) ) {
|
|| ( $gi->databaseType == GEOIP_ISP_EDITION )
|
||||||
|
|| ( $gi->databaseType == GEOIP_ORG_EDITION_V6 )
|
||||||
|
|| ( $gi->databaseType == GEOIP_DOMAIN_EDITION_V6 )
|
||||||
|
|| ( $gi->databaseType == GEOIP_ISP_EDITION_V6 )) {
|
||||||
$gi->record_length = ORG_RECORD_LENGTH;
|
$gi->record_length = ORG_RECORD_LENGTH;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -385,6 +422,7 @@ if (!function_exists('_setup_segments'))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (($gi->databaseType == GEOIP_COUNTRY_EDITION)||
|
if (($gi->databaseType == GEOIP_COUNTRY_EDITION)||
|
||||||
|
($gi->databaseType == GEOIP_COUNTRY_EDITION_V6)||
|
||||||
($gi->databaseType == GEOIP_PROXY_EDITION)||
|
($gi->databaseType == GEOIP_PROXY_EDITION)||
|
||||||
($gi->databaseType == GEOIP_NETSPEED_EDITION)){
|
($gi->databaseType == GEOIP_NETSPEED_EDITION)){
|
||||||
$gi->databaseSegments = GEOIP_COUNTRY_BEGIN;
|
$gi->databaseSegments = GEOIP_COUNTRY_BEGIN;
|
||||||
@@ -395,8 +433,7 @@ if (!function_exists('_setup_segments'))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!function_exists('geoip_open'))
|
if (!function_exists('geoip_open')){
|
||||||
{
|
|
||||||
function geoip_open($filename, $flags) {
|
function geoip_open($filename, $flags) {
|
||||||
$gi = new GeoIP;
|
$gi = new GeoIP;
|
||||||
$gi->flags = $flags;
|
$gi->flags = $flags;
|
||||||
@@ -414,8 +451,8 @@ if (!function_exists('geoip_open'))
|
|||||||
return $gi;
|
return $gi;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!function_exists('geoip_close'))
|
|
||||||
{
|
if (!function_exists('geoip_close')){
|
||||||
function geoip_close($gi) {
|
function geoip_close($gi) {
|
||||||
if ($gi->flags & GEOIP_SHARED_MEMORY) {
|
if ($gi->flags & GEOIP_SHARED_MEMORY) {
|
||||||
return true;
|
return true;
|
||||||
@@ -424,8 +461,22 @@ if (!function_exists('geoip_close'))
|
|||||||
return fclose($gi->filehandle);
|
return fclose($gi->filehandle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!function_exists('geoip_country_id_by_name'))
|
|
||||||
{
|
if (!function_exists('geoip_country_id_by_name_v6')){
|
||||||
|
function geoip_country_id_by_name_v6($gi, $name) {
|
||||||
|
$rec = dns_get_record($name, DNS_AAAA);
|
||||||
|
if ( !$rec ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$addr = $rec[0]["ipv6"];
|
||||||
|
if (!$addr || $addr == $name) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return geoip_country_id_by_addr_v6($gi, $addr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('geoip_country_id_by_name')){
|
||||||
function geoip_country_id_by_name($gi, $name) {
|
function geoip_country_id_by_name($gi, $name) {
|
||||||
$addr = gethostbyname($name);
|
$addr = gethostbyname($name);
|
||||||
if (!$addr || $addr == $name) {
|
if (!$addr || $addr == $name) {
|
||||||
@@ -434,8 +485,18 @@ if (!function_exists('geoip_country_id_by_name'))
|
|||||||
return geoip_country_id_by_addr($gi, $addr);
|
return geoip_country_id_by_addr($gi, $addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!function_exists('geoip_country_code_by_name'))
|
|
||||||
{
|
if (!function_exists('geoip_country_code_by_name_v6')){
|
||||||
|
function geoip_country_code_by_name_v6($gi, $name) {
|
||||||
|
$country_id = geoip_country_id_by_name_v6($gi,$name);
|
||||||
|
if ($country_id !== false) {
|
||||||
|
return $gi->GEOIP_COUNTRY_CODES[$country_id];
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('geoip_country_code_by_name')){
|
||||||
function geoip_country_code_by_name($gi, $name) {
|
function geoip_country_code_by_name($gi, $name) {
|
||||||
$country_id = geoip_country_id_by_name($gi,$name);
|
$country_id = geoip_country_id_by_name($gi,$name);
|
||||||
if ($country_id !== false) {
|
if ($country_id !== false) {
|
||||||
@@ -445,8 +506,17 @@ if (!function_exists('geoip_country_code_by_name'))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!function_exists('geoip_country_name_by_name'))
|
if (!function_exists('geoip_country_name_by_name_v6')){
|
||||||
{
|
function geoip_country_name_by_name_v6($gi, $name) {
|
||||||
|
$country_id = geoip_country_id_by_name_v6($gi,$name);
|
||||||
|
if ($country_id !== false) {
|
||||||
|
return $gi->GEOIP_COUNTRY_NAMES[$country_id];
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('geoip_country_name_by_name')){
|
||||||
function geoip_country_name_by_name($gi, $name) {
|
function geoip_country_name_by_name($gi, $name) {
|
||||||
$country_id = geoip_country_id_by_name($gi,$name);
|
$country_id = geoip_country_id_by_name($gi,$name);
|
||||||
if ($country_id !== false) {
|
if ($country_id !== false) {
|
||||||
@@ -455,16 +525,32 @@ if (!function_exists('geoip_country_name_by_name'))
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!function_exists('geoip_country_id_by_addr'))
|
|
||||||
{
|
if (!function_exists('geoip_country_id_by_addr_v6')){
|
||||||
|
function geoip_country_id_by_addr_v6($gi, $addr) {
|
||||||
|
$ipnum = inet_pton($addr);
|
||||||
|
return _geoip_seek_country_v6($gi, $ipnum) - GEOIP_COUNTRY_BEGIN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('geoip_country_id_by_addr')){
|
||||||
function geoip_country_id_by_addr($gi, $addr) {
|
function geoip_country_id_by_addr($gi, $addr) {
|
||||||
$ipnum = ip2long($addr);
|
$ipnum = ip2long($addr);
|
||||||
return _geoip_seek_country($gi, $ipnum) - GEOIP_COUNTRY_BEGIN;
|
return _geoip_seek_country($gi, $ipnum) - GEOIP_COUNTRY_BEGIN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!function_exists('geoip_country_code_by_addr'))
|
if (!function_exists('geoip_country_code_by_addr_v6')){
|
||||||
{
|
function geoip_country_code_by_addr_v6($gi, $addr) {
|
||||||
|
$country_id = geoip_country_id_by_addr_v6($gi,$addr);
|
||||||
|
if ($country_id !== false) {
|
||||||
|
return $gi->GEOIP_COUNTRY_CODES[$country_id];
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('geoip_country_code_by_addr')){
|
||||||
function geoip_country_code_by_addr($gi, $addr) {
|
function geoip_country_code_by_addr($gi, $addr) {
|
||||||
if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) {
|
if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) {
|
||||||
$record = geoip_record_by_addr($gi,$addr);
|
$record = geoip_record_by_addr($gi,$addr);
|
||||||
@@ -480,8 +566,18 @@ if (!function_exists('geoip_country_code_by_addr'))
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!function_exists('geoip_country_name_by_addr'))
|
|
||||||
{
|
if (!function_exists('geoip_country_name_by_addr_v6')){
|
||||||
|
function geoip_country_name_by_addr_v6($gi, $addr) {
|
||||||
|
$country_id = geoip_country_id_by_addr_v6($gi,$addr);
|
||||||
|
if ($country_id !== false) {
|
||||||
|
return $gi->GEOIP_COUNTRY_NAMES[$country_id];
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('geoip_country_name_by_addr')){
|
||||||
function geoip_country_name_by_addr($gi, $addr) {
|
function geoip_country_name_by_addr($gi, $addr) {
|
||||||
if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) {
|
if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) {
|
||||||
$record = geoip_record_by_addr($gi,$addr);
|
$record = geoip_record_by_addr($gi,$addr);
|
||||||
@@ -495,8 +591,65 @@ if (!function_exists('geoip_country_name_by_addr'))
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!function_exists('_geoip_seek_country'))
|
|
||||||
{
|
if (!function_exists('_geoip_seek_country_v6')){
|
||||||
|
function _geoip_seek_country_v6($gi, $ipnum) {
|
||||||
|
|
||||||
|
# arrays from unpack start with offset 1
|
||||||
|
# yet another php mystery. array_merge work around
|
||||||
|
# this broken behaviour
|
||||||
|
$v6vec = array_merge(unpack( "C16", $ipnum));
|
||||||
|
|
||||||
|
$offset = 0;
|
||||||
|
for ($depth = 127; $depth >= 0; --$depth) {
|
||||||
|
if ($gi->flags & GEOIP_MEMORY_CACHE) {
|
||||||
|
// workaround php's broken substr, strpos, etc handling with
|
||||||
|
// mbstring.func_overload and mbstring.internal_encoding
|
||||||
|
$enc = mb_internal_encoding();
|
||||||
|
mb_internal_encoding('ISO-8859-1');
|
||||||
|
|
||||||
|
$buf = substr($gi->memory_buffer,
|
||||||
|
2 * $gi->record_length * $offset,
|
||||||
|
2 * $gi->record_length);
|
||||||
|
|
||||||
|
mb_internal_encoding($enc);
|
||||||
|
} elseif ($gi->flags & GEOIP_SHARED_MEMORY) {
|
||||||
|
$buf = @shmop_read ($gi->shmid,
|
||||||
|
2 * $gi->record_length * $offset,
|
||||||
|
2 * $gi->record_length );
|
||||||
|
} else {
|
||||||
|
fseek($gi->filehandle, 2 * $gi->record_length * $offset, SEEK_SET) == 0
|
||||||
|
or die("fseek failed");
|
||||||
|
$buf = fread($gi->filehandle, 2 * $gi->record_length);
|
||||||
|
}
|
||||||
|
$x = array(0,0);
|
||||||
|
for ($i = 0; $i < 2; ++$i) {
|
||||||
|
for ($j = 0; $j < $gi->record_length; ++$j) {
|
||||||
|
$x[$i] += ord($buf[$gi->record_length * $i + $j]) << ($j * 8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$bnum = 127 - $depth;
|
||||||
|
$idx = $bnum >> 3;
|
||||||
|
$b_mask = 1 << ( $bnum & 7 ^ 7 );
|
||||||
|
if (($v6vec[$idx] & $b_mask) > 0) {
|
||||||
|
if ($x[1] >= $gi->databaseSegments) {
|
||||||
|
return $x[1];
|
||||||
|
}
|
||||||
|
$offset = $x[1];
|
||||||
|
} else {
|
||||||
|
if ($x[0] >= $gi->databaseSegments) {
|
||||||
|
return $x[0];
|
||||||
|
}
|
||||||
|
$offset = $x[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
trigger_error("error traversing database - perhaps it is corrupt?", E_USER_ERROR);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('_geoip_seek_country')){
|
||||||
function _geoip_seek_country($gi, $ipnum) {
|
function _geoip_seek_country($gi, $ipnum) {
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
for ($depth = 31; $depth >= 0; --$depth) {
|
for ($depth = 31; $depth >= 0; --$depth) {
|
||||||
@@ -542,13 +695,9 @@ if (!function_exists('_geoip_seek_country'))
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!function_exists('_get_org'))
|
|
||||||
{
|
if (!function_exists('_common_get_org')){
|
||||||
function _get_org($gi,$ipnum){
|
function _common_get_org($gi, $seek_org){
|
||||||
$seek_org = _geoip_seek_country($gi,$ipnum);
|
|
||||||
if ($seek_org == $gi->databaseSegments) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
$record_pointer = $seek_org + (2 * $gi->record_length - 1) * $gi->databaseSegments;
|
$record_pointer = $seek_org + (2 * $gi->record_length - 1) * $gi->databaseSegments;
|
||||||
if ($gi->flags & GEOIP_SHARED_MEMORY) {
|
if ($gi->flags & GEOIP_SHARED_MEMORY) {
|
||||||
$org_buf = @shmop_read ($gi->shmid, $record_pointer, MAX_ORG_RECORD_LENGTH);
|
$org_buf = @shmop_read ($gi->shmid, $record_pointer, MAX_ORG_RECORD_LENGTH);
|
||||||
@@ -566,9 +715,40 @@ if (!function_exists('_get_org'))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!function_exists('geoip_org_by_addr'))
|
if (!function_exists('_get_org_v6')){
|
||||||
{
|
function _get_org_v6($gi,$ipnum){
|
||||||
function geoip_org_by_addr ($gi,$addr) {
|
$seek_org = _geoip_seek_country_v6($gi,$ipnum);
|
||||||
|
if ($seek_org == $gi->databaseSegments) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return _common_get_org($gi, $seek_org);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('_get_org')){
|
||||||
|
function _get_org($gi,$ipnum){
|
||||||
|
$seek_org = _geoip_seek_country($gi,$ipnum);
|
||||||
|
if ($seek_org == $gi->databaseSegments) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return _common_get_org($gi, $seek_org);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (!function_exists('geoip_name_by_addr_v6 ')){
|
||||||
|
function geoip_name_by_addr_v6 ($gi,$addr) {
|
||||||
|
if ($addr == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
$ipnum = inet_pton($addr);
|
||||||
|
return _get_org_v6($gi, $ipnum);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('geoip_name_by_addr ')){
|
||||||
|
function geoip_name_by_addr ($gi,$addr) {
|
||||||
if ($addr == NULL) {
|
if ($addr == NULL) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -577,8 +757,13 @@ if (!function_exists('geoip_org_by_addr'))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!function_exists('_get_region'))
|
if (!function_exists('geoip_org_by_addr ')){
|
||||||
{
|
function geoip_org_by_addr ($gi,$addr) {
|
||||||
|
return geoip_name_by_addr($gi, $addr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists('_get_region')){
|
||||||
function _get_region($gi,$ipnum){
|
function _get_region($gi,$ipnum){
|
||||||
if ($gi->databaseType == GEOIP_REGION_EDITION_REV0){
|
if ($gi->databaseType == GEOIP_REGION_EDITION_REV0){
|
||||||
$seek_region = _geoip_seek_country($gi,$ipnum) - GEOIP_STATE_BEGIN_REV0;
|
$seek_region = _geoip_seek_country($gi,$ipnum) - GEOIP_STATE_BEGIN_REV0;
|
||||||
@@ -611,8 +796,7 @@ if (!function_exists('_get_region'))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!function_exists('geoip_region_by_addr'))
|
if (!function_exists('geoip_region_by_addr ')){
|
||||||
{
|
|
||||||
function geoip_region_by_addr ($gi,$addr) {
|
function geoip_region_by_addr ($gi,$addr) {
|
||||||
if ($addr == NULL) {
|
if ($addr == NULL) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -622,16 +806,15 @@ if (!function_exists('geoip_region_by_addr'))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!function_exists('getdnsattributes'))
|
if (!function_exists('getdnsattributes ')){
|
||||||
{
|
|
||||||
function getdnsattributes ($l,$ip){
|
function getdnsattributes ($l,$ip){
|
||||||
$r = new Net_DNS_Resolver();
|
$r = new Net_DNS_Resolver();
|
||||||
$r->nameservers = array("ws1.maxmind.com");
|
$r->nameservers = array("ws1.maxmind.com");
|
||||||
$p = $r->search($l."." . $ip .".s.maxmind.com","TXT","IN");
|
$p = $r->search($l."." . $ip .".s.maxmind.com","TXT","IN");
|
||||||
$str = is_object($p->answer[0])?$p->answer[0]->string():'';
|
$str = is_object($p->answer[0])?$p->answer[0]->string():'';
|
||||||
ereg("\"(.*)\"",$str,$regs);
|
$str = substr( $str, 1, -1 );
|
||||||
$str = $regs[1];
|
|
||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -67,9 +67,9 @@ class geoipdnsrecord {
|
|||||||
|
|
||||||
function getrecordwithdnsservice($str){
|
function getrecordwithdnsservice($str){
|
||||||
$record = new geoipdnsrecord;
|
$record = new geoipdnsrecord;
|
||||||
$keyvalue = split(";",$str);
|
$keyvalue = explode(";",$str);
|
||||||
foreach ($keyvalue as $keyvalue2){
|
foreach ($keyvalue as $keyvalue2){
|
||||||
list($key,$value) = split("=",$keyvalue2);
|
list($key,$value) = explode("=",$keyvalue2);
|
||||||
if ($key == "co"){
|
if ($key == "co"){
|
||||||
$record->country_code = $value;
|
$record->country_code = $value;
|
||||||
}
|
}
|
||||||
@@ -115,12 +115,16 @@ function getrecordwithdnsservice($str){
|
|||||||
return $record;
|
return $record;
|
||||||
}
|
}
|
||||||
|
|
||||||
function _get_record($gi,$ipnum){
|
|
||||||
$seek_country = _geoip_seek_country($gi,$ipnum);
|
function _get_record_v6($gi,$ipnum){
|
||||||
|
$seek_country = _geoip_seek_country_v6($gi,$ipnum);
|
||||||
if ($seek_country == $gi->databaseSegments) {
|
if ($seek_country == $gi->databaseSegments) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
return _common_get_record($gi, $seek_country);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _common_get_record($gi, $seek_country){
|
||||||
// workaround php's broken substr, strpos, etc handling with
|
// workaround php's broken substr, strpos, etc handling with
|
||||||
// mbstring.func_overload and mbstring.internal_encoding
|
// mbstring.func_overload and mbstring.internal_encoding
|
||||||
$enc = mb_internal_encoding();
|
$enc = mb_internal_encoding();
|
||||||
@@ -206,6 +210,22 @@ function _get_record($gi,$ipnum){
|
|||||||
return $record;
|
return $record;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function GeoIP_record_by_addr_v6 ($gi,$addr){
|
||||||
|
if ($addr == NULL){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
$ipnum = inet_pton($addr);
|
||||||
|
return _get_record_v6($gi, $ipnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _get_record($gi,$ipnum){
|
||||||
|
$seek_country = _geoip_seek_country($gi,$ipnum);
|
||||||
|
if ($seek_country == $gi->databaseSegments) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return _common_get_record($gi, $seek_country);
|
||||||
|
}
|
||||||
|
|
||||||
function GeoIP_record_by_addr ($gi,$addr){
|
function GeoIP_record_by_addr ($gi,$addr){
|
||||||
if ($addr == NULL){
|
if ($addr == NULL){
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
# Copyright 2010 Maxmind LLC All Rights Reserved
|
# Copyright 2012 Maxmind LLC All Rights Reserved
|
||||||
$GEOIP_REGION_NAME = array(
|
$GEOIP_REGION_NAME = array(
|
||||||
"AD" => array(
|
"AD" => array(
|
||||||
"02" => "Canillo",
|
"02" => "Canillo",
|
||||||
@@ -254,7 +254,9 @@ $GEOIP_REGION_NAME = array(
|
|||||||
"09" => "West-Vlaanderen",
|
"09" => "West-Vlaanderen",
|
||||||
"10" => "Brabant Wallon",
|
"10" => "Brabant Wallon",
|
||||||
"11" => "Brussels Hoofdstedelijk Gewest",
|
"11" => "Brussels Hoofdstedelijk Gewest",
|
||||||
"12" => "Vlaams-Brabant"),
|
"12" => "Vlaams-Brabant",
|
||||||
|
"13" => "Flanders",
|
||||||
|
"14" => "Wallonia"),
|
||||||
"BF" => array(
|
"BF" => array(
|
||||||
"15" => "Bam",
|
"15" => "Bam",
|
||||||
"19" => "Boulkiemde",
|
"19" => "Boulkiemde",
|
||||||
@@ -675,9 +677,6 @@ $GEOIP_REGION_NAME = array(
|
|||||||
"02" => "Antioquia",
|
"02" => "Antioquia",
|
||||||
"03" => "Arauca",
|
"03" => "Arauca",
|
||||||
"04" => "Atlantico",
|
"04" => "Atlantico",
|
||||||
"05" => "Bolivar Department",
|
|
||||||
"06" => "Boyaca Department",
|
|
||||||
"07" => "Caldas Department",
|
|
||||||
"08" => "Caqueta",
|
"08" => "Caqueta",
|
||||||
"09" => "Cauca",
|
"09" => "Cauca",
|
||||||
"10" => "Cesar",
|
"10" => "Cesar",
|
||||||
@@ -687,7 +686,6 @@ $GEOIP_REGION_NAME = array(
|
|||||||
"15" => "Guainia",
|
"15" => "Guainia",
|
||||||
"16" => "Huila",
|
"16" => "Huila",
|
||||||
"17" => "La Guajira",
|
"17" => "La Guajira",
|
||||||
"18" => "Magdalena Department",
|
|
||||||
"19" => "Meta",
|
"19" => "Meta",
|
||||||
"20" => "Narino",
|
"20" => "Narino",
|
||||||
"21" => "Norte de Santander",
|
"21" => "Norte de Santander",
|
||||||
@@ -1621,26 +1619,19 @@ $GEOIP_REGION_NAME = array(
|
|||||||
"03" => "Bengkulu",
|
"03" => "Bengkulu",
|
||||||
"04" => "Jakarta Raya",
|
"04" => "Jakarta Raya",
|
||||||
"05" => "Jambi",
|
"05" => "Jambi",
|
||||||
"06" => "Jawa Barat",
|
|
||||||
"07" => "Jawa Tengah",
|
"07" => "Jawa Tengah",
|
||||||
"08" => "Jawa Timur",
|
"08" => "Jawa Timur",
|
||||||
"09" => "Papua",
|
|
||||||
"10" => "Yogyakarta",
|
"10" => "Yogyakarta",
|
||||||
"11" => "Kalimantan Barat",
|
"11" => "Kalimantan Barat",
|
||||||
"12" => "Kalimantan Selatan",
|
"12" => "Kalimantan Selatan",
|
||||||
"13" => "Kalimantan Tengah",
|
"13" => "Kalimantan Tengah",
|
||||||
"14" => "Kalimantan Timur",
|
"14" => "Kalimantan Timur",
|
||||||
"15" => "Lampung",
|
"15" => "Lampung",
|
||||||
"16" => "Maluku",
|
|
||||||
"17" => "Nusa Tenggara Barat",
|
"17" => "Nusa Tenggara Barat",
|
||||||
"18" => "Nusa Tenggara Timur",
|
"18" => "Nusa Tenggara Timur",
|
||||||
"19" => "Riau",
|
|
||||||
"20" => "Sulawesi Selatan",
|
|
||||||
"21" => "Sulawesi Tengah",
|
"21" => "Sulawesi Tengah",
|
||||||
"22" => "Sulawesi Tenggara",
|
"22" => "Sulawesi Tenggara",
|
||||||
"23" => "Sulawesi Utara",
|
|
||||||
"24" => "Sumatera Barat",
|
"24" => "Sumatera Barat",
|
||||||
"25" => "Sumatera Selatan",
|
|
||||||
"26" => "Sumatera Utara",
|
"26" => "Sumatera Utara",
|
||||||
"28" => "Maluku",
|
"28" => "Maluku",
|
||||||
"29" => "Maluku Utara",
|
"29" => "Maluku Utara",
|
||||||
@@ -1850,14 +1841,17 @@ $GEOIP_REGION_NAME = array(
|
|||||||
"17" => "Kingston"),
|
"17" => "Kingston"),
|
||||||
"JO" => array(
|
"JO" => array(
|
||||||
"02" => "Al Balqa'",
|
"02" => "Al Balqa'",
|
||||||
"07" => "Ma",
|
|
||||||
"09" => "Al Karak",
|
"09" => "Al Karak",
|
||||||
"10" => "Al Mafraq",
|
|
||||||
"11" => "Amman Governorate",
|
|
||||||
"12" => "At Tafilah",
|
"12" => "At Tafilah",
|
||||||
"13" => "Az Zarqa",
|
"15" => "Al Mafraq",
|
||||||
"14" => "Irbid",
|
"16" => "Amman",
|
||||||
"16" => "Amman"),
|
"17" => "Az Zaraqa",
|
||||||
|
"18" => "Irbid",
|
||||||
|
"19" => "Ma'an",
|
||||||
|
"20" => "Ajlun",
|
||||||
|
"21" => "Al Aqabah",
|
||||||
|
"22" => "Jarash",
|
||||||
|
"23" => "Madaba"),
|
||||||
"JP" => array(
|
"JP" => array(
|
||||||
"01" => "Aichi",
|
"01" => "Aichi",
|
||||||
"02" => "Akita",
|
"02" => "Akita",
|
||||||
@@ -2272,6 +2266,7 @@ $GEOIP_REGION_NAME = array(
|
|||||||
"79" => "Leova",
|
"79" => "Leova",
|
||||||
"80" => "Nisporeni",
|
"80" => "Nisporeni",
|
||||||
"81" => "Ocnita",
|
"81" => "Ocnita",
|
||||||
|
"82" => "Orhei",
|
||||||
"83" => "Rezina",
|
"83" => "Rezina",
|
||||||
"84" => "Riscani",
|
"84" => "Riscani",
|
||||||
"85" => "Singerei",
|
"85" => "Singerei",
|
||||||
@@ -2721,7 +2716,6 @@ $GEOIP_REGION_NAME = array(
|
|||||||
"05" => "Limburg",
|
"05" => "Limburg",
|
||||||
"06" => "Noord-Brabant",
|
"06" => "Noord-Brabant",
|
||||||
"07" => "Noord-Holland",
|
"07" => "Noord-Holland",
|
||||||
"08" => "Overijssel",
|
|
||||||
"09" => "Utrecht",
|
"09" => "Utrecht",
|
||||||
"10" => "Zeeland",
|
"10" => "Zeeland",
|
||||||
"11" => "Zuid-Holland",
|
"11" => "Zuid-Holland",
|
||||||
@@ -3217,7 +3211,8 @@ $GEOIP_REGION_NAME = array(
|
|||||||
"89" => "Yevrey",
|
"89" => "Yevrey",
|
||||||
"90" => "Permskiy Kray",
|
"90" => "Permskiy Kray",
|
||||||
"91" => "Krasnoyarskiy Kray",
|
"91" => "Krasnoyarskiy Kray",
|
||||||
"CI" => "Chechnya Republic"),
|
"92" => "Kamchatskiy Kray",
|
||||||
|
"93" => "Zabaykal'skiy Kray"),
|
||||||
"RW" => array(
|
"RW" => array(
|
||||||
"01" => "Butare",
|
"01" => "Butare",
|
||||||
"06" => "Gitarama",
|
"06" => "Gitarama",
|
||||||
@@ -3230,12 +3225,11 @@ $GEOIP_REGION_NAME = array(
|
|||||||
"15" => "Sud"),
|
"15" => "Sud"),
|
||||||
"SA" => array(
|
"SA" => array(
|
||||||
"02" => "Al Bahah",
|
"02" => "Al Bahah",
|
||||||
"03" => "Al Jawf",
|
|
||||||
"05" => "Al Madinah",
|
"05" => "Al Madinah",
|
||||||
"06" => "Ash Sharqiyah",
|
"06" => "Ash Sharqiyah",
|
||||||
"08" => "Al Qasim",
|
"08" => "Al Qasim",
|
||||||
"09" => "Al Qurayyat",
|
|
||||||
"10" => "Ar Riyad",
|
"10" => "Ar Riyad",
|
||||||
|
"11" => "Asir Province",
|
||||||
"13" => "Ha'il",
|
"13" => "Ha'il",
|
||||||
"14" => "Makkah",
|
"14" => "Makkah",
|
||||||
"15" => "Al Hudud ash Shamaliyah",
|
"15" => "Al Hudud ash Shamaliyah",
|
||||||
@@ -4142,19 +4136,26 @@ $GEOIP_REGION_NAME = array(
|
|||||||
"03" => "Al Mahrah",
|
"03" => "Al Mahrah",
|
||||||
"04" => "Hadramawt",
|
"04" => "Hadramawt",
|
||||||
"05" => "Shabwah",
|
"05" => "Shabwah",
|
||||||
"06" => "Al Ghaydah",
|
"06" => "Lahij",
|
||||||
|
"07" => "Al Bayda'",
|
||||||
"08" => "Al Hudaydah",
|
"08" => "Al Hudaydah",
|
||||||
|
"09" => "Al Jawf",
|
||||||
"10" => "Al Mahwit",
|
"10" => "Al Mahwit",
|
||||||
"11" => "Dhamar",
|
"11" => "Dhamar",
|
||||||
|
"12" => "Hajjah",
|
||||||
|
"13" => "Ibb",
|
||||||
"14" => "Ma'rib",
|
"14" => "Ma'rib",
|
||||||
"15" => "Sa",
|
"15" => "Sa'dah",
|
||||||
"16" => "San",
|
"16" => "San'a'",
|
||||||
|
"17" => "Taizz",
|
||||||
|
"18" => "Ad Dali",
|
||||||
|
"19" => "Amran",
|
||||||
"20" => "Al Bayda'",
|
"20" => "Al Bayda'",
|
||||||
"21" => "Al Jawf",
|
"21" => "Al Jawf",
|
||||||
"22" => "Hajjah",
|
"22" => "Hajjah",
|
||||||
"23" => "Ibb",
|
"23" => "Ibb",
|
||||||
"24" => "Lahij",
|
"24" => "Lahij",
|
||||||
"25" => "Ta"),
|
"25" => "Taizz"),
|
||||||
"ZA" => array(
|
"ZA" => array(
|
||||||
"01" => "North-Western Province",
|
"01" => "North-Western Province",
|
||||||
"02" => "KwaZulu-Natal",
|
"02" => "KwaZulu-Natal",
|
||||||
|
|||||||
Reference in New Issue
Block a user