Skip to content

Instantly share code, notes, and snippets.

@mateo08c
Created January 15, 2022 02:03
Show Gist options
  • Save mateo08c/f57ea353a2a06b808f7ba3fe45aa852e to your computer and use it in GitHub Desktop.
Save mateo08c/f57ea353a2a06b808f7ba3fe45aa852e to your computer and use it in GitHub Desktop.
Automatic region generation based on country for bind9 and MaxMind
<?php
$jsonFile = file_get_contents("region.json");
$json = json_decode($jsonFile, true);
$eu = [];
$na = [];
$skip = [];
foreach ($json as $item){
$distanceEU = getDistanceApi("Strasbourg", $item["region_name"], $item["region_code"]);
$distanceNA = getDistanceApi("Montreal", $item["region_name"], $item["region_code"]);
if (!is_null($distanceEU) and !is_null($distanceNA)){
$best = "";
if ($distanceEU < $distanceNA){
$best = "EU";
$eu[] = $item["region_code"];
} else {
$best = "NA";
$na[] = $item["region_code"];
}
$distance = ($best === "EU") ? $distanceEU ."km - ". count($eu) : $distanceNA ."km - ". count($na);
echo "The best ping for ".$item["region_code"]." is ".$best." $distance\n";
}else{
$skip[] = $item["region_code"];
echo "No ping found for ".$item["region_name"]."\n";
}
}
echo "EU:\n ".implode(";", $eu)."\n\n";
echo "NA:\n ".implode(";", $na)."\n\n";
echo "SKIP:\n ".implode(";", $skip)."\n\n";
function getDistanceApi($defaul, $region_name, $region_code){
$url = "https://fr.distance24.org/route.json?stops=$defaul|$region_name";
$json = file_get_contents(stripAccents($url));
$json = json_decode($json, true);
if (isset($json["distances"][0])){
return $json["distances"][0];
}else{
echo "Test $region_name by region code\n";
$url = "https://fr.distance24.org/route.json?stops=$defaul|$region_code";
$json = file_get_contents(stripAccents($url));
$json = json_decode($json, true);
return $json["distances"][0] ?? null;
}
}
function stripAccents($stripAccents){
setlocale(LC_ALL, 'en_US.utf8');
return str_replace(" ", "%20", iconv('UTF-8', 'ASCII//TRANSLIT', $stripAccents));
}
[
{
"region_code": "AD",
"region_name": "Andorra"
},
{
"region_code": "AE",
"region_name": "United Arab Emirates"
},
{
"region_code": "AF",
"region_name": "Afghanistan"
},
{
"region_code": "AG",
"region_name": "Antigua and Barbuda"
},
{
"region_code": "AI",
"region_name": "Anguilla"
},
{
"region_code": "AL",
"region_name": "Albania"
},
{
"region_code": "AM",
"region_name": "Armenia"
},
{
"region_code": "AO",
"region_name": "Angola"
},
{
"region_code": "AP",
"region_name": "Asia/Pacific Region"
},
{
"region_code": "AQ",
"region_name": "Antarctica"
},
{
"region_code": "AR",
"region_name": "Argentina"
},
{
"region_code": "AS",
"region_name": "American Samoa"
},
{
"region_code": "AT",
"region_name": "Austria"
},
{
"region_code": "AU",
"region_name": "Australia"
},
{
"region_code": "AW",
"region_name": "Aruba"
},
{
"region_code": "AX",
"region_name": "Aland Islands"
},
{
"region_code": "AZ",
"region_name": "Azerbaijan"
},
{
"region_code": "BA",
"region_name": "Bosnia and Herzegovina"
},
{
"region_code": "BB",
"region_name": "Barbados"
},
{
"region_code": "BD",
"region_name": "Bangladesh"
},
{
"region_code": "BE",
"region_name": "Belgium"
},
{
"region_code": "BF",
"region_name": "Burkina Faso"
},
{
"region_code": "BG",
"region_name": "Bulgaria"
},
{
"region_code": "BH",
"region_name": "Bahrain"
},
{
"region_code": "BI",
"region_name": "Burundi"
},
{
"region_code": "BJ",
"region_name": "Benin"
},
{
"region_code": "BL",
"region_name": "Saint Barthelemey"
},
{
"region_code": "BM",
"region_name": "Bermuda"
},
{
"region_code": "BN",
"region_name": "Brunei Darussalam"
},
{
"region_code": "BO",
"region_name": "Bolivia"
},
{
"region_code": "BQ",
"region_name": "Bonaire, Saint Eustatius and Saba"
},
{
"region_code": "BR",
"region_name": "Brazil"
},
{
"region_code": "BS",
"region_name": "Bahamas"
},
{
"region_code": "BT",
"region_name": "Bhutan"
},
{
"region_code": "BV",
"region_name": "Bouvet Island"
},
{
"region_code": "BW",
"region_name": "Botswana"
},
{
"region_code": "BY",
"region_name": "Belarus"
},
{
"region_code": "BZ",
"region_name": "Belize"
},
{
"region_code": "CA",
"region_name": "Canada"
},
{
"region_code": "CC",
"region_name": "Cocos (Keeling) Islands"
},
{
"region_code": "CD",
"region_name": "Congo, The Democratic Republic of the"
},
{
"region_code": "CF",
"region_name": "Central African Republic"
},
{
"region_code": "CG",
"region_name": "Congo"
},
{
"region_code": "CH",
"region_name": "Switzerland"
},
{
"region_code": "CI",
"region_name": "Cote d'Ivoire"
},
{
"region_code": "CK",
"region_name": "Cook Islands"
},
{
"region_code": "CL",
"region_name": "Chile"
},
{
"region_code": "CM",
"region_name": "Cameroon"
},
{
"region_code": "CN",
"region_name": "China"
},
{
"region_code": "CO",
"region_name": "Colombia"
},
{
"region_code": "CR",
"region_name": "Costa Rica"
},
{
"region_code": "CU",
"region_name": "Cuba"
},
{
"region_code": "CV",
"region_name": "Cape Verde"
},
{
"region_code": "CW",
"region_name": "Curacao"
},
{
"region_code": "CX",
"region_name": "Christmas Island"
},
{
"region_code": "CY",
"region_name": "Cyprus"
},
{
"region_code": "CZ",
"region_name": "Czech Republic"
},
{
"region_code": "DE",
"region_name": "Germany"
},
{
"region_code": "DJ",
"region_name": "Djibouti"
},
{
"region_code": "DK",
"region_name": "Denmark"
},
{
"region_code": "DM",
"region_name": "Dominica"
},
{
"region_code": "DO",
"region_name": "Dominican Republic"
},
{
"region_code": "DZ",
"region_name": "Algeria"
},
{
"region_code": "EC",
"region_name": "Ecuador"
},
{
"region_code": "EE",
"region_name": "Estonia"
},
{
"region_code": "EG",
"region_name": "Egypt"
},
{
"region_code": "EH",
"region_name": "Western Sahara"
},
{
"region_code": "ER",
"region_name": "Eritrea"
},
{
"region_code": "ES",
"region_name": "Spain"
},
{
"region_code": "ET",
"region_name": "Ethiopia"
},
{
"region_code": "EU",
"region_name": "Europe"
},
{
"region_code": "FI",
"region_name": "Finland"
},
{
"region_code": "FJ",
"region_name": "Fiji"
},
{
"region_code": "FK",
"region_name": "Falkland Islands (Malvinas)"
},
{
"region_code": "FM",
"region_name": "Micronesia, Federated States of"
},
{
"region_code": "FO",
"region_name": "Faroe Islands"
},
{
"region_code": "FR",
"region_name": "France"
},
{
"region_code": "GA",
"region_name": "Gabon"
},
{
"region_code": "GB",
"region_name": "United Kingdom"
},
{
"region_code": "GD",
"region_name": "Grenada"
},
{
"region_code": "GE",
"region_name": "Georgia"
},
{
"region_code": "GF",
"region_name": "French Guiana"
},
{
"region_code": "GG",
"region_name": "Guernsey"
},
{
"region_code": "GH",
"region_name": "Ghana"
},
{
"region_code": "GI",
"region_name": "Gibraltar"
},
{
"region_code": "GL",
"region_name": "Greenland"
},
{
"region_code": "GM",
"region_name": "Gambia"
},
{
"region_code": "GN",
"region_name": "Guinea"
},
{
"region_code": "GP",
"region_name": "Guadeloupe"
},
{
"region_code": "GQ",
"region_name": "Equatorial Guinea"
},
{
"region_code": "GR",
"region_name": "Greece"
},
{
"region_code": "GS",
"region_name": "South Georgia and the South Sandwich Islands"
},
{
"region_code": "GT",
"region_name": "Guatemala"
},
{
"region_code": "GU",
"region_name": "Guam"
},
{
"region_code": "GW",
"region_name": "Guinea-Bissau"
},
{
"region_code": "GY",
"region_name": "Guyana"
},
{
"region_code": "HK",
"region_name": "Hong Kong"
},
{
"region_code": "HM",
"region_name": "Heard Island and McDonald Islands"
},
{
"region_code": "HN",
"region_name": "Honduras"
},
{
"region_code": "HR",
"region_name": "Croatia"
},
{
"region_code": "HT",
"region_name": "Haiti"
},
{
"region_code": "HU",
"region_name": "Hungary"
},
{
"region_code": "ID",
"region_name": "Indonesia"
},
{
"region_code": "IE",
"region_name": "Ireland"
},
{
"region_code": "IL",
"region_name": "Israel"
},
{
"region_code": "IM",
"region_name": "Isle of Man"
},
{
"region_code": "IN",
"region_name": "India"
},
{
"region_code": "IO",
"region_name": "British Indian Ocean Territory"
},
{
"region_code": "IQ",
"region_name": "Iraq"
},
{
"region_code": "IR",
"region_name": "Iran, Islamic Republic of"
},
{
"region_code": "IS",
"region_name": "Iceland"
},
{
"region_code": "IT",
"region_name": "Italy"
},
{
"region_code": "JE",
"region_name": "Jersey"
},
{
"region_code": "JM",
"region_name": "Jamaica"
},
{
"region_code": "JO",
"region_name": "Jordan"
},
{
"region_code": "JP",
"region_name": "Japan"
},
{
"region_code": "KE",
"region_name": "Kenya"
},
{
"region_code": "KG",
"region_name": "Kyrgyzstan"
},
{
"region_code": "KH",
"region_name": "Cambodia"
},
{
"region_code": "KI",
"region_name": "Kiribati"
},
{
"region_code": "KM",
"region_name": "Comoros"
},
{
"region_code": "KN",
"region_name": "Saint Kitts and Nevis"
},
{
"region_code": "KP",
"region_name": "Korea, Democratic People's Republic of"
},
{
"region_code": "KR",
"region_name": "Korea, Republic of"
},
{
"region_code": "KW",
"region_name": "Kuwait"
},
{
"region_code": "KY",
"region_name": "Cayman Islands"
},
{
"region_code": "KZ",
"region_name": "Kazakhstan"
},
{
"region_code": "LA",
"region_name": "Lao People's Democratic Republic"
},
{
"region_code": "LB",
"region_name": "Lebanon"
},
{
"region_code": "LC",
"region_name": "Saint Lucia"
},
{
"region_code": "LI",
"region_name": "Liechtenstein"
},
{
"region_code": "LK",
"region_name": "Sri Lanka"
},
{
"region_code": "LR",
"region_name": "Liberia"
},
{
"region_code": "LS",
"region_name": "Lesotho"
},
{
"region_code": "LT",
"region_name": "Lithuania"
},
{
"region_code": "LU",
"region_name": "Luxembourg"
},
{
"region_code": "LV",
"region_name": "Latvia"
},
{
"region_code": "LY",
"region_name": "Libyan Arab Jamahiriya"
},
{
"region_code": "MA",
"region_name": "Morocco"
},
{
"region_code": "MC",
"region_name": "Monaco"
},
{
"region_code": "MD",
"region_name": "Moldova, Republic of"
},
{
"region_code": "ME",
"region_name": "Montenegro"
},
{
"region_code": "MF",
"region_name": "Saint Martin"
},
{
"region_code": "MG",
"region_name": "Madagascar"
},
{
"region_code": "MH",
"region_name": "Marshall Islands"
},
{
"region_code": "MK",
"region_name": "Macedonia"
},
{
"region_code": "ML",
"region_name": "Mali"
},
{
"region_code": "MM",
"region_name": "Myanmar"
},
{
"region_code": "MN",
"region_name": "Mongolia"
},
{
"region_code": "MO",
"region_name": "Macao"
},
{
"region_code": "MP",
"region_name": "Northern Mariana Islands"
},
{
"region_code": "MQ",
"region_name": "Martinique"
},
{
"region_code": "MR",
"region_name": "Mauritania"
},
{
"region_code": "MS",
"region_name": "Montserrat"
},
{
"region_code": "MT",
"region_name": "Malta"
},
{
"region_code": "MU",
"region_name": "Mauritius"
},
{
"region_code": "MV",
"region_name": "Maldives"
},
{
"region_code": "MW",
"region_name": "Malawi"
},
{
"region_code": "MX",
"region_name": "Mexico"
},
{
"region_code": "MY",
"region_name": "Malaysia"
},
{
"region_code": "MZ",
"region_name": "Mozambique"
},
{
"region_code": "NA",
"region_name": "Namibia"
},
{
"region_code": "NC",
"region_name": "New Caledonia"
},
{
"region_code": "NE",
"region_name": "Niger"
},
{
"region_code": "NF",
"region_name": "Norfolk Island"
},
{
"region_code": "NG",
"region_name": "Nigeria"
},
{
"region_code": "NI",
"region_name": "Nicaragua"
},
{
"region_code": "NL",
"region_name": "Netherlands"
},
{
"region_code": "NO",
"region_name": "Norway"
},
{
"region_code": "NP",
"region_name": "Nepal"
},
{
"region_code": "NR",
"region_name": "Nauru"
},
{
"region_code": "NU",
"region_name": "Niue"
},
{
"region_code": "NZ",
"region_name": "New Zealand"
},
{
"region_code": "OM",
"region_name": "Oman"
},
{
"region_code": "PA",
"region_name": "Panama"
},
{
"region_code": "PE",
"region_name": "Peru"
},
{
"region_code": "PF",
"region_name": "French Polynesia"
},
{
"region_code": "PG",
"region_name": "Papua New Guinea"
},
{
"region_code": "PH",
"region_name": "Philippines"
},
{
"region_code": "PK",
"region_name": "Pakistan"
},
{
"region_code": "PL",
"region_name": "Poland"
},
{
"region_code": "PM",
"region_name": "Saint Pierre and Miquelon"
},
{
"region_code": "PN",
"region_name": "Pitcairn"
},
{
"region_code": "PR",
"region_name": "Puerto Rico"
},
{
"region_code": "PS",
"region_name": "Palestinian Territory"
},
{
"region_code": "PT",
"region_name": "Portugal"
},
{
"region_code": "PW",
"region_name": "Palau"
},
{
"region_code": "PY",
"region_name": "Paraguay"
},
{
"region_code": "QA",
"region_name": "Qatar"
},
{
"region_code": "RE",
"region_name": "Reunion"
},
{
"region_code": "RO",
"region_name": "Romania"
},
{
"region_code": "RS",
"region_name": "Serbia"
},
{
"region_code": "RU",
"region_name": "Russian Federation"
},
{
"region_code": "RW",
"region_name": "Rwanda"
},
{
"region_code": "SA",
"region_name": "Saudi Arabia"
},
{
"region_code": "SB",
"region_name": "Solomon Islands"
},
{
"region_code": "SC",
"region_name": "Seychelles"
},
{
"region_code": "SD",
"region_name": "Sudan"
},
{
"region_code": "SE",
"region_name": "Sweden"
},
{
"region_code": "SG",
"region_name": "Singapore"
},
{
"region_code": "SH",
"region_name": "Saint Helena"
},
{
"region_code": "SI",
"region_name": "Slovenia"
},
{
"region_code": "SJ",
"region_name": "Svalbard and Jan Mayen"
},
{
"region_code": "SK",
"region_name": "Slovakia"
},
{
"region_code": "SL",
"region_name": "Sierra Leone"
},
{
"region_code": "SM",
"region_name": "San Marino"
},
{
"region_code": "SN",
"region_name": "Senegal"
},
{
"region_code": "SO",
"region_name": "Somalia"
},
{
"region_code": "SR",
"region_name": "Suriname"
},
{
"region_code": "SS",
"region_name": "South Sudan"
},
{
"region_code": "ST",
"region_name": "Sao Tome and Principe"
},
{
"region_code": "SV",
"region_name": "El Salvador"
},
{
"region_code": "SX",
"region_name": "Sint Maarten"
},
{
"region_code": "SY",
"region_name": "Syrian Arab Republic"
},
{
"region_code": "SZ",
"region_name": "Swaziland"
},
{
"region_code": "TC",
"region_name": "Turks and Caicos Islands"
},
{
"region_code": "TD",
"region_name": "Chad"
},
{
"region_code": "TF",
"region_name": "French Southern Territories"
},
{
"region_code": "TG",
"region_name": "Togo"
},
{
"region_code": "TH",
"region_name": "Thailand"
},
{
"region_code": "TJ",
"region_name": "Tajikistan"
},
{
"region_code": "TK",
"region_name": "Tokelau"
},
{
"region_code": "TL",
"region_name": "Timor-Leste"
},
{
"region_code": "TM",
"region_name": "Turkmenistan"
},
{
"region_code": "TN",
"region_name": "Tunisia"
},
{
"region_code": "TO",
"region_name": "Tonga"
},
{
"region_code": "TR",
"region_name": "Turkey"
},
{
"region_code": "TT",
"region_name": "Trinidad and Tobago"
},
{
"region_code": "TV",
"region_name": "Tuvalu"
},
{
"region_code": "TW",
"region_name": "Taiwan"
},
{
"region_code": "TZ",
"region_name": "Tanzania, United Republic of"
},
{
"region_code": "UA",
"region_name": "Ukraine"
},
{
"region_code": "UG",
"region_name": "Uganda"
},
{
"region_code": "UM",
"region_name": "United States Minor Outlying Islands"
},
{
"region_code": "US",
"region_name": "United States"
},
{
"region_code": "UY",
"region_name": "Uruguay"
},
{
"region_code": "UZ",
"region_name": "Uzbekistan"
},
{
"region_code": "VA",
"region_name": "Holy See (Vatican City State)"
},
{
"region_code": "VC",
"region_name": "Saint Vincent and the Grenadines"
},
{
"region_code": "VE",
"region_name": "Venezuela"
},
{
"region_code": "VG",
"region_name": "Virgin Islands, British"
},
{
"region_code": "VI",
"region_name": "Virgin Islands, U.S."
},
{
"region_code": "VN",
"region_name": "Vietnam"
},
{
"region_code": "VU",
"region_name": "Vanuatu"
},
{
"region_code": "WF",
"region_name": "Wallis and Futuna"
},
{
"region_code": "WS",
"region_name": "Samoa"
},
{
"region_code": "YE",
"region_name": "Yemen"
},
{
"region_code": "YT",
"region_name": "Mayotte"
},
{
"region_code": "ZA",
"region_name": "South Africa"
},
{
"region_code": "ZM",
"region_name": "Zambia"
},
{
"region_code": "ZW",
"region_name": "Zimbabwe"
}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment