geoip 0.8.6 → 0.8.7
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +19 -6
- data/lib/geoip.rb +242 -2
- metadata +27 -9
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= geoip
|
2
2
|
|
3
|
-
|
3
|
+
http://github.com/cjheath/geoip
|
4
4
|
|
5
5
|
== DESCRIPTION:
|
6
6
|
|
@@ -10,22 +10,35 @@ and the city, ISP and other information, if you have that database version.
|
|
10
10
|
|
11
11
|
== FEATURES/PROBLEMS:
|
12
12
|
|
13
|
-
|
13
|
+
Includes support for ASN data files, thanks to Roland Matiz.
|
14
|
+
This release adds support for timezone names, thanks to Tonni Aagesen.
|
14
15
|
|
15
16
|
== SYNOPSIS:
|
16
17
|
|
17
18
|
require 'geoip'
|
18
|
-
GeoIP.new('
|
19
|
-
=> ["www.
|
19
|
+
GeoIP.new('GeoLiteCity.dat').country('www.atlantis.sk')
|
20
|
+
=> ["www.atlantis.sk", "217.67.18.26", "SK", "SVK", "Slovakia", "EU", "02", "Bratislava", "", 48.15, 17.1167, nil, nil, "Europe/Bratislava"]
|
21
|
+
|
22
|
+
Returned values are the requested hostname, the IP address as a dotted quad,
|
23
|
+
Maxmind's country code, the ISO3166-1 country code, the ISO3166-2 country code,
|
24
|
+
the ISO3166 country name, and the continent code.
|
25
|
+
|
26
|
+
GeoIP.new('GeoCity.dat').city('github.com')
|
27
|
+
=> ["github.com", "207.97.227.239", "US", "USA", "United States", "NA", "CA", "San Francisco", "94110", 37.7484, -122.4156, 807, 415, "America/Los_Angeles"]
|
28
|
+
|
29
|
+
Returned values are the country values followed by region or state name,
|
30
|
+
city name, postal_code/zipcode, latitude, longitude, USA DMA code, USA area code,
|
31
|
+
timezone name. Sorry it's not a Hash... historical.
|
20
32
|
|
21
33
|
GeoIP.new('GeoIPASNum.dat').asn("www.fsb.ru")
|
22
34
|
=> ["AS8342", "RTComm.RU Autonomous System"]
|
23
35
|
|
24
36
|
== REQUIREMENTS:
|
25
37
|
|
26
|
-
You need at least the free
|
27
|
-
location is <http://
|
38
|
+
You need at least the free GeoLiteCity.dat, for which the last known download
|
39
|
+
location is <http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz>,
|
28
40
|
or the city database from <http://www.maxmind.com/app/geolitecity>.
|
41
|
+
|
29
42
|
The ASN database location is
|
30
43
|
<http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz>.
|
31
44
|
|
data/lib/geoip.rb
CHANGED
@@ -50,7 +50,7 @@ rescue LoadError
|
|
50
50
|
end
|
51
51
|
|
52
52
|
class GeoIP
|
53
|
-
VERSION = "0.8.
|
53
|
+
VERSION = "0.8.7"
|
54
54
|
private
|
55
55
|
CountryCode = [
|
56
56
|
"--","AP","EU","AD","AE","AF","AG","AI","AL","AM","AN",
|
@@ -395,6 +395,234 @@ class GeoIP
|
|
395
395
|
"SA","SA"
|
396
396
|
]
|
397
397
|
|
398
|
+
TimeZone = {
|
399
|
+
"USAL" => "America/Chicago", "USAK" => "America/Anchorage", "USAZ" => "America/Phoenix",
|
400
|
+
"USAR" => "America/Chicago", "USCA" => "America/Los_Angeles", "USCO" => "America/Denver",
|
401
|
+
"USCT" => "America/New_York", "USDE" => "America/New_York", "USDC" => "America/New_York",
|
402
|
+
"USFL" => "America/New_York", "USGA" => "America/New_York", "USHI" => "Pacific/Honolulu",
|
403
|
+
"USID" => "America/Denver", "USIL" => "America/Chicago", "USIN" => "America/Indianapolis",
|
404
|
+
"USIA" => "America/Chicago", "USKS" => "America/Chicago", "USKY" => "America/New_York",
|
405
|
+
"USLA" => "America/Chicago", "USME" => "America/New_York", "USMD" => "America/New_York",
|
406
|
+
"USMA" => "America/New_York", "USMI" => "America/New_York", "USMN" => "America/Chicago",
|
407
|
+
"USMS" => "America/Chicago", "USMO" => "America/Chicago", "USMT" => "America/Denver",
|
408
|
+
"USNE" => "America/Chicago", "USNV" => "America/Los_Angeles", "USNH" => "America/New_York",
|
409
|
+
"USNJ" => "America/New_York", "USNM" => "America/Denver", "USNY" => "America/New_York",
|
410
|
+
"USNC" => "America/New_York", "USND" => "America/Chicago", "USOH" => "America/New_York",
|
411
|
+
"USOK" => "America/Chicago", "USOR" => "America/Los_Angeles", "USPA" => "America/New_York",
|
412
|
+
"USRI" => "America/New_York", "USSC" => "America/New_York", "USSD" => "America/Chicago",
|
413
|
+
"USTN" => "America/Chicago", "USTX" => "America/Chicago", "USUT" => "America/Denver",
|
414
|
+
"USVT" => "America/New_York", "USVA" => "America/New_York", "USWA" => "America/Los_Angeles",
|
415
|
+
"USWV" => "America/New_York", "USWI" => "America/Chicago", "USWY" => "America/Denver",
|
416
|
+
"CAAB" => "America/Edmonton", "CABC" => "America/Vancouver", "CAMB" => "America/Winnipeg",
|
417
|
+
"CANB" => "America/Halifax", "CANL" => "America/St_Johns", "CANT" => "America/Yellowknife",
|
418
|
+
"CANS" => "America/Halifax", "CANU" => "America/Rankin_Inlet", "CAON" => "America/Rainy_River",
|
419
|
+
"CAPE" => "America/Halifax", "CAQC" => "America/Montreal", "CASK" => "America/Regina",
|
420
|
+
"CAYT" => "America/Whitehorse", "AU01" => "Australia/Canberra", "AU02" => "Australia/NSW",
|
421
|
+
"AU03" => "Australia/North", "AU04" => "Australia/Queensland", "AU05" => "Australia/South",
|
422
|
+
"AU06" => "Australia/Tasmania", "AU07" => "Australia/Victoria", "AU08" => "Australia/West",
|
423
|
+
"AS" => "US/Samoa", "CI" => "Africa/Abidjan", "GH" => "Africa/Accra",
|
424
|
+
"DZ" => "Africa/Algiers", "ER" => "Africa/Asmera", "ML" => "Africa/Bamako",
|
425
|
+
"CF" => "Africa/Bangui", "GM" => "Africa/Banjul", "GW" => "Africa/Bissau",
|
426
|
+
"CG" => "Africa/Brazzaville", "BI" => "Africa/Bujumbura", "EG" => "Africa/Cairo",
|
427
|
+
"MA" => "Africa/Casablanca", "GN" => "Africa/Conakry", "SN" => "Africa/Dakar",
|
428
|
+
"DJ" => "Africa/Djibouti", "SL" => "Africa/Freetown", "BW" => "Africa/Gaborone",
|
429
|
+
"ZW" => "Africa/Harare", "ZA" => "Africa/Johannesburg", "UG" => "Africa/Kampala",
|
430
|
+
"SD" => "Africa/Khartoum", "RW" => "Africa/Kigali", "NG" => "Africa/Lagos",
|
431
|
+
"GA" => "Africa/Libreville", "TG" => "Africa/Lome", "AO" => "Africa/Luanda",
|
432
|
+
"ZM" => "Africa/Lusaka", "GQ" => "Africa/Malabo", "MZ" => "Africa/Maputo",
|
433
|
+
"LS" => "Africa/Maseru", "SZ" => "Africa/Mbabane", "SO" => "Africa/Mogadishu",
|
434
|
+
"LR" => "Africa/Monrovia", "KE" => "Africa/Nairobi", "TD" => "Africa/Ndjamena",
|
435
|
+
"NE" => "Africa/Niamey", "MR" => "Africa/Nouakchott", "BF" => "Africa/Ouagadougou",
|
436
|
+
"ST" => "Africa/Sao_Tome", "LY" => "Africa/Tripoli", "TN" => "Africa/Tunis",
|
437
|
+
"AI" => "America/Anguilla", "AG" => "America/Antigua", "AW" => "America/Aruba",
|
438
|
+
"BB" => "America/Barbados", "BZ" => "America/Belize", "CO" => "America/Bogota",
|
439
|
+
"VE" => "America/Caracas", "KY" => "America/Cayman", "CR" => "America/Costa_Rica",
|
440
|
+
"DM" => "America/Dominica", "SV" => "America/El_Salvador", "GD" => "America/Grenada",
|
441
|
+
"FR" => "Europe/Paris", "GP" => "America/Guadeloupe", "GT" => "America/Guatemala",
|
442
|
+
"GY" => "America/Guyana", "CU" => "America/Havana", "JM" => "America/Jamaica",
|
443
|
+
"BO" => "America/La_Paz", "PE" => "America/Lima", "NI" => "America/Managua",
|
444
|
+
"MQ" => "America/Martinique", "UY" => "America/Montevideo", "MS" => "America/Montserrat",
|
445
|
+
"BS" => "America/Nassau", "PA" => "America/Panama", "SR" => "America/Paramaribo",
|
446
|
+
"PR" => "America/Puerto_Rico", "KN" => "America/St_Kitts", "LC" => "America/St_Lucia",
|
447
|
+
"VC" => "America/St_Vincent", "HN" => "America/Tegucigalpa", "YE" => "Asia/Aden",
|
448
|
+
"JO" => "Asia/Amman", "TM" => "Asia/Ashgabat", "IQ" => "Asia/Baghdad",
|
449
|
+
"BH" => "Asia/Bahrain", "AZ" => "Asia/Baku", "TH" => "Asia/Bangkok",
|
450
|
+
"LB" => "Asia/Beirut", "KG" => "Asia/Bishkek", "BN" => "Asia/Brunei",
|
451
|
+
"IN" => "Asia/Calcutta", "MN" => "Asia/Choibalsan", "LK" => "Asia/Colombo",
|
452
|
+
"BD" => "Asia/Dhaka", "AE" => "Asia/Dubai", "TJ" => "Asia/Dushanbe",
|
453
|
+
"HK" => "Asia/Hong_Kong", "TR" => "Asia/Istanbul", "IL" => "Asia/Jerusalem",
|
454
|
+
"AF" => "Asia/Kabul", "PK" => "Asia/Karachi", "NP" => "Asia/Katmandu",
|
455
|
+
"KW" => "Asia/Kuwait", "MO" => "Asia/Macao", "PH" => "Asia/Manila",
|
456
|
+
"OM" => "Asia/Muscat", "CY" => "Asia/Nicosia", "KP" => "Asia/Pyongyang",
|
457
|
+
"QA" => "Asia/Qatar", "MM" => "Asia/Rangoon", "SA" => "Asia/Riyadh",
|
458
|
+
"KR" => "Asia/Seoul", "SG" => "Asia/Singapore", "TW" => "Asia/Taipei",
|
459
|
+
"GE" => "Asia/Tbilisi", "BT" => "Asia/Thimphu", "JP" => "Asia/Tokyo",
|
460
|
+
"LA" => "Asia/Vientiane", "AM" => "Asia/Yerevan", "BM" => "Atlantic/Bermuda",
|
461
|
+
"CV" => "Atlantic/Cape_Verde", "FO" => "Atlantic/Faeroe", "IS" => "Atlantic/Reykjavik",
|
462
|
+
"GS" => "Atlantic/South_Georgia", "SH" => "Atlantic/St_Helena", "CL" => "Chile/Continental",
|
463
|
+
"NL" => "Europe/Amsterdam", "AD" => "Europe/Andorra", "GR" => "Europe/Athens",
|
464
|
+
"YU" => "Europe/Belgrade", "DE" => "Europe/Berlin", "SK" => "Europe/Bratislava",
|
465
|
+
"BE" => "Europe/Brussels", "RO" => "Europe/Bucharest", "HU" => "Europe/Budapest",
|
466
|
+
"DK" => "Europe/Copenhagen", "IE" => "Europe/Dublin", "GI" => "Europe/Gibraltar",
|
467
|
+
"FI" => "Europe/Helsinki", "SI" => "Europe/Ljubljana", "GB" => "Europe/London",
|
468
|
+
"LU" => "Europe/Luxembourg", "MT" => "Europe/Malta", "BY" => "Europe/Minsk",
|
469
|
+
"MC" => "Europe/Monaco", "NO" => "Europe/Oslo", "CZ" => "Europe/Prague",
|
470
|
+
"LV" => "Europe/Riga", "IT" => "Europe/Rome", "SM" => "Europe/San_Marino",
|
471
|
+
"BA" => "Europe/Sarajevo", "MK" => "Europe/Skopje", "BG" => "Europe/Sofia",
|
472
|
+
"SE" => "Europe/Stockholm", "EE" => "Europe/Tallinn", "AL" => "Europe/Tirane",
|
473
|
+
"LI" => "Europe/Vaduz", "VA" => "Europe/Vatican", "AT" => "Europe/Vienna",
|
474
|
+
"LT" => "Europe/Vilnius", "PL" => "Europe/Warsaw", "HR" => "Europe/Zagreb",
|
475
|
+
"IR" => "Asia/Tehran", "MG" => "Indian/Antananarivo", "CX" => "Indian/Christmas",
|
476
|
+
"CC" => "Indian/Cocos", "KM" => "Indian/Comoro", "MV" => "Indian/Maldives",
|
477
|
+
"MU" => "Indian/Mauritius", "YT" => "Indian/Mayotte", "RE" => "Indian/Reunion",
|
478
|
+
"FJ" => "Pacific/Fiji", "TV" => "Pacific/Funafuti", "GU" => "Pacific/Guam",
|
479
|
+
"NR" => "Pacific/Nauru", "NU" => "Pacific/Niue", "NF" => "Pacific/Norfolk",
|
480
|
+
"PW" => "Pacific/Palau", "PN" => "Pacific/Pitcairn", "CK" => "Pacific/Rarotonga",
|
481
|
+
"WS" => "Pacific/Samoa", "KI" => "Pacific/Tarawa", "TO" => "Pacific/Tongatapu",
|
482
|
+
"WF" => "Pacific/Wallis", "TZ" => "Africa/Dar_es_Salaam", "VN" => "Asia/Phnom_Penh",
|
483
|
+
"KH" => "Asia/Phnom_Penh", "CM" => "Africa/Lagos", "DO" => "America/Santo_Domingo",
|
484
|
+
"ET" => "Africa/Addis_Ababa", "FX" => "Europe/Paris", "HT" => "America/Port-au-Prince",
|
485
|
+
"CH" => "Europe/Zurich", "AN" => "America/Curacao", "BJ" => "Africa/Porto-Novo",
|
486
|
+
"EH" => "Africa/El_Aaiun", "FK" => "Atlantic/Stanley", "GF" => "America/Cayenne",
|
487
|
+
"IO" => "Indian/Chagos", "MD" => "Europe/Chisinau", "MP" => "Pacific/Saipan",
|
488
|
+
"MW" => "Africa/Blantyre", "NA" => "Africa/Windhoek", "NC" => "Pacific/Noumea",
|
489
|
+
"PG" => "Pacific/Port_Moresby", "PM" => "America/Miquelon", "PS" => "Asia/Gaza",
|
490
|
+
"PY" => "America/Asuncion", "SB" => "Pacific/Guadalcanal", "SC" => "Indian/Mahe",
|
491
|
+
"SJ" => "Arctic/Longyearbyen", "SY" => "Asia/Damascus", "TC" => "America/Grand_Turk",
|
492
|
+
"TF" => "Indian/Kerguelen", "TK" => "Pacific/Fakaofo", "TT" => "America/Port_of_Spain",
|
493
|
+
"VG" => "America/Tortola", "VI" => "America/St_Thomas", "VU" => "Pacific/Efate",
|
494
|
+
"RS" => "Europe/Belgrade", "ME" => "Europe/Podgorica", "AX" => "Europe/Mariehamn",
|
495
|
+
"GG" => "Europe/Guernsey", "IM" => "Europe/Isle_of_Man", "JE" => "Europe/Jersey",
|
496
|
+
"BL" => "America/St_Barthelemy", "MF" => "America/Marigot", "AR01" => "America/Argentina/Buenos_Aires",
|
497
|
+
"AR02" => "America/Argentina/Catamarca", "AR03" => "America/Argentina/Tucuman", "AR04" => "America/Argentina/Rio_Gallegos",
|
498
|
+
"AR05" => "America/Argentina/Cordoba", "AR06" => "America/Argentina/Tucuman", "AR07" => "America/Argentina/Buenos_Aires",
|
499
|
+
"AR08" => "America/Argentina/Buenos_Aires", "AR09" => "America/Argentina/Tucuman", "AR10" => "America/Argentina/Jujuy",
|
500
|
+
"AR11" => "America/Argentina/San_Luis", "AR12" => "America/Argentina/La_Rioja", "AR13" => "America/Argentina/Mendoza",
|
501
|
+
"AR14" => "America/Argentina/Buenos_Aires", "AR15" => "America/Argentina/San_Luis", "AR16" => "America/Argentina/Buenos_Aires",
|
502
|
+
"AR17" => "America/Argentina/Salta", "AR18" => "America/Argentina/San_Juan", "AR19" => "America/Argentina/San_Luis",
|
503
|
+
"AR20" => "America/Argentina/Rio_Gallegos", "AR21" => "America/Argentina/Buenos_Aires", "AR22" => "America/Argentina/Catamarca",
|
504
|
+
"AR23" => "America/Argentina/Ushuaia", "AR24" => "America/Argentina/Tucuman", "BR01" => "America/Rio_Branco",
|
505
|
+
"BR02" => "America/Maceio", "BR03" => "America/Sao_Paulo", "BR04" => "America/Manaus",
|
506
|
+
"BR05" => "America/Bahia", "BR06" => "America/Fortaleza", "BR07" => "America/Sao_Paulo",
|
507
|
+
"BR08" => "America/Sao_Paulo", "BR11" => "America/Campo_Grande", "BR13" => "America/Belem",
|
508
|
+
"BR14" => "America/Cuiaba", "BR15" => "America/Sao_Paulo", "BR16" => "America/Belem",
|
509
|
+
"BR17" => "America/Recife", "BR18" => "America/Sao_Paulo", "BR20" => "America/Fortaleza",
|
510
|
+
"BR21" => "America/Sao_Paulo", "BR22" => "America/Recife", "BR23" => "America/Sao_Paulo",
|
511
|
+
"BR24" => "America/Porto_Velho", "BR25" => "America/Boa_Vista", "BR26" => "America/Sao_Paulo",
|
512
|
+
"BR27" => "America/Sao_Paulo", "BR28" => "America/Maceio", "BR29" => "America/Sao_Paulo",
|
513
|
+
"BR30" => "America/Recife", "BR31" => "America/Araguaina", "CD02" => "Africa/Kinshasa",
|
514
|
+
"CD05" => "Africa/Lubumbashi", "CD06" => "Africa/Kinshasa", "CD08" => "Africa/Kinshasa",
|
515
|
+
"CD10" => "Africa/Lubumbashi", "CD11" => "Africa/Lubumbashi", "CD12" => "Africa/Lubumbashi",
|
516
|
+
"CN01" => "Asia/Shanghai", "CN02" => "Asia/Shanghai", "CN03" => "Asia/Shanghai",
|
517
|
+
"CN04" => "Asia/Shanghai", "CN05" => "Asia/Harbin", "CN06" => "Asia/Chongqing",
|
518
|
+
"CN07" => "Asia/Shanghai", "CN08" => "Asia/Harbin", "CN09" => "Asia/Shanghai",
|
519
|
+
"CN10" => "Asia/Shanghai", "CN11" => "Asia/Chongqing", "CN12" => "Asia/Shanghai",
|
520
|
+
"CN13" => "Asia/Urumqi", "CN14" => "Asia/Chongqing", "CN15" => "Asia/Chongqing",
|
521
|
+
"CN16" => "Asia/Chongqing", "CN18" => "Asia/Chongqing", "CN19" => "Asia/Harbin",
|
522
|
+
"CN20" => "Asia/Harbin", "CN21" => "Asia/Chongqing", "CN22" => "Asia/Harbin",
|
523
|
+
"CN23" => "Asia/Shanghai", "CN24" => "Asia/Chongqing", "CN25" => "Asia/Shanghai",
|
524
|
+
"CN26" => "Asia/Chongqing", "CN28" => "Asia/Shanghai", "CN29" => "Asia/Chongqing",
|
525
|
+
"CN30" => "Asia/Chongqing", "CN31" => "Asia/Chongqing", "CN32" => "Asia/Chongqing",
|
526
|
+
"CN33" => "Asia/Chongqing", "EC01" => "Pacific/Galapagos", "EC02" => "America/Guayaquil",
|
527
|
+
"EC03" => "America/Guayaquil", "EC04" => "America/Guayaquil", "EC05" => "America/Guayaquil",
|
528
|
+
"EC06" => "America/Guayaquil", "EC07" => "America/Guayaquil", "EC08" => "America/Guayaquil",
|
529
|
+
"EC09" => "America/Guayaquil", "EC10" => "America/Guayaquil", "EC11" => "America/Guayaquil",
|
530
|
+
"EC12" => "America/Guayaquil", "EC13" => "America/Guayaquil", "EC14" => "America/Guayaquil",
|
531
|
+
"EC15" => "America/Guayaquil", "EC17" => "America/Guayaquil", "EC18" => "America/Guayaquil",
|
532
|
+
"EC19" => "America/Guayaquil", "EC20" => "America/Guayaquil", "EC22" => "America/Guayaquil",
|
533
|
+
"ES07" => "Europe/Madrid", "ES27" => "Europe/Madrid", "ES29" => "Europe/Madrid",
|
534
|
+
"ES31" => "Europe/Madrid", "ES32" => "Europe/Madrid", "ES34" => "Europe/Madrid",
|
535
|
+
"ES39" => "Europe/Madrid", "ES51" => "Africa/Ceuta", "ES52" => "Europe/Madrid",
|
536
|
+
"ES53" => "Atlantic/Canary", "ES54" => "Europe/Madrid", "ES55" => "Europe/Madrid",
|
537
|
+
"ES56" => "Europe/Madrid", "ES57" => "Europe/Madrid", "ES58" => "Europe/Madrid",
|
538
|
+
"ES59" => "Europe/Madrid", "ES60" => "Europe/Madrid", "GL01" => "America/Thule",
|
539
|
+
"GL02" => "America/Godthab", "GL03" => "America/Godthab", "ID01" => "Asia/Pontianak",
|
540
|
+
"ID02" => "Asia/Makassar", "ID03" => "Asia/Jakarta", "ID04" => "Asia/Jakarta",
|
541
|
+
"ID05" => "Asia/Jakarta", "ID06" => "Asia/Jakarta", "ID07" => "Asia/Jakarta",
|
542
|
+
"ID08" => "Asia/Jakarta", "ID09" => "Asia/Jayapura", "ID10" => "Asia/Jakarta",
|
543
|
+
"ID11" => "Asia/Pontianak", "ID12" => "Asia/Makassar", "ID13" => "Asia/Makassar",
|
544
|
+
"ID14" => "Asia/Makassar", "ID15" => "Asia/Jakarta", "ID16" => "Asia/Makassar",
|
545
|
+
"ID17" => "Asia/Makassar", "ID18" => "Asia/Makassar", "ID19" => "Asia/Pontianak",
|
546
|
+
"ID20" => "Asia/Makassar", "ID21" => "Asia/Makassar", "ID22" => "Asia/Makassar",
|
547
|
+
"ID23" => "Asia/Makassar", "ID24" => "Asia/Jakarta", "ID25" => "Asia/Pontianak",
|
548
|
+
"ID26" => "Asia/Pontianak", "ID30" => "Asia/Jakarta", "ID31" => "Asia/Makassar",
|
549
|
+
"ID33" => "Asia/Jakarta", "KZ01" => "Asia/Almaty", "KZ02" => "Asia/Almaty",
|
550
|
+
"KZ03" => "Asia/Qyzylorda", "KZ04" => "Asia/Aqtobe", "KZ05" => "Asia/Qyzylorda",
|
551
|
+
"KZ06" => "Asia/Aqtau", "KZ07" => "Asia/Oral", "KZ08" => "Asia/Qyzylorda",
|
552
|
+
"KZ09" => "Asia/Aqtau", "KZ10" => "Asia/Qyzylorda", "KZ11" => "Asia/Almaty",
|
553
|
+
"KZ12" => "Asia/Qyzylorda", "KZ13" => "Asia/Aqtobe", "KZ14" => "Asia/Qyzylorda",
|
554
|
+
"KZ15" => "Asia/Almaty", "KZ16" => "Asia/Aqtobe", "KZ17" => "Asia/Almaty",
|
555
|
+
"MX01" => "America/Mexico_City", "MX02" => "America/Tijuana", "MX03" => "America/Hermosillo",
|
556
|
+
"MX04" => "America/Merida", "MX05" => "America/Mexico_City", "MX06" => "America/Chihuahua",
|
557
|
+
"MX07" => "America/Monterrey", "MX08" => "America/Mexico_City", "MX09" => "America/Mexico_City",
|
558
|
+
"MX10" => "America/Mazatlan", "MX11" => "America/Mexico_City", "MX12" => "America/Mexico_City",
|
559
|
+
"MX13" => "America/Mexico_City", "MX14" => "America/Mazatlan", "MX15" => "America/Chihuahua",
|
560
|
+
"MX16" => "America/Mexico_City", "MX17" => "America/Mexico_City", "MX18" => "America/Mazatlan",
|
561
|
+
"MX19" => "America/Monterrey", "MX20" => "America/Mexico_City", "MX21" => "America/Mexico_City",
|
562
|
+
"MX22" => "America/Mexico_City", "MX23" => "America/Cancun", "MX24" => "America/Mexico_City",
|
563
|
+
"MX25" => "America/Mazatlan", "MX26" => "America/Hermosillo", "MX27" => "America/Merida",
|
564
|
+
"MX28" => "America/Monterrey", "MX29" => "America/Mexico_City", "MX30" => "America/Mexico_City",
|
565
|
+
"MX31" => "America/Merida", "MX32" => "America/Monterrey", "MY01" => "Asia/Kuala_Lumpur",
|
566
|
+
"MY02" => "Asia/Kuala_Lumpur", "MY03" => "Asia/Kuala_Lumpur", "MY04" => "Asia/Kuala_Lumpur",
|
567
|
+
"MY05" => "Asia/Kuala_Lumpur", "MY06" => "Asia/Kuala_Lumpur", "MY07" => "Asia/Kuala_Lumpur",
|
568
|
+
"MY08" => "Asia/Kuala_Lumpur", "MY09" => "Asia/Kuala_Lumpur", "MY11" => "Asia/Kuching",
|
569
|
+
"MY12" => "Asia/Kuala_Lumpur", "MY13" => "Asia/Kuala_Lumpur", "MY14" => "Asia/Kuala_Lumpur",
|
570
|
+
"MY15" => "Asia/Kuching", "MY16" => "Asia/Kuching", "NZ85" => "Pacific/Auckland",
|
571
|
+
"NZE7" => "Pacific/Auckland", "NZE8" => "Pacific/Auckland", "NZE9" => "Pacific/Auckland",
|
572
|
+
"NZF1" => "Pacific/Auckland", "NZF2" => "Pacific/Auckland", "NZF3" => "Pacific/Auckland",
|
573
|
+
"NZF4" => "Pacific/Auckland", "NZF5" => "Pacific/Auckland", "NZF7" => "Pacific/Chatham",
|
574
|
+
"NZF8" => "Pacific/Auckland", "NZF9" => "Pacific/Auckland", "NZG1" => "Pacific/Auckland",
|
575
|
+
"NZG2" => "Pacific/Auckland", "NZG3" => "Pacific/Auckland", "PT02" => "Europe/Lisbon",
|
576
|
+
"PT03" => "Europe/Lisbon", "PT04" => "Europe/Lisbon", "PT05" => "Europe/Lisbon",
|
577
|
+
"PT06" => "Europe/Lisbon", "PT07" => "Europe/Lisbon", "PT08" => "Europe/Lisbon",
|
578
|
+
"PT09" => "Europe/Lisbon", "PT10" => "Atlantic/Madeira", "PT11" => "Europe/Lisbon",
|
579
|
+
"PT13" => "Europe/Lisbon", "PT14" => "Europe/Lisbon", "PT16" => "Europe/Lisbon",
|
580
|
+
"PT17" => "Europe/Lisbon", "PT18" => "Europe/Lisbon", "PT19" => "Europe/Lisbon",
|
581
|
+
"PT20" => "Europe/Lisbon", "PT21" => "Europe/Lisbon", "PT22" => "Europe/Lisbon",
|
582
|
+
"RU01" => "Europe/Volgograd", "RU02" => "Asia/Irkutsk", "RU03" => "Asia/Novokuznetsk",
|
583
|
+
"RU04" => "Asia/Novosibirsk", "RU05" => "Asia/Vladivostok", "RU06" => "Europe/Moscow",
|
584
|
+
"RU07" => "Europe/Volgograd", "RU08" => "Europe/Samara", "RU09" => "Europe/Moscow",
|
585
|
+
"RU10" => "Europe/Moscow", "RU11" => "Asia/Irkutsk", "RU13" => "Asia/Yekaterinburg",
|
586
|
+
"RU14" => "Asia/Irkutsk", "RU15" => "Asia/Anadyr", "RU16" => "Europe/Samara",
|
587
|
+
"RU17" => "Europe/Volgograd", "RU18" => "Asia/Krasnoyarsk", "RU20" => "Asia/Irkutsk",
|
588
|
+
"RU21" => "Europe/Moscow", "RU22" => "Europe/Volgograd", "RU23" => "Europe/Kaliningrad",
|
589
|
+
"RU24" => "Europe/Volgograd", "RU25" => "Europe/Moscow", "RU26" => "Asia/Kamchatka",
|
590
|
+
"RU27" => "Europe/Volgograd", "RU28" => "Europe/Moscow", "RU29" => "Asia/Novokuznetsk",
|
591
|
+
"RU30" => "Asia/Vladivostok", "RU31" => "Asia/Krasnoyarsk", "RU32" => "Asia/Omsk",
|
592
|
+
"RU33" => "Asia/Yekaterinburg", "RU34" => "Asia/Yekaterinburg", "RU35" => "Asia/Yekaterinburg",
|
593
|
+
"RU36" => "Asia/Anadyr", "RU37" => "Europe/Moscow", "RU38" => "Europe/Volgograd",
|
594
|
+
"RU39" => "Asia/Krasnoyarsk", "RU40" => "Asia/Yekaterinburg", "RU41" => "Europe/Moscow",
|
595
|
+
"RU42" => "Europe/Moscow", "RU43" => "Europe/Moscow", "RU44" => "Asia/Magadan",
|
596
|
+
"RU45" => "Europe/Samara", "RU46" => "Europe/Samara", "RU47" => "Europe/Moscow",
|
597
|
+
"RU48" => "Europe/Moscow", "RU49" => "Europe/Moscow", "RU50" => "Asia/Yekaterinburg",
|
598
|
+
"RU51" => "Europe/Moscow", "RU52" => "Europe/Moscow", "RU53" => "Asia/Novosibirsk",
|
599
|
+
"RU54" => "Asia/Omsk", "RU55" => "Europe/Samara", "RU56" => "Europe/Moscow",
|
600
|
+
"RU57" => "Europe/Samara", "RU58" => "Asia/Yekaterinburg", "RU59" => "Asia/Vladivostok",
|
601
|
+
"RU60" => "Europe/Kaliningrad", "RU61" => "Europe/Volgograd", "RU62" => "Europe/Moscow",
|
602
|
+
"RU63" => "Asia/Yakutsk", "RU64" => "Asia/Sakhalin", "RU65" => "Europe/Samara",
|
603
|
+
"RU66" => "Europe/Moscow", "RU67" => "Europe/Samara", "RU68" => "Europe/Volgograd",
|
604
|
+
"RU69" => "Europe/Moscow", "RU70" => "Europe/Volgograd", "RU71" => "Asia/Yekaterinburg",
|
605
|
+
"RU72" => "Europe/Moscow", "RU73" => "Europe/Samara", "RU74" => "Asia/Krasnoyarsk",
|
606
|
+
"RU75" => "Asia/Novosibirsk", "RU76" => "Europe/Moscow", "RU77" => "Europe/Moscow",
|
607
|
+
"RU78" => "Asia/Yekaterinburg", "RU79" => "Asia/Irkutsk", "RU80" => "Asia/Yekaterinburg",
|
608
|
+
"RU81" => "Europe/Samara", "RU82" => "Asia/Irkutsk", "RU83" => "Europe/Moscow",
|
609
|
+
"RU84" => "Europe/Volgograd", "RU85" => "Europe/Moscow", "RU86" => "Europe/Moscow",
|
610
|
+
"RU87" => "Asia/Novosibirsk", "RU88" => "Europe/Moscow", "RU89" => "Asia/Vladivostok",
|
611
|
+
"UA01" => "Europe/Kiev", "UA02" => "Europe/Kiev", "UA03" => "Europe/Uzhgorod",
|
612
|
+
"UA04" => "Europe/Zaporozhye", "UA05" => "Europe/Zaporozhye", "UA06" => "Europe/Uzhgorod",
|
613
|
+
"UA07" => "Europe/Zaporozhye", "UA08" => "Europe/Simferopol", "UA09" => "Europe/Kiev",
|
614
|
+
"UA10" => "Europe/Zaporozhye", "UA11" => "Europe/Simferopol", "UA13" => "Europe/Kiev",
|
615
|
+
"UA14" => "Europe/Zaporozhye", "UA15" => "Europe/Uzhgorod", "UA16" => "Europe/Zaporozhye",
|
616
|
+
"UA17" => "Europe/Simferopol", "UA18" => "Europe/Zaporozhye", "UA19" => "Europe/Kiev",
|
617
|
+
"UA20" => "Europe/Simferopol", "UA21" => "Europe/Kiev", "UA22" => "Europe/Uzhgorod",
|
618
|
+
"UA23" => "Europe/Kiev", "UA24" => "Europe/Uzhgorod", "UA25" => "Europe/Uzhgorod",
|
619
|
+
"UA26" => "Europe/Zaporozhye", "UA27" => "Europe/Kiev", "UZ01" => "Asia/Tashkent",
|
620
|
+
"UZ02" => "Asia/Samarkand", "UZ03" => "Asia/Tashkent", "UZ06" => "Asia/Tashkent",
|
621
|
+
"UZ07" => "Asia/Samarkand", "UZ08" => "Asia/Samarkand", "UZ09" => "Asia/Samarkand",
|
622
|
+
"UZ10" => "Asia/Samarkand", "UZ12" => "Asia/Samarkand", "UZ13" => "Asia/Tashkent",
|
623
|
+
"UZ14" => "Asia/Tashkent", "TL" => "Asia/Dili", "PF" => "Pacific/Marquesas"
|
624
|
+
}
|
625
|
+
|
398
626
|
public
|
399
627
|
# Edition enumeration:
|
400
628
|
(GEOIP_COUNTRY_EDITION,
|
@@ -532,6 +760,7 @@ class GeoIP
|
|
532
760
|
# * The latitude
|
533
761
|
# * The longitude
|
534
762
|
# * The dma_code and area_code, if available (REV1 City database)
|
763
|
+
# * The timezone name, if known
|
535
764
|
private
|
536
765
|
|
537
766
|
def read_city(pos, hostname = '', ip = '')
|
@@ -585,6 +814,8 @@ class GeoIP
|
|
585
814
|
area_code = dmaarea_combo % 1000;
|
586
815
|
us_area_codes = [ dma_code, area_code ]
|
587
816
|
@iter_pos += 3 unless @iter_pos.nil?
|
817
|
+
else
|
818
|
+
us_area_codes = [ nil, nil ] # Ensure that TimeZone is always at the same offset
|
588
819
|
end
|
589
820
|
|
590
821
|
[ hostname, # Requested hostname
|
@@ -598,7 +829,9 @@ class GeoIP
|
|
598
829
|
postal_code, # Postal code
|
599
830
|
latitude,
|
600
831
|
longitude,
|
601
|
-
] +
|
832
|
+
] +
|
833
|
+
us_area_codes +
|
834
|
+
[ TimeZone["#{CountryCode[code]}#{region}"] || TimeZone["#{CountryCode[code]}"] ]
|
602
835
|
end
|
603
836
|
|
604
837
|
public
|
@@ -636,6 +869,13 @@ class GeoIP
|
|
636
869
|
throw "Invalid GeoIP database type, can't look up City by IP"
|
637
870
|
end
|
638
871
|
pos = seek_record(ipnum);
|
872
|
+
# This next statement was added to MaxMind's C version after it was rewritten in Ruby.
|
873
|
+
# It prevents unassigned IP addresses from returning bogus data. There was concern over
|
874
|
+
# whether the changes to an application's behaviour were always correct, but this has been
|
875
|
+
# tested using an exhaustive search of the top 16 bits of the IP address space. The records
|
876
|
+
# where the change takes effect contained *no* valid data. If you're concerned, email me,
|
877
|
+
# and I'll send you the test program so you can test whatever IP range you think is causing
|
878
|
+
# problems, as I don't care to undertake an exhaustive search of the 32-bit space.
|
639
879
|
return nil if pos == @databaseSegments[0]
|
640
880
|
read_city(pos, hostname, ip)
|
641
881
|
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geoip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 49
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 8
|
9
|
+
- 7
|
10
|
+
version: 0.8.7
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Clifford Heath
|
@@ -10,19 +16,25 @@ autorequire:
|
|
10
16
|
bindir: bin
|
11
17
|
cert_chain: []
|
12
18
|
|
13
|
-
date:
|
19
|
+
date: 2010-08-16 00:00:00 +10:00
|
14
20
|
default_executable:
|
15
21
|
dependencies:
|
16
22
|
- !ruby/object:Gem::Dependency
|
17
23
|
name: hoe
|
18
|
-
|
19
|
-
|
20
|
-
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
21
27
|
requirements:
|
22
28
|
- - ">="
|
23
29
|
- !ruby/object:Gem::Version
|
30
|
+
hash: 5
|
31
|
+
segments:
|
32
|
+
- 2
|
33
|
+
- 3
|
34
|
+
- 3
|
24
35
|
version: 2.3.3
|
25
|
-
|
36
|
+
type: :development
|
37
|
+
version_requirements: *id001
|
26
38
|
description: |-
|
27
39
|
GeoIP searches a GeoIP database for a given host or IP address, and
|
28
40
|
returns information about the country where the IP address is allocated,
|
@@ -56,21 +68,27 @@ rdoc_options:
|
|
56
68
|
require_paths:
|
57
69
|
- lib
|
58
70
|
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
59
72
|
requirements:
|
60
73
|
- - ">="
|
61
74
|
- !ruby/object:Gem::Version
|
75
|
+
hash: 3
|
76
|
+
segments:
|
77
|
+
- 0
|
62
78
|
version: "0"
|
63
|
-
version:
|
64
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
65
81
|
requirements:
|
66
82
|
- - ">="
|
67
83
|
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 0
|
68
87
|
version: "0"
|
69
|
-
version:
|
70
88
|
requirements: []
|
71
89
|
|
72
90
|
rubyforge_project: geoip
|
73
|
-
rubygems_version: 1.3.
|
91
|
+
rubygems_version: 1.3.7
|
74
92
|
signing_key:
|
75
93
|
specification_version: 3
|
76
94
|
summary: GeoIP searches a GeoIP database for a given host or IP address, and returns information about the country where the IP address is allocated, and the city, ISP and other information, if you have that database version.
|