Skip to content

Commit 9f3cfef

Browse files
committed
feat: add coordinates for 145 countries for GeoDNS fallback
Expanded LOCATION_COORDINATES from 22 to 145 countries covering: - All European countries (East and West) - All CIS countries - Major Asian countries - Middle East countries - North and South America - Major African countries - Oceania This enables coordinate-based fallback for GeoDNS when no exact agent exists in the client's country. Clients from any country will now get the nearest agent based on geographic distance. Examples: - Belarus (BY) -> nearest agent (DE, RU, PL) - Lithuania (LT) -> nearest agent (DE, PL) - France (FR) -> nearest agent (DE, IT, NL) - China (CN) -> nearest agent (HK, JP, SG)
1 parent fcfd735 commit 9f3cfef

File tree

1 file changed

+163
-21
lines changed

1 file changed

+163
-21
lines changed

dns/geo.go

Lines changed: 163 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,171 @@ type Coordinates struct {
88
Lon float64
99
}
1010

11+
// LOCATION_COORDINATES contains coordinates for all countries to enable
12+
// coordinate-based fallback for GeoDNS when no exact agent match exists
1113
var LOCATION_COORDINATES = map[string]Coordinates{
12-
"us": {Lat: 37.0902, Lon: -95.7129},
13-
"de": {Lat: 51.1657, Lon: 10.4515},
14-
"cz": {Lat: 49.8175, Lon: 15.4730},
15-
"ru": {Lat: 61.5240, Lon: 105.3188},
16-
"kz": {Lat: 48.0196, Lon: 66.9237},
17-
"ua": {Lat: 48.3794, Lon: 31.1656},
18-
"by": {Lat: 53.7098, Lon: 27.9534},
19-
"pl": {Lat: 51.9194, Lon: 19.1451},
20-
"gb": {Lat: 55.3781, Lon: -3.4360},
21-
"fr": {Lat: 46.2276, Lon: 2.2137},
22-
"it": {Lat: 41.8719, Lon: 12.5674},
23-
"es": {Lat: 40.4637, Lon: -3.7492},
24-
"nl": {Lat: 52.1326, Lon: 5.2913},
25-
"jp": {Lat: 36.2048, Lon: 138.2529},
26-
"hk": {Lat: 22.3193, Lon: 114.1694},
27-
"sg": {Lat: 1.3521, Lon: 103.8198},
28-
"au": {Lat: -25.2744, Lon: 133.7751},
29-
"br": {Lat: -14.2350, Lon: -51.9253},
30-
"in": {Lat: 20.5937, Lon: 78.9629},
31-
"tr": {Lat: 38.9637, Lon: 35.2433},
32-
"az": {Lat: 40.1431, Lon: 47.5769}, // Azerbaijan
14+
// North America
15+
"us": {Lat: 37.0902, Lon: -95.7129}, // United States
16+
"ca": {Lat: 56.1304, Lon: -106.3468}, // Canada
17+
"mx": {Lat: 23.6345, Lon: -102.5528}, // Mexico
18+
19+
// Europe
20+
"de": {Lat: 51.1657, Lon: 10.4515}, // Germany
21+
"fr": {Lat: 46.2276, Lon: 2.2137}, // France
22+
"gb": {Lat: 55.3781, Lon: -3.4360}, // United Kingdom
23+
"it": {Lat: 41.8719, Lon: 12.5674}, // Italy
24+
"es": {Lat: 40.4637, Lon: -3.7492}, // Spain
25+
"nl": {Lat: 52.1326, Lon: 5.2913}, // Netherlands
3326
"be": {Lat: 50.8503, Lon: 4.3517}, // Belgium
27+
"ch": {Lat: 46.8182, Lon: 8.2275}, // Switzerland
28+
"at": {Lat: 47.5162, Lon: 14.5501}, // Austria
29+
"pl": {Lat: 51.9194, Lon: 19.1451}, // Poland
30+
"cz": {Lat: 49.8175, Lon: 15.4730}, // Czech Republic
31+
"se": {Lat: 60.1282, Lon: 18.6435}, // Sweden
32+
"no": {Lat: 60.4720, Lon: 8.4689}, // Norway
33+
"dk": {Lat: 56.2639, Lon: 9.5018}, // Denmark
34+
"fi": {Lat: 61.9241, Lon: 25.7482}, // Finland
35+
"ie": {Lat: 53.1424, Lon: -7.6921}, // Ireland
36+
"pt": {Lat: 39.3999, Lon: -8.2245}, // Portugal
37+
"gr": {Lat: 39.0742, Lon: 21.8243}, // Greece
38+
"hu": {Lat: 47.1625, Lon: 19.5033}, // Hungary
39+
"ro": {Lat: 45.9432, Lon: 24.9668}, // Romania
40+
"bg": {Lat: 42.7339, Lon: 25.4858}, // Bulgaria
41+
"sk": {Lat: 48.6690, Lon: 19.6990}, // Slovakia
42+
"hr": {Lat: 45.1000, Lon: 15.2000}, // Croatia
43+
"si": {Lat: 46.1512, Lon: 14.9955}, // Slovenia
44+
"lt": {Lat: 55.1694, Lon: 23.8813}, // Lithuania
45+
"lv": {Lat: 56.8796, Lon: 24.6032}, // Latvia
46+
"ee": {Lat: 58.5953, Lon: 25.0136}, // Estonia
47+
"lu": {Lat: 49.8153, Lon: 6.1296}, // Luxembourg
48+
"mt": {Lat: 35.9375, Lon: 14.3754}, // Malta
49+
"cy": {Lat: 35.1264, Lon: 33.4299}, // Cyprus
50+
51+
// Eastern Europe / CIS
52+
"ru": {Lat: 61.5240, Lon: 105.3188}, // Russia
53+
"ua": {Lat: 48.3794, Lon: 31.1656}, // Ukraine
54+
"by": {Lat: 53.7098, Lon: 27.9534}, // Belarus
55+
"kz": {Lat: 48.0196, Lon: 66.9237}, // Kazakhstan
56+
"md": {Lat: 47.4116, Lon: 28.3699}, // Moldova
57+
"az": {Lat: 40.1431, Lon: 47.5769}, // Azerbaijan
58+
"am": {Lat: 40.0691, Lon: 45.0382}, // Armenia
59+
"ge": {Lat: 42.3154, Lon: 43.3569}, // Georgia
60+
"uz": {Lat: 41.3775, Lon: 64.5853}, // Uzbekistan
61+
"kg": {Lat: 41.2044, Lon: 74.7661}, // Kyrgyzstan
62+
"tj": {Lat: 38.8610, Lon: 71.2761}, // Tajikistan
63+
"tm": {Lat: 38.9697, Lon: 59.5563}, // Turkmenistan
64+
65+
// Asia
66+
"jp": {Lat: 36.2048, Lon: 138.2529}, // Japan
67+
"hk": {Lat: 22.3193, Lon: 114.1694}, // Hong Kong
68+
"sg": {Lat: 1.3521, Lon: 103.8198}, // Singapore
69+
"cn": {Lat: 35.8617, Lon: 104.1954}, // China
70+
"kr": {Lat: 35.9078, Lon: 127.7669}, // South Korea
71+
"tw": {Lat: 23.6978, Lon: 120.9605}, // Taiwan
72+
"in": {Lat: 20.5937, Lon: 78.9629}, // India
73+
"id": {Lat: -0.7893, Lon: 113.9213}, // Indonesia
74+
"th": {Lat: 15.8700, Lon: 100.9925}, // Thailand
75+
"vn": {Lat: 14.0583, Lon: 108.2772}, // Vietnam
76+
"my": {Lat: 4.2105, Lon: 101.9758}, // Malaysia
77+
"ph": {Lat: 12.8797, Lon: 121.7740}, // Philippines
78+
"pk": {Lat: 30.3753, Lon: 69.3451}, // Pakistan
79+
"bd": {Lat: 23.6850, Lon: 90.3563}, // Bangladesh
80+
"lk": {Lat: 7.8731, Lon: 80.7718}, // Sri Lanka
81+
"np": {Lat: 28.3949, Lon: 84.1240}, // Nepal
82+
"mm": {Lat: 21.9162, Lon: 95.9560}, // Myanmar
83+
"kh": {Lat: 12.5657, Lon: 104.9910}, // Cambodia
84+
"la": {Lat: 19.8563, Lon: 102.4955}, // Laos
85+
"mn": {Lat: 46.8625, Lon: 103.8467}, // Mongolia
86+
87+
// Middle East
88+
"tr": {Lat: 38.9637, Lon: 35.2433}, // Turkey
89+
"ir": {Lat: 32.4279, Lon: 53.6880}, // Iran
90+
"sa": {Lat: 23.8859, Lon: 45.0792}, // Saudi Arabia
91+
"ae": {Lat: 23.4241, Lon: 53.8478}, // UAE
92+
"il": {Lat: 31.0461, Lon: 34.8516}, // Israel
93+
"jo": {Lat: 30.5852, Lon: 36.2384}, // Jordan
94+
"lb": {Lat: 33.8547, Lon: 35.8623}, // Lebanon
95+
"iq": {Lat: 33.2232, Lon: 43.6793}, // Iraq
96+
"sy": {Lat: 34.8021, Lon: 38.9968}, // Syria
97+
"om": {Lat: 21.4735, Lon: 55.9754}, // Oman
98+
"qa": {Lat: 25.3548, Lon: 51.1839}, // Qatar
99+
"bh": {Lat: 25.9304, Lon: 50.6378}, // Bahrain
100+
"kw": {Lat: 29.3117, Lon: 47.4818}, // Kuwait
101+
102+
// Oceania
103+
"au": {Lat: -25.2744, Lon: 133.7751}, // Australia
104+
"nz": {Lat: -40.9006, Lon: 174.8860}, // New Zealand
105+
106+
// South America
107+
"br": {Lat: -14.2350, Lon: -51.9253}, // Brazil
108+
"ar": {Lat: -38.4161, Lon: -63.6167}, // Argentina
109+
"cl": {Lat: -35.6751, Lon: -71.5430}, // Chile
110+
"co": {Lat: 4.5709, Lon: -74.2973}, // Colombia
111+
"pe": {Lat: -9.1900, Lon: -75.0152}, // Peru
112+
"ve": {Lat: 6.4238, Lon: -66.5897}, // Venezuela
113+
"ec": {Lat: -1.8312, Lon: -78.1834}, // Ecuador
114+
"bo": {Lat: -16.2902, Lon: -63.5887}, // Bolivia
115+
"py": {Lat: -23.4425, Lon: -58.4438}, // Paraguay
116+
"uy": {Lat: -32.5228, Lon: -55.7658}, // Uruguay
117+
"gy": {Lat: 4.8604, Lon: -58.9302}, // Guyana
118+
"sr": {Lat: 3.9193, Lon: -56.0278}, // Suriname
119+
120+
// Africa
121+
"za": {Lat: -30.5595, Lon: 22.9375}, // South Africa
122+
"eg": {Lat: 26.0975, Lon: 30.0444}, // Egypt
123+
"ng": {Lat: 9.0820, Lon: 8.6753}, // Nigeria
124+
"ke": {Lat: -0.0236, Lon: 37.9062}, // Kenya
125+
"et": {Lat: 9.1450, Lon: 40.4897}, // Ethiopia
126+
"tz": {Lat: -6.3690, Lon: 34.8888}, // Tanzania
127+
"gh": {Lat: 7.9465, Lon: -1.0232}, // Ghana
128+
"mz": {Lat: -18.6657, Lon: 35.5296}, // Mozambique
129+
"mg": {Lat: -18.7669, Lon: 46.8691}, // Madagascar
130+
"cm": {Lat: 7.3697, Lon: 12.3547}, // Cameroon
131+
"ci": {Lat: 7.5400, Lon: -5.5471}, // Ivory Coast
132+
"ne": {Lat: 17.6078, Lon: 8.0817}, // Niger
133+
"sn": {Lat: 14.4974, Lon: -14.4524}, // Senegal
134+
"ml": {Lat: 17.5707, Lon: -3.9962}, // Mali
135+
"bf": {Lat: 12.2383, Lon: -1.5616}, // Burkina Faso
136+
"rw": {Lat: -1.9403, Lon: 29.8739}, // Rwanda
137+
"so": {Lat: 5.1521, Lon: 46.1996}, // Somalia
138+
"ss": {Lat: 6.8770, Lon: 31.3070}, // South Sudan
139+
"sd": {Lat: 12.8628, Lon: 30.2176}, // Sudan
140+
"ug": {Lat: 1.3733, Lon: 32.2903}, // Uganda
141+
"zm": {Lat: -13.1339, Lon: 27.8493}, // Zambia
142+
"zw": {Lat: -19.0154, Lon: 29.1549}, // Zimbabwe
143+
"bw": {Lat: -22.3285, Lon: 24.6849}, // Botswana
144+
"na": {Lat: -22.9576, Lon: 18.4904}, // Namibia
145+
"ao": {Lat: -11.2027, Lon: 17.8739}, // Angola
146+
"cd": {Lat: -4.0383, Lon: 21.7587}, // DR Congo
147+
"cg": {Lat: -0.2280, Lon: 15.8277}, // Congo
148+
"ga": {Lat: -0.8037, Lon: 11.6094}, // Gabon
149+
"gq": {Lat: 1.6508, Lon: 10.2679}, // Equatorial Guinea
150+
"st": {Lat: 0.1864, Lon: 6.6131}, // Sao Tome and Principe
151+
"bi": {Lat: -3.3731, Lon: 29.9189}, // Burundi
152+
"dj": {Lat: 11.8251, Lon: 42.5903}, // Djibouti
153+
"er": {Lat: 15.1794, Lon: 39.7823}, // Eritrea
154+
"ls": {Lat: -29.6100, Lon: 28.2336}, // Lesotho
155+
"sz": {Lat: -26.5225, Lon: 31.4659}, // Eswatini
156+
"mu": {Lat: -20.3484, Lon: 57.5522}, // Mauritius
157+
"km": {Lat: -11.8750, Lon: 43.8722}, // Comoros
158+
"sc": {Lat: -4.6796, Lon: 55.4920}, // Seychelles
159+
"cv": {Lat: 16.5388, Lon: -23.0418}, // Cape Verde
160+
161+
// Central America & Caribbean
162+
"gt": {Lat: 15.7835, Lon: -90.2308}, // Guatemala
163+
"hn": {Lat: 15.2000, Lon: -86.2419}, // Honduras
164+
"sv": {Lat: 13.7942, Lon: -88.8965}, // El Salvador
165+
"ni": {Lat: 12.8654, Lon: -85.2072}, // Nicaragua
166+
"cr": {Lat: 9.7489, Lon: -83.7534}, // Costa Rica
167+
"pa": {Lat: 8.5380, Lon: -80.7821}, // Panama
168+
"cu": {Lat: 21.5218, Lon: -77.7812}, // Cuba
169+
"jm": {Lat: 18.1096, Lon: -77.2975}, // Jamaica
170+
"ht": {Lat: 18.9712, Lon: -72.2852}, // Haiti
171+
"do": {Lat: 18.7357, Lon: -70.1627}, // Dominican Republic
172+
"tt": {Lat: 10.6918, Lon: -61.2225}, // Trinidad and Tobago
173+
"bb": {Lat: 13.1939, Lon: -59.5432}, // Barbados
174+
"bs": {Lat: 25.0343, Lon: -77.3963}, // Bahamas
175+
"bz": {Lat: 17.1899, Lon: -88.4976}, // Belize
34176
}
35177

36178
// isRoutingRestricted checks political routing restrictions

0 commit comments

Comments
 (0)