maxmind-geoip2 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/README.md +10 -5
  4. data/lib/maxmind/geoip2/client.rb +18 -9
  5. data/lib/maxmind/geoip2/model/city.rb +4 -5
  6. data/lib/maxmind/geoip2/model/connection_type.rb +3 -2
  7. data/lib/maxmind/geoip2/model/enterprise.rb +2 -3
  8. data/lib/maxmind/geoip2/model/insights.rb +3 -5
  9. data/lib/maxmind/geoip2/record/traits.rb +39 -27
  10. data/lib/maxmind/geoip2/version.rb +8 -0
  11. data/maxmind-geoip2.gemspec +7 -2
  12. data/test/data/cmd/write-test-data/main.go +68 -0
  13. data/test/data/go.mod +13 -0
  14. data/test/data/go.sum +16 -0
  15. data/test/data/perltidyrc +6 -0
  16. data/test/data/pkg/writer/decoder.go +178 -0
  17. data/test/data/pkg/writer/geoip2.go +182 -0
  18. data/test/data/pkg/writer/ip.go +39 -0
  19. data/test/data/pkg/writer/maxmind.go +245 -0
  20. data/test/data/pkg/writer/nestedstructures.go +73 -0
  21. data/test/data/pkg/writer/writer.go +58 -0
  22. data/test/data/source-data/GeoIP2-City-Test.json +322 -1
  23. data/test/data/source-data/GeoIP2-Connection-Type-Test.json +15 -10
  24. data/test/data/source-data/GeoIP2-Country-Test.json +99 -0
  25. data/test/data/source-data/GeoIP2-Domain-Test.json +5 -0
  26. data/test/data/source-data/GeoIP2-Enterprise-Test.json +347 -1
  27. data/test/data/source-data/GeoIP2-Precision-Enterprise-Sandbox-Test.json +296 -0
  28. data/test/data/source-data/GeoIP2-Precision-Enterprise-Test.json +412 -2
  29. data/test/data/source-data/GeoIP2-Static-IP-Score-Test.json +15 -0
  30. data/test/data/source-data/GeoIP2-User-Count-Test.json +18 -0
  31. data/test/data/source-data/GeoLite2-City-Test.json +168 -0
  32. data/test/data/source-data/GeoLite2-Country-Test.json +92 -0
  33. data/test/data/test-data/GeoIP2-Anonymous-IP-Test.mmdb +0 -0
  34. data/test/data/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb +0 -0
  35. data/test/data/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb +0 -0
  36. data/test/data/test-data/GeoIP2-City-Test.mmdb +0 -0
  37. data/test/data/test-data/GeoIP2-Connection-Type-Test.mmdb +0 -0
  38. data/test/data/test-data/GeoIP2-Country-Test.mmdb +0 -0
  39. data/test/data/test-data/GeoIP2-DensityIncome-Test.mmdb +0 -0
  40. data/test/data/test-data/GeoIP2-Domain-Test.mmdb +0 -0
  41. data/test/data/test-data/GeoIP2-Enterprise-Test.mmdb +0 -0
  42. data/test/data/test-data/GeoIP2-ISP-Test.mmdb +0 -0
  43. data/test/data/test-data/GeoIP2-Precision-Enterprise-Test.mmdb +0 -0
  44. data/test/data/test-data/GeoIP2-Static-IP-Score-Test.mmdb +0 -0
  45. data/test/data/test-data/GeoIP2-User-Count-Test.mmdb +0 -0
  46. data/test/data/test-data/GeoLite2-ASN-Test.mmdb +0 -0
  47. data/test/data/test-data/GeoLite2-City-Test.mmdb +0 -0
  48. data/test/data/test-data/GeoLite2-Country-Test.mmdb +0 -0
  49. data/test/data/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb +0 -0
  50. data/test/data/test-data/MaxMind-DB-string-value-entries.mmdb +0 -0
  51. data/test/data/test-data/MaxMind-DB-test-broken-pointers-24.mmdb +0 -0
  52. data/test/data/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb +0 -0
  53. data/test/data/test-data/MaxMind-DB-test-decoder.mmdb +0 -0
  54. data/test/data/test-data/MaxMind-DB-test-ipv4-24.mmdb +0 -0
  55. data/test/data/test-data/MaxMind-DB-test-ipv4-28.mmdb +0 -0
  56. data/test/data/test-data/MaxMind-DB-test-ipv4-32.mmdb +0 -0
  57. data/test/data/test-data/MaxMind-DB-test-ipv6-24.mmdb +0 -0
  58. data/test/data/test-data/MaxMind-DB-test-ipv6-28.mmdb +0 -0
  59. data/test/data/test-data/MaxMind-DB-test-ipv6-32.mmdb +0 -0
  60. data/test/data/test-data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
  61. data/test/data/test-data/MaxMind-DB-test-mixed-24.mmdb +0 -0
  62. data/test/data/test-data/MaxMind-DB-test-mixed-28.mmdb +0 -0
  63. data/test/data/test-data/MaxMind-DB-test-mixed-32.mmdb +0 -0
  64. data/test/data/test-data/MaxMind-DB-test-nested.mmdb +0 -0
  65. data/test/data/test-data/MaxMind-DB-test-pointer-decoder.mmdb +0 -0
  66. data/test/data/test-data/README.md +28 -12
  67. data/test/test_client.rb +18 -2
  68. data/test/test_reader.rb +19 -1
  69. metadata +16 -7
  70. data/test/data/source-data/README +0 -15
  71. data/test/data/test-data/write-test-data.pl +0 -695
