1 """
2 Constants needed for parsing binary GeoIP databases. It is part of the pygeoip
3 package.
4
5 @author: Jennifer Ennis <zaylea at gmail dot com>
6
7 @license:
8 Copyright(C) 2004 MaxMind LLC
9
10 This program is free software: you can redistribute it and/or modify
11 it under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation, either version 3 of the License, or
13 (at your option) any later version.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU Lesser General Public License
21 along with this program. If not, see <http://www.gnu.org/licenses/lgpl.txt>.
22 """
23
24 GEOIP_STANDARD = 0
25 GEOIP_MEMORY_CACHE = 1
26
27 DMA_MAP = {
28 500 : 'Portland-Auburn, ME',
29 501 : 'New York, NY',
30 502 : 'Binghamton, NY',
31 503 : 'Macon, GA',
32 504 : 'Philadelphia, PA',
33 505 : 'Detroit, MI',
34 506 : 'Boston, MA',
35 507 : 'Savannah, GA',
36 508 : 'Pittsburgh, PA',
37 509 : 'Ft Wayne, IN',
38 510 : 'Cleveland, OH',
39 511 : 'Washington, DC',
40 512 : 'Baltimore, MD',
41 513 : 'Flint, MI',
42 514 : 'Buffalo, NY',
43 515 : 'Cincinnati, OH',
44 516 : 'Erie, PA',
45 517 : 'Charlotte, NC',
46 518 : 'Greensboro, NC',
47 519 : 'Charleston, SC',
48 520 : 'Augusta, GA',
49 521 : 'Providence, RI',
50 522 : 'Columbus, GA',
51 523 : 'Burlington, VT',
52 524 : 'Atlanta, GA',
53 525 : 'Albany, GA',
54 526 : 'Utica-Rome, NY',
55 527 : 'Indianapolis, IN',
56 528 : 'Miami, FL',
57 529 : 'Louisville, KY',
58 530 : 'Tallahassee, FL',
59 531 : 'Tri-Cities, TN',
60 532 : 'Albany-Schenectady-Troy, NY',
61 533 : 'Hartford, CT',
62 534 : 'Orlando, FL',
63 535 : 'Columbus, OH',
64 536 : 'Youngstown-Warren, OH',
65 537 : 'Bangor, ME',
66 538 : 'Rochester, NY',
67 539 : 'Tampa, FL',
68 540 : 'Traverse City-Cadillac, MI',
69 541 : 'Lexington, KY',
70 542 : 'Dayton, OH',
71 543 : 'Springfield-Holyoke, MA',
72 544 : 'Norfolk-Portsmouth, VA',
73 545 : 'Greenville-New Bern-Washington, NC',
74 546 : 'Columbia, SC',
75 547 : 'Toledo, OH',
76 548 : 'West Palm Beach, FL',
77 549 : 'Watertown, NY',
78 550 : 'Wilmington, NC',
79 551 : 'Lansing, MI',
80 552 : 'Presque Isle, ME',
81 553 : 'Marquette, MI',
82 554 : 'Wheeling, WV',
83 555 : 'Syracuse, NY',
84 556 : 'Richmond-Petersburg, VA',
85 557 : 'Knoxville, TN',
86 558 : 'Lima, OH',
87 559 : 'Bluefield-Beckley-Oak Hill, WV',
88 560 : 'Raleigh-Durham, NC',
89 561 : 'Jacksonville, FL',
90 563 : 'Grand Rapids, MI',
91 564 : 'Charleston-Huntington, WV',
92 565 : 'Elmira, NY',
93 566 : 'Harrisburg-Lancaster-Lebanon-York, PA',
94 567 : 'Greenville-Spartenburg, SC',
95 569 : 'Harrisonburg, VA',
96 570 : 'Florence-Myrtle Beach, SC',
97 571 : 'Ft Myers, FL',
98 573 : 'Roanoke-Lynchburg, VA',
99 574 : 'Johnstown-Altoona, PA',
100 575 : 'Chattanooga, TN',
101 576 : 'Salisbury, MD',
102 577 : 'Wilkes Barre-Scranton, PA',
103 581 : 'Terre Haute, IN',
104 582 : 'Lafayette, IN',
105 583 : 'Alpena, MI',
106 584 : 'Charlottesville, VA',
107 588 : 'South Bend, IN',
108 592 : 'Gainesville, FL',
109 596 : 'Zanesville, OH',
110 597 : 'Parkersburg, WV',
111 598 : 'Clarksburg-Weston, WV',
112 600 : 'Corpus Christi, TX',
113 602 : 'Chicago, IL',
114 603 : 'Joplin-Pittsburg, MO',
115 604 : 'Columbia-Jefferson City, MO',
116 605 : 'Topeka, KS',
117 606 : 'Dothan, AL',
118 609 : 'St Louis, MO',
119 610 : 'Rockford, IL',
120 611 : 'Rochester-Mason City-Austin, MN',
121 612 : 'Shreveport, LA',
122 613 : 'Minneapolis-St Paul, MN',
123 616 : 'Kansas City, MO',
124 617 : 'Milwaukee, WI',
125 618 : 'Houston, TX',
126 619 : 'Springfield, MO',
127 620 : 'Tuscaloosa, AL',
128 622 : 'New Orleans, LA',
129 623 : 'Dallas-Fort Worth, TX',
130 624 : 'Sioux City, IA',
131 625 : 'Waco-Temple-Bryan, TX',
132 626 : 'Victoria, TX',
133 627 : 'Wichita Falls, TX',
134 628 : 'Monroe, LA',
135 630 : 'Birmingham, AL',
136 631 : 'Ottumwa-Kirksville, IA',
137 632 : 'Paducah, KY',
138 633 : 'Odessa-Midland, TX',
139 634 : 'Amarillo, TX',
140 635 : 'Austin, TX',
141 636 : 'Harlingen, TX',
142 637 : 'Cedar Rapids-Waterloo, IA',
143 638 : 'St Joseph, MO',
144 639 : 'Jackson, TN',
145 640 : 'Memphis, TN',
146 641 : 'San Antonio, TX',
147 642 : 'Lafayette, LA',
148 643 : 'Lake Charles, LA',
149 644 : 'Alexandria, LA',
150 646 : 'Anniston, AL',
151 647 : 'Greenwood-Greenville, MS',
152 648 : 'Champaign-Springfield-Decatur, IL',
153 649 : 'Evansville, IN',
154 650 : 'Oklahoma City, OK',
155 651 : 'Lubbock, TX',
156 652 : 'Omaha, NE',
157 656 : 'Panama City, FL',
158 657 : 'Sherman, TX',
159 658 : 'Green Bay-Appleton, WI',
160 659 : 'Nashville, TN',
161 661 : 'San Angelo, TX',
162 662 : 'Abilene-Sweetwater, TX',
163 669 : 'Madison, WI',
164 670 : 'Ft Smith-Fay-Springfield, AR',
165 671 : 'Tulsa, OK',
166 673 : 'Columbus-Tupelo-West Point, MS',
167 675 : 'Peoria-Bloomington, IL',
168 676 : 'Duluth, MN',
169 678 : 'Wichita, KS',
170 679 : 'Des Moines, IA',
171 682 : 'Davenport-Rock Island-Moline, IL',
172 686 : 'Mobile, AL',
173 687 : 'Minot-Bismarck-Dickinson, ND',
174 691 : 'Huntsville, AL',
175 692 : 'Beaumont-Port Author, TX',
176 693 : 'Little Rock-Pine Bluff, AR',
177 698 : 'Montgomery, AL',
178 702 : 'La Crosse-Eau Claire, WI',
179 705 : 'Wausau-Rhinelander, WI',
180 709 : 'Tyler-Longview, TX',
181 710 : 'Hattiesburg-Laurel, MS',
182 711 : 'Meridian, MS',
183 716 : 'Baton Rouge, LA',
184 717 : 'Quincy, IL',
185 718 : 'Jackson, MS',
186 722 : 'Lincoln-Hastings, NE',
187 724 : 'Fargo-Valley City, ND',
188 725 : 'Sioux Falls, SD',
189 734 : 'Jonesboro, AR',
190 736 : 'Bowling Green, KY',
191 737 : 'Mankato, MN',
192 740 : 'North Platte, NE',
193 743 : 'Anchorage, AK',
194 744 : 'Honolulu, HI',
195 745 : 'Fairbanks, AK',
196 746 : 'Biloxi-Gulfport, MS',
197 747 : 'Juneau, AK',
198 749 : 'Laredo, TX',
199 751 : 'Denver, CO',
200 752 : 'Colorado Springs, CO',
201 753 : 'Phoenix, AZ',
202 754 : 'Butte-Bozeman, MT',
203 755 : 'Great Falls, MT',
204 756 : 'Billings, MT',
205 757 : 'Boise, ID',
206 758 : 'Idaho Falls-Pocatello, ID',
207 759 : 'Cheyenne, WY',
208 760 : 'Twin Falls, ID',
209 762 : 'Missoula, MT',
210 764 : 'Rapid City, SD',
211 765 : 'El Paso, TX',
212 766 : 'Helena, MT',
213 767 : 'Casper-Riverton, WY',
214 770 : 'Salt Lake City, UT',
215 771 : 'Yuma, AZ',
216 773 : 'Grand Junction, CO',
217 789 : 'Tucson, AZ',
218 790 : 'Albuquerque, NM',
219 798 : 'Glendive, MT',
220 800 : 'Bakersfield, CA',
221 801 : 'Eugene, OR',
222 802 : 'Eureka, CA',
223 803 : 'Los Angeles, CA',
224 804 : 'Palm Springs, CA',
225 807 : 'San Francisco, CA',
226 810 : 'Yakima-Pasco, WA',
227 811 : 'Reno, NV',
228 813 : 'Medford-Klamath Falls, OR',
229 819 : 'Seattle-Tacoma, WA',
230 820 : 'Portland, OR',
231 821 : 'Bend, OR',
232 825 : 'San Diego, CA',
233 828 : 'Monterey-Salinas, CA',
234 839 : 'Las Vegas, NV',
235 855 : 'Santa Barbara, CA',
236 862 : 'Sacramento, CA',
237 866 : 'Fresno, CA',
238 868 : 'Chico-Redding, CA',
239 881 : 'Spokane, WA'
240 }
241
242 COUNTRY_CODES = (
243 '', 'AP', 'EU', 'AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AN', 'AO', 'AQ',
244 'AR', 'AS', 'AT', 'AU', 'AW', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH',
245 'BI', 'BJ', 'BM', 'BN', 'BO', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA',
246 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU',
247 'CV', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG',
248 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'FX', 'GA', 'GB',
249 'GD', 'GE', 'GF', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT',
250 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IN',
251 'IO', 'IQ', 'IR', 'IS', 'IT', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM',
252 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS',
253 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN',
254 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA',
255 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA',
256 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY',
257 'QA', 'RE', 'RO', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI',
258 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'ST', 'SV', 'SY', 'SZ', 'TC', 'TD',
259 'TF', 'TG', 'TH', 'TJ', 'TK', 'TM', 'TN', 'TO', 'TL', 'TR', 'TT', 'TV', 'TW',
260 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN',
261 'VU', 'WF', 'WS', 'YE', 'YT', 'RS', 'ZA', 'ZM', 'ME', 'ZW', 'A1', 'A2', 'O1',
262 'AX', 'GG', 'IM', 'JE', 'BL', 'MF'
263 )
264
265 COUNTRY_CODES3 = (
266 '','AP','EU','AND','ARE','AFG','ATG','AIA','ALB','ARM','ANT','AGO','AQ','ARG',
267 'ASM','AUT','AUS','ABW','AZE','BIH','BRB','BGD','BEL','BFA','BGR','BHR','BDI',
268 'BEN','BMU','BRN','BOL','BRA','BHS','BTN','BV','BWA','BLR','BLZ','CAN','CC',
269 'COD','CAF','COG','CHE','CIV','COK','CHL','CMR','CHN','COL','CRI','CUB','CPV',
270 'CX','CYP','CZE','DEU','DJI','DNK','DMA','DOM','DZA','ECU','EST','EGY','ESH',
271 'ERI','ESP','ETH','FIN','FJI','FLK','FSM','FRO','FRA','FX','GAB','GBR','GRD',
272 'GEO','GUF','GHA','GIB','GRL','GMB','GIN','GLP','GNQ','GRC','GS','GTM','GUM',
273 'GNB','GUY','HKG','HM','HND','HRV','HTI','HUN','IDN','IRL','ISR','IND','IO',
274 'IRQ','IRN','ISL','ITA','JAM','JOR','JPN','KEN','KGZ','KHM','KIR','COM','KNA',
275 'PRK','KOR','KWT','CYM','KAZ','LAO','LBN','LCA','LIE','LKA','LBR','LSO','LTU',
276 'LUX','LVA','LBY','MAR','MCO','MDA','MDG','MHL','MKD','MLI','MMR','MNG','MAC',
277 'MNP','MTQ','MRT','MSR','MLT','MUS','MDV','MWI','MEX','MYS','MOZ','NAM','NCL',
278 'NER','NFK','NGA','NIC','NLD','NOR','NPL','NRU','NIU','NZL','OMN','PAN','PER',
279 'PYF','PNG','PHL','PAK','POL','SPM','PCN','PRI','PSE','PRT','PLW','PRY','QAT',
280 'REU','ROU','RUS','RWA','SAU','SLB','SYC','SDN','SWE','SGP','SHN','SVN','SJM',
281 'SVK','SLE','SMR','SEN','SOM','SUR','STP','SLV','SYR','SWZ','TCA','TCD','TF',
282 'TGO','THA','TJK','TKL','TLS','TKM','TUN','TON','TUR','TTO','TUV','TWN','TZA',
283 'UKR','UGA','UM','USA','URY','UZB','VAT','VCT','VEN','VGB','VIR','VNM','VUT',
284 'WLF','WSM','YEM','YT','SRB','ZAF','ZMB','MNE','ZWE','A1','A2','O1',
285 'ALA','GGY','IMN','JEY','BLM','MAF'
286 )
287
288 COUNTRY_NAMES = (
289 "", "Asia/Pacific Region", "Europe", "Andorra", "United Arab Emirates",
290 "Afghanistan", "Antigua and Barbuda", "Anguilla", "Albania", "Armenia",
291 "Netherlands Antilles", "Angola", "Antarctica", "Argentina", "American Samoa",
292 "Austria", "Australia", "Aruba", "Azerbaijan", "Bosnia and Herzegovina",
293 "Barbados", "Bangladesh", "Belgium", "Burkina Faso", "Bulgaria", "Bahrain",
294 "Burundi", "Benin", "Bermuda", "Brunei Darussalam", "Bolivia", "Brazil",
295 "Bahamas", "Bhutan", "Bouvet Island", "Botswana", "Belarus", "Belize",
296 "Canada", "Cocos (Keeling) Islands", "Congo, The Democratic Republic of the",
297 "Central African Republic", "Congo", "Switzerland", "Cote D'Ivoire", "Cook Islands",
298 "Chile", "Cameroon", "China", "Colombia", "Costa Rica", "Cuba", "Cape Verde",
299 "Christmas Island", "Cyprus", "Czech Republic", "Germany", "Djibouti",
300 "Denmark", "Dominica", "Dominican Republic", "Algeria", "Ecuador", "Estonia",
301 "Egypt", "Western Sahara", "Eritrea", "Spain", "Ethiopia", "Finland", "Fiji",
302 "Falkland Islands (Malvinas)", "Micronesia, Federated States of", "Faroe Islands",
303 "France", "France, Metropolitan", "Gabon", "United Kingdom",
304 "Grenada", "Georgia", "French Guiana", "Ghana", "Gibraltar", "Greenland",
305 "Gambia", "Guinea", "Guadeloupe", "Equatorial Guinea", "Greece",
306 "South Georgia and the South Sandwich Islands",
307 "Guatemala", "Guam", "Guinea-Bissau",
308 "Guyana", "Hong Kong", "Heard Island and McDonald Islands", "Honduras",
309 "Croatia", "Haiti", "Hungary", "Indonesia", "Ireland", "Israel", "India",
310 "British Indian Ocean Territory", "Iraq", "Iran, Islamic Republic of",
311 "Iceland", "Italy", "Jamaica", "Jordan", "Japan", "Kenya", "Kyrgyzstan",
312 "Cambodia", "Kiribati", "Comoros", "Saint Kitts and Nevis",
313 "Korea, Democratic People's Republic of",
314 "Korea, Republic of", "Kuwait", "Cayman Islands",
315 "Kazakstan", "Lao People's Democratic Republic", "Lebanon", "Saint Lucia",
316 "Liechtenstein", "Sri Lanka", "Liberia", "Lesotho", "Lithuania", "Luxembourg",
317 "Latvia", "Libyan Arab Jamahiriya", "Morocco", "Monaco", "Moldova, Republic of",
318 "Madagascar", "Marshall Islands", "Macedonia",
319 "Mali", "Myanmar", "Mongolia", "Macau", "Northern Mariana Islands",
320 "Martinique", "Mauritania", "Montserrat", "Malta", "Mauritius", "Maldives",
321 "Malawi", "Mexico", "Malaysia", "Mozambique", "Namibia", "New Caledonia",
322 "Niger", "Norfolk Island", "Nigeria", "Nicaragua", "Netherlands", "Norway",
323 "Nepal", "Nauru", "Niue", "New Zealand", "Oman", "Panama", "Peru", "French Polynesia",
324 "Papua New Guinea", "Philippines", "Pakistan", "Poland", "Saint Pierre and Miquelon",
325 "Pitcairn Islands", "Puerto Rico", "Palestinian Territory",
326 "Portugal", "Palau", "Paraguay", "Qatar", "Reunion", "Romania",
327 "Russian Federation", "Rwanda", "Saudi Arabia", "Solomon Islands",
328 "Seychelles", "Sudan", "Sweden", "Singapore", "Saint Helena", "Slovenia",
329 "Svalbard and Jan Mayen", "Slovakia", "Sierra Leone", "San Marino", "Senegal",
330 "Somalia", "Suriname", "Sao Tome and Principe", "El Salvador", "Syrian Arab Republic",
331 "Swaziland", "Turks and Caicos Islands", "Chad", "French Southern Territories",
332 "Togo", "Thailand", "Tajikistan", "Tokelau", "Turkmenistan",
333 "Tunisia", "Tonga", "Timor-Leste", "Turkey", "Trinidad and Tobago", "Tuvalu",
334 "Taiwan", "Tanzania, United Republic of", "Ukraine",
335 "Uganda", "United States Minor Outlying Islands", "United States", "Uruguay",
336 "Uzbekistan", "Holy See (Vatican City State)", "Saint Vincent and the Grenadines",
337 "Venezuela", "Virgin Islands, British", "Virgin Islands, U.S.",
338 "Vietnam", "Vanuatu", "Wallis and Futuna", "Samoa", "Yemen", "Mayotte",
339 "Serbia", "South Africa", "Zambia", "Montenegro", "Zimbabwe",
340 "Anonymous Proxy","Satellite Provider","Other",
341 "Aland Islands","Guernsey","Isle of Man","Jersey","Saint Barthelemy","Saint Martin"
342 )
343
344
345 STANDARD = 0
346 MEMORY_CACHE = 1
347 MMAP_CACHE = 8
348
349
350 COUNTRY_BEGIN = 16776960
351 STATE_BEGIN_REV0 = 16700000
352 STATE_BEGIN_REV1 = 16000000
353
354 STRUCTURE_INFO_MAX_SIZE = 20
355 DATABASE_INFO_MAX_SIZE = 100
356
357
358 COUNTRY_EDITION = 1
359 REGION_EDITION_REV0 = 7
360 REGION_EDITION_REV1 = 3
361 CITY_EDITION_REV0 = 6
362 CITY_EDITION_REV1 = 2
363 ORG_EDITION = 5
364 ISP_EDITION = 4
365 PROXY_EDITION = 8
366 ASNUM_EDITION = 9
367 NETSPEED_EDITION = 11
368 COUNTRY_EDITION_V6 = 12
369
370 SEGMENT_RECORD_LENGTH = 3
371 STANDARD_RECORD_LENGTH = 3
372 ORG_RECORD_LENGTH = 4
373 MAX_RECORD_LENGTH = 4
374 MAX_ORG_RECORD_LENGTH = 300
375 FULL_RECORD_LENGTH = 50
376
377 US_OFFSET = 1
378 CANADA_OFFSET = 677
379 WORLD_OFFSET = 1353
380 FIPS_RANGE = 360
381