@@ -0,0 +1,58 @@
1
+ // Package writer defines database writers responsible
2
+ // for generating test mmdb files.
3
+ package writer
4
+
5
+ import (
6
+ "fmt"
7
+ "os"
8
+ "path/filepath"
9
+
10
+ "github.com/maxmind/mmdbwriter"
11
+ )
12
+
13
+ var ipSample = []string{
14
+ "::1.1.1.0/120",
15
+ "::2.2.0.0/112",
16
+ "::3.0.0.0/104",
17
+ "::4.5.6.7/128",
18
+ "abcd::/64",
19
+ "1000::1234:0000/112",
20
+ }
21
+
22
+ // Writer is responsible for writing test mmdb databases
23
+ // based on the provided data sources.
24
+ type Writer struct {
25
+ source string
26
+ target string
27
+ }
28
+
29
+ // New initializes a new test database writer struct.
30
+ func New(source, target string) (*Writer, error) {
31
+ s := filepath.Clean(source)
32
+ if _, err := os.Stat(s); os.IsNotExist(err) {
33
+ return nil, fmt.Errorf("source directory does not exist: %w", err)
34
+ }
35
+
36
+ t := filepath.Clean(target)
37
+ if err := os.MkdirAll(t, os.ModePerm); err != nil {
38
+ return nil, fmt.Errorf("creating target directory: %w", err)
39
+ }
40
+
41
+ return &Writer{
42
+ source: s,
43
+ target: t,
44
+ }, nil
45
+ }
46
+
47
+ func (w *Writer) write(dbWriter *mmdbwriter.Tree, fileName string) error {
48
+ outputFile, err := os.Create(filepath.Clean(filepath.Join(w.target, fileName)))
49
+ if err != nil {
50
+ return fmt.Errorf("creating mmdb file: %w", err)
51
+ }
52
+ defer outputFile.Close()
53
+
54
+ if _, err := dbWriter.WriteTo(outputFile); err != nil {
55
+ return fmt.Errorf("writing mmdb file: %w", err)
56
+ }
57
+ return nil
58
+ }
@@ -103,6 +103,160 @@
103
103
  }
104
104
  }
105
105
  },
106
+ {
107
+ "::214.0.0.0/120" : {
108
+ "city" : {
109
+ "geoname_id" : 1880252,
110
+ "names" : {
111
+ "de" : "Singapur",
112
+ "en" : "Singapore",
113
+ "es" : "Singapur",
114
+ "fr" : "Singapour",
115
+ "ja" : "シンガポール",
116
+ "pt-BR" : "Singapura",
117
+ "ru" : "Сингапур",
118
+ "zh-CN" : "新加坡"
119
+ }
120
+ },
121
+ "continent" : {
122
+ "code" : "AS",
123
+ "geoname_id" : 6255147,
124
+ "names" : {
125
+ "de" : "Asien",
126
+ "en" : "Asia",
127
+ "es" : "Asia",
128
+ "fr" : "Asie",
129
+ "ja" : "アジア",
130
+ "pt-BR" : "Ásia",
131
+ "ru" : "Азия",
132
+ "zh-CN" : "亚洲"
133
+ }
134
+ },
135
+ "country" : {
136
+ "geoname_id" : 1880251,
137
+ "iso_code" : "SG",
138
+ "names" : {
139
+ "de" : "Singapur",
140
+ "en" : "Singapore",
141
+ "es" : "Singapur",
142
+ "fr" : "Singapour",
143
+ "ja" : "シンガポール",
144
+ "pt-BR" : "Singapura",
145
+ "ru" : "Сингапур",
146
+ "zh-CN" : "新加坡"
147
+ }
148
+ },
149
+ "location" : {
150
+ "accuracy_radius" : 10,
151
+ "latitude" : 1.336,
152
+ "longitude" : 103.7716,
153
+ "time_zone" : "Asia/Singapore"
154
+ },
155
+ "postal" : {
156
+ "code" : "59"
157
+ },
158
+ "registered_country" : {
159
+ "geoname_id" : 1880251,
160
+ "iso_code" : "SG",
161
+ "names" : {
162
+ "de" : "Singapur",
163
+ "en" : "Singapore",
164
+ "es" : "Singapur",
165
+ "fr" : "Singapour",
166
+ "ja" : "シンガポール",
167
+ "pt-BR" : "Singapura",
168
+ "ru" : "Сингапур",
169
+ "zh-CN" : "新加坡"
170
+ }
171
+ }
172
+ }
173
+ },
174
+ {
175
+ "::214.0.1.0/120" : {
176
+ "city" : {
177
+ "geoname_id" : 2158177,
178
+ "names" : {
179
+ "de" : "Melbourne",
180
+ "en" : "Melbourne",
181
+ "es" : "Melbourne",
182
+ "fr" : "Melbourne",
183
+ "ja" : "メルボルン",
184
+ "pt-BR" : "Melbourne",
185
+ "ru" : "Мельбурн",
186
+ "zh-CN" : "墨尔本"
187
+ }
188
+ },
189
+ "continent" : {
190
+ "code" : "OC",
191
+ "geoname_id" : 6255151,
192
+ "names" : {
193
+ "de" : "Ozeanien",
194
+ "en" : "Oceania",
195
+ "es" : "Oceanía",
196
+ "fr" : "Océanie",
197
+ "ja" : "オセアニア",
198
+ "pt-BR" : "Oceania",
199
+ "ru" : "Океания",
200
+ "zh-CN" : "大洋洲"
201
+ }
202
+ },
203
+ "country" : {
204
+ "geoname_id" : 2077456,
205
+ "iso_code" : "AU",
206
+ "names" : {
207
+ "de" : "Australien",
208
+ "en" : "Australia",
209
+ "es" : "Australia",
210
+ "fr" : "Australie",
211
+ "ja" : "オーストラリア",
212
+ "pt-BR" : "Austrália",
213
+ "ru" : "Австралия",
214
+ "zh-CN" : "澳大利亚"
215
+ }
216
+ },
217
+ "location" : {
218
+ "accuracy_radius" : 20,
219
+ "latitude" : -37.8159,
220
+ "longitude" : 144.9669,
221
+ "time_zone" : "Australia/Melbourne"
222
+ },
223
+ "postal" : {
224
+ "code" : "3000"
225
+ },
226
+ "registered_country" : {
227
+ "geoname_id" : 2077456,
228
+ "iso_code" : "AU",
229
+ "names" : {
230
+ "de" : "Australien",
231
+ "en" : "Australia",
232
+ "es" : "Australia",
233
+ "fr" : "Australie",
234
+ "ja" : "オーストラリア",
235
+ "pt-BR" : "Austrália",
236
+ "ru" : "Австралия",
237
+ "zh-CN" : "澳大利亚"
238
+ }
239
+ },
240
+ "subdivisions" : [
241
+ {
242
+ "geoname_id" : 2145234,
243
+ "iso_code" : "VIC",
244
+ "names" : {
245
+ "en" : "Victoria",
246
+ "pt-BR" : "Vitória",
247
+ "ru" : "Виктория"
248
+ }
249
+ }
250
+ ]
251
+ }
252
+ },
253
+ {
254
+ "214.1.1.0/24" : {
255
+ "traits": {
256
+ "is_anycast": true
257
+ }
258
+ }
259
+ },
106
260
  {
107
261
  "2001:230::/32" : {
108
262
  "continent" : {
@@ -12422,7 +12576,6 @@
12422
12576
  }
12423
12577
  },
12424
12578
  "country" : {
12425
- "confidence" : 99,
12426
12579
  "geoname_id" : 6252001,
12427
12580
  "iso_code" : "US",
12428
12581
  "names" : {
@@ -12881,5 +13034,173 @@
12881
13034
  }
12882
13035
  ]
12883
13036
  }
13037
+ },
13038
+ {
13039
+ "214.78.120.0/22" : {
13040
+ "city" : {
13041
+ "geoname_id" : 5391811,
13042
+ "names" : {
13043
+ "de" : "San Diego",
13044
+ "en" : "San Diego",
13045
+ "es" : "San Diego",
13046
+ "fr" : "San Diego",
13047
+ "ja" : "サンディエゴ",
13048
+ "pt-BR" : "San Diego",
13049
+ "ru" : "Сан-Диего"
13050
+ }
13051
+ },
13052
+ "continent" : {
13053
+ "code" : "NA",
13054
+ "geoname_id" : 6255149,
13055
+ "names" : {
13056
+ "de" : "Nordamerika",
13057
+ "en" : "North America",
13058
+ "es" : "Norteamérica",
13059
+ "fr" : "Amérique du Nord",
13060
+ "ja" : "北アメリカ",
13061
+ "pt-BR" : "América do Norte",
13062
+ "ru" : "Северная Америка",
13063
+ "zh-CN" : "北美洲"
13064
+ }
13065
+ },
13066
+ "country" : {
13067
+ "geoname_id" : 6252001,
13068
+ "iso_code" : "US",
13069
+ "names" : {
13070
+ "de" : "Vereinigte Staaten",
13071
+ "en" : "United States",
13072
+ "es" : "Estados Unidos",
13073
+ "fr" : "États Unis",
13074
+ "ja" : "アメリカ",
13075
+ "pt-BR" : "EUA",
13076
+ "ru" : "США",
13077
+ "zh-CN" : "美国"
13078
+ }
13079
+ },
13080
+ "location" : {
13081
+ "accuracy_radius" : 100,
13082
+ "latitude" : 32.7405,
13083
+ "longitude" : -117.0935,
13084
+ "metro_code" : 825,
13085
+ "time_zone" : "America/Los_Angeles"
13086
+ },
13087
+ "postal" : {
13088
+ "code" : "92105"
13089
+ },
13090
+ "registered_country" : {
13091
+ "geoname_id" : 6252001,
13092
+ "iso_code" : "US",
13093
+ "names" : {
13094
+ "de" : "Vereinigte Staaten",
13095
+ "en" : "United States",
13096
+ "es" : "Estados Unidos",
13097
+ "fr" : "États Unis",
13098
+ "ja" : "アメリカ",
13099
+ "pt-BR" : "EUA",
13100
+ "ru" : "США",
13101
+ "zh-CN" : "美国"
13102
+ }
13103
+ },
13104
+ "subdivisions" : [
13105
+ {
13106
+ "geoname_id" : 5332921,
13107
+ "iso_code" : "CA",
13108
+ "names" : {
13109
+ "de" : "Kalifornien",
13110
+ "en" : "California",
13111
+ "es" : "California",
13112
+ "fr" : "Californie",
13113
+ "ja" : "カリフォルニア州",
13114
+ "pt-BR" : "Califórnia",
13115
+ "ru" : "Калифорния",
13116
+ "zh-CN" : "加州"
13117
+ }
13118
+ }
13119
+ ]
13120
+ }
13121
+ },
13122
+ {
13123
+ "2001:480:10::/48" : {
13124
+ "city" : {
13125
+ "geoname_id" : 5391811,
13126
+ "names" : {
13127
+ "de" : "San Diego",
13128
+ "en" : "San Diego",
13129
+ "es" : "San Diego",
13130
+ "fr" : "San Diego",
13131
+ "ja" : "サンディエゴ",
13132
+ "pt-BR" : "San Diego",
13133
+ "ru" : "Сан-Диего"
13134
+ }
13135
+ },
13136
+ "continent" : {
13137
+ "code" : "NA",
13138
+ "geoname_id" : 6255149,
13139
+ "names" : {
13140
+ "de" : "Nordamerika",
13141
+ "en" : "North America",
13142
+ "es" : "Norteamérica",
13143
+ "fr" : "Amérique du Nord",
13144
+ "ja" : "北アメリカ",
13145
+ "pt-BR" : "América do Norte",
13146
+ "ru" : "Северная Америка",
13147
+ "zh-CN" : "北美洲"
13148
+ }
13149
+ },
13150
+ "country" : {
13151
+ "geoname_id" : 6252001,
13152
+ "iso_code" : "US",
13153
+ "names" : {
13154
+ "de" : "Vereinigte Staaten",
13155
+ "en" : "United States",
13156
+ "es" : "Estados Unidos",
13157
+ "fr" : "États Unis",
13158
+ "ja" : "アメリカ",
13159
+ "pt-BR" : "EUA",
13160
+ "ru" : "США",
13161
+ "zh-CN" : "美国"
13162
+ }
13163
+ },
13164
+ "location" : {
13165
+ "accuracy_radius" : 20,
13166
+ "latitude" : 32.7203,
13167
+ "longitude" : -117.1552,
13168
+ "metro_code" : 825,
13169
+ "time_zone" : "America/Los_Angeles"
13170
+ },
13171
+ "postal" : {
13172
+ "code" : "92101"
13173
+ },
13174
+ "registered_country" : {
13175
+ "geoname_id" : 6252001,
13176
+ "iso_code" : "US",
13177
+ "names" : {
13178
+ "de" : "Vereinigte Staaten",
13179
+ "en" : "United States",
13180
+ "es" : "Estados Unidos",
13181
+ "fr" : "États Unis",
13182
+ "ja" : "アメリカ",
13183
+ "pt-BR" : "EUA",
13184
+ "ru" : "США",
13185
+ "zh-CN" : "美国"
13186
+ }
13187
+ },
13188
+ "subdivisions" : [
13189
+ {
13190
+ "geoname_id" : 5332921,
13191
+ "iso_code" : "CA",
13192
+ "names" : {
13193
+ "de" : "Kalifornien",
13194
+ "en" : "California",
13195
+ "es" : "California",
13196
+ "fr" : "Californie",
13197
+ "ja" : "カリフォルニア州",
13198
+ "pt-BR" : "Califórnia",
13199
+ "ru" : "Калифорния",
13200
+ "zh-CN" : "加州"
13201
+ }
13202
+ }
13203
+ ]
13204
+ }
12884
13205
  }
12885
13206
  ]
@@ -1,47 +1,47 @@
1
1
  [
2
2
  {
3
3
  "::1.0.0.0/120" : {
4
- "connection_type" : "Dialup"
4
+ "connection_type" : "Cable/DSL"
5
5
  }
6
6
  },
7
7
  {
8
8
  "::1.0.1.0/120" : {
9
- "connection_type" : "Cable/DSL"
9
+ "connection_type" : "Cellular"
10
10
  }
11
11
  },
12
12
  {
13
13
  "::1.0.2.0/119" : {
14
- "connection_type" : "Dialup"
14
+ "connection_type" : "Cable/DSL"
15
15
  }
16
16
  },
17
17
  {
18
18
  "::1.0.4.0/118" : {
19
- "connection_type" : "Dialup"
19
+ "connection_type" : "Cable/DSL"
20
20
  }
21
21
  },
22
22
  {
23
23
  "::1.0.8.0/117" : {
24
- "connection_type" : "Dialup"
24
+ "connection_type" : "Cable/DSL"
25
25
  }
26
26
  },
27
27
  {
28
28
  "::1.0.16.0/116" : {
29
- "connection_type" : "Dialup"
29
+ "connection_type" : "Cable/DSL"
30
30
  }
31
31
  },
32
32
  {
33
33
  "::1.0.32.0/115" : {
34
- "connection_type" : "Dialup"
34
+ "connection_type" : "Cable/DSL"
35
35
  }
36
36
  },
37
37
  {
38
38
  "::1.0.64.0/114" : {
39
- "connection_type" : "Dialup"
39
+ "connection_type" : "Cable/DSL"
40
40
  }
41
41
  },
42
42
  {
43
43
  "::1.0.128.0/113" : {
44
- "connection_type" : "Dialup"
44
+ "connection_type" : "Cable/DSL"
45
45
  }
46
46
  },
47
47
  {
@@ -91,7 +91,7 @@
91
91
  },
92
92
  {
93
93
  "::175.16.199.0/120" : {
94
- "connection_type" : "Dialup"
94
+ "connection_type" : "Cable/DSL"
95
95
  }
96
96
  },
97
97
  {
@@ -109,6 +109,11 @@
109
109
  "connection_type" : "Cellular"
110
110
  }
111
111
  },
112
+ {
113
+ "::214.78.120.0/118" : {
114
+ "connection_type" : "Satellite"
115
+ }
116
+ },
112
117
  {
113
118
  "::216.160.83.56/125" : {
114
119
  "connection_type" : "Corporate"
@@ -15900,5 +15900,104 @@
15900
15900
  }
15901
15901
  }
15902
15902
  }
15903
+ },
15904
+ {
15905
+ "214.1.1.0/24" : {
15906
+ "traits": {
15907
+ "is_anycast": true
15908
+ }
15909
+ }
15910
+ },
15911
+ {
15912
+ "214.78.120.0/22" : {
15913
+ "continent" : {
15914
+ "code" : "NA",
15915
+ "geoname_id" : 6255149,
15916
+ "names" : {
15917
+ "de" : "Nordamerika",
15918
+ "en" : "North America",
15919
+ "es" : "Norteamérica",
15920
+ "fr" : "Amérique du Nord",
15921
+ "ja" : "北アメリカ",
15922
+ "pt-BR" : "América do Norte",
15923
+ "ru" : "Северная Америка",
15924
+ "zh-CN" : "北美洲"
15925
+ }
15926
+ },
15927
+ "country" : {
15928
+ "geoname_id" : 6252001,
15929
+ "iso_code" : "US",
15930
+ "names" : {
15931
+ "de" : "Vereinigte Staaten",
15932
+ "en" : "United States",
15933
+ "es" : "Estados Unidos",
15934
+ "fr" : "États Unis",
15935
+ "ja" : "アメリカ",
15936
+ "pt-BR" : "EUA",
15937
+ "ru" : "США",
15938
+ "zh-CN" : "美国"
15939
+ }
15940
+ },
15941
+ "registered_country" : {
15942
+ "geoname_id" : 6252001,
15943
+ "iso_code" : "US",
15944
+ "names" : {
15945
+ "de" : "Vereinigte Staaten",
15946
+ "en" : "United States",
15947
+ "es" : "Estados Unidos",
15948
+ "fr" : "États Unis",
15949
+ "ja" : "アメリカ",
15950
+ "pt-BR" : "EUA",
15951
+ "ru" : "США",
15952
+ "zh-CN" : "美国"
15953
+ }
15954
+ }
15955
+ }
15956
+ },
15957
+ {
15958
+ "2001:480:10::/48" : {
15959
+ "continent" : {
15960
+ "code" : "NA",
15961
+ "geoname_id" : 6255149,
15962
+ "names" : {
15963
+ "de" : "Nordamerika",
15964
+ "en" : "North America",
15965
+ "es" : "Norteamérica",
15966
+ "fr" : "Amérique du Nord",
15967
+ "ja" : "北アメリカ",
15968
+ "pt-BR" : "América do Norte",
15969
+ "ru" : "Северная Америка",
15970
+ "zh-CN" : "北美洲"
15971
+ }
15972
+ },
15973
+ "country" : {
15974
+ "geoname_id" : 6252001,
15975
+ "iso_code" : "US",
15976
+ "names" : {
15977
+ "de" : "Vereinigte Staaten",
15978
+ "en" : "United States",
15979
+ "es" : "Estados Unidos",
15980
+ "fr" : "États Unis",
15981
+ "ja" : "アメリカ",
15982
+ "pt-BR" : "EUA",
15983
+ "ru" : "США",
15984
+ "zh-CN" : "美国"
15985
+ }
15986
+ },
15987
+ "registered_country" : {
15988
+ "geoname_id" : 6252001,
15989
+ "iso_code" : "US",
15990
+ "names" : {
15991
+ "de" : "Vereinigte Staaten",
15992
+ "en" : "United States",
15993
+ "es" : "Estados Unidos",
15994
+ "fr" : "États Unis",
15995
+ "ja" : "アメリカ",
15996
+ "pt-BR" : "EUA",
15997
+ "ru" : "США",
15998
+ "zh-CN" : "美国"
15999
+ }
16000
+ }
16001
+ }
15903
16002
  }
15904
16003
  ]
@@ -74,6 +74,11 @@
74
74
  "domain" : "comcastbusiness.net"
75
75
  }
76
76
  },
77
+ {
78
+ "::214.78.120.0/118" : {
79
+ "domain" : "starlinkisp.net"
80
+ }
81
+ },
77
82
  {
78
83
  "::222.230.136.0/118" : {
79
84
  "domain" : "gol.ne.jp"