geoip2_c 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ubuntu.yml +33 -0
  3. data/.github/workflows/windows.yml +52 -0
  4. data/README.md +3 -9
  5. data/docker-compose.yml +7 -0
  6. data/dockerfiles/Dockerfile-ruby2.7 +8 -0
  7. data/ext/geoip2/extconf.rb +11 -4
  8. data/ext/geoip2/geoip2.c +58 -15
  9. data/ext/geoip2/libmaxminddb/t/libtap/.gitignore +13 -0
  10. data/ext/geoip2/libmaxminddb/t/libtap/.travis.yml +13 -0
  11. data/ext/geoip2/libmaxminddb/t/libtap/COPYING +165 -0
  12. data/ext/geoip2/libmaxminddb/t/libtap/INSTALL +41 -0
  13. data/ext/geoip2/libmaxminddb/t/libtap/Makefile +72 -0
  14. data/ext/geoip2/libmaxminddb/t/libtap/Makefile.win +37 -0
  15. data/ext/geoip2/libmaxminddb/t/libtap/README.md +268 -0
  16. data/ext/geoip2/libmaxminddb/t/libtap/t/cmp_mem.c +20 -0
  17. data/ext/geoip2/libmaxminddb/t/libtap/t/cmp_mem.expected +28 -0
  18. data/ext/geoip2/libmaxminddb/t/libtap/t/cmpok.c +16 -0
  19. data/ext/geoip2/libmaxminddb/t/libtap/t/cmpok.expected +37 -0
  20. data/ext/geoip2/libmaxminddb/t/libtap/t/diag.c +10 -0
  21. data/ext/geoip2/libmaxminddb/t/libtap/t/diag.expected +2 -0
  22. data/ext/geoip2/libmaxminddb/t/libtap/t/diesok.c +14 -0
  23. data/ext/geoip2/libmaxminddb/t/libtap/t/diesok.expected +6 -0
  24. data/ext/geoip2/libmaxminddb/t/libtap/t/is.c +24 -0
  25. data/ext/geoip2/libmaxminddb/t/libtap/t/is.expected +58 -0
  26. data/ext/geoip2/libmaxminddb/t/libtap/t/like.c +10 -0
  27. data/ext/geoip2/libmaxminddb/t/libtap/t/like.expected +4 -0
  28. data/ext/geoip2/libmaxminddb/t/libtap/t/simple.c +31 -0
  29. data/ext/geoip2/libmaxminddb/t/libtap/t/simple.expected +32 -0
  30. data/ext/geoip2/libmaxminddb/t/libtap/t/skip.c +23 -0
  31. data/ext/geoip2/libmaxminddb/t/libtap/t/skip.expected +9 -0
  32. data/ext/geoip2/libmaxminddb/t/libtap/t/synopsis.c +13 -0
  33. data/ext/geoip2/libmaxminddb/t/libtap/t/synopsis.expected +9 -0
  34. data/ext/geoip2/libmaxminddb/t/libtap/t/test.c +28 -0
  35. data/ext/geoip2/libmaxminddb/t/libtap/t/todo.c +17 -0
  36. data/ext/geoip2/libmaxminddb/t/libtap/t/todo.expected +11 -0
  37. data/ext/geoip2/libmaxminddb/t/libtap/tap.c +354 -0
  38. data/ext/geoip2/libmaxminddb/t/libtap/tap.h +115 -0
  39. data/ext/geoip2/libmaxminddb/t/maxmind-db/.gitattributes +1 -0
  40. data/ext/geoip2/libmaxminddb/t/maxmind-db/.gitconfig +2 -0
  41. data/ext/geoip2/libmaxminddb/t/maxmind-db/.gitignore +2 -0
  42. data/ext/geoip2/libmaxminddb/t/maxmind-db/.perltidyallrc +11 -0
  43. data/ext/geoip2/libmaxminddb/t/maxmind-db/.tidyallrc +7 -0
  44. data/ext/geoip2/libmaxminddb/t/maxmind-db/LICENSE +4 -0
  45. data/ext/geoip2/libmaxminddb/t/maxmind-db/MaxMind-DB-spec.md +558 -0
  46. data/ext/geoip2/libmaxminddb/t/maxmind-db/README.md +4 -0
  47. data/ext/geoip2/libmaxminddb/t/maxmind-db/bad-data/README.md +7 -0
  48. data/ext/geoip2/libmaxminddb/t/maxmind-db/bad-data/libmaxminddb/libmaxminddb-offset-integer-overflow.mmdb +0 -0
  49. data/ext/geoip2/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/cyclic-data-structure.mmdb +0 -0
  50. data/ext/geoip2/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-bytes-length.mmdb +1 -0
  51. data/ext/geoip2/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-data-record-offset.mmdb +0 -0
  52. data/ext/geoip2/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-map-key-length.mmdb +0 -0
  53. data/ext/geoip2/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/invalid-string-length.mmdb +1 -0
  54. data/ext/geoip2/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/metadata-is-an-uint128.mmdb +1 -0
  55. data/ext/geoip2/libmaxminddb/t/maxmind-db/bad-data/maxminddb-golang/unexpected-bytes.mmdb +0 -0
  56. data/ext/geoip2/libmaxminddb/t/maxmind-db/perltidyrc +12 -0
  57. data/ext/geoip2/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Anonymous-IP-Test.json +32 -0
  58. data/ext/geoip2/libmaxminddb/t/maxmind-db/source-data/GeoIP2-City-Test.json +12616 -0
  59. data/ext/geoip2/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Connection-Type-Test.json +102 -0
  60. data/ext/geoip2/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Country-Test.json +10975 -0
  61. data/ext/geoip2/libmaxminddb/t/maxmind-db/source-data/GeoIP2-DensityIncome-Test.json +14 -0
  62. data/ext/geoip2/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Domain-Test.json +452 -0
  63. data/ext/geoip2/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Enterprise-Test.json +666 -0
  64. data/ext/geoip2/libmaxminddb/t/maxmind-db/source-data/GeoIP2-ISP-Test.json +12585 -0
  65. data/ext/geoip2/libmaxminddb/t/maxmind-db/source-data/GeoIP2-Precision-Enterprise-Test.json +1035 -0
  66. data/ext/geoip2/libmaxminddb/t/maxmind-db/source-data/GeoLite2-ASN-Test.json +37 -0
  67. data/ext/geoip2/libmaxminddb/t/maxmind-db/source-data/README +13 -0
  68. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Anonymous-IP-Test.mmdb +0 -0
  69. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb +0 -0
  70. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb +0 -0
  71. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/GeoIP2-City-Test.mmdb +0 -0
  72. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Connection-Type-Test.mmdb +0 -0
  73. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Country-Test.mmdb +0 -0
  74. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/GeoIP2-DensityIncome-Test.mmdb +0 -0
  75. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Domain-Test.mmdb +0 -0
  76. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Enterprise-Test.mmdb +0 -0
  77. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/GeoIP2-ISP-Test.mmdb +0 -0
  78. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/GeoIP2-Precision-Enterprise-Test.mmdb +0 -0
  79. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/GeoLite2-ASN-Test.mmdb +0 -0
  80. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb +0 -0
  81. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-string-value-entries.mmdb +0 -0
  82. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-broken-pointers-24.mmdb +0 -0
  83. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb +0 -0
  84. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-decoder.mmdb +0 -0
  85. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv4-24.mmdb +0 -0
  86. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv4-28.mmdb +0 -0
  87. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv4-32.mmdb +0 -0
  88. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv6-24.mmdb +0 -0
  89. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv6-28.mmdb +0 -0
  90. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-ipv6-32.mmdb +0 -0
  91. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
  92. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-mixed-24.mmdb +0 -0
  93. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-mixed-28.mmdb +0 -0
  94. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-mixed-32.mmdb +0 -0
  95. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/MaxMind-DB-test-nested.mmdb +0 -0
  96. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/README.md +26 -0
  97. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/maps-with-pointers.raw +0 -0
  98. data/ext/geoip2/libmaxminddb/t/maxmind-db/test-data/write-test-data.pl +614 -0
  99. data/ext/geoip2/libmaxminddb/t/maxmind-db/tidyall.ini +5 -0
  100. data/geoip2_c.gemspec +2 -3
  101. data/lib/geoip2/database.rb +4 -0
  102. data/lib/geoip2/version.rb +1 -1
  103. metadata +108 -18
  104. data/.travis.yml +0 -30
  105. data/Appraisals +0 -7
  106. data/gemfiles/ruby_2.1.gemfile +0 -7
  107. data/gemfiles/ruby_2.2.gemfile +0 -7
@@ -0,0 +1,666 @@
1
+ [
2
+ {
3
+ "::2.125.160.216/125" : {
4
+ "city" : {
5
+ "confidence" : 50,
6
+ "geoname_id" : "2655045",
7
+ "names" : {
8
+ "en" : "Boxford"
9
+ }
10
+ },
11
+ "continent" : {
12
+ "code" : "EU",
13
+ "geoname_id" : 6255148,
14
+ "names" : {
15
+ "de" : "Europa",
16
+ "en" : "Europe",
17
+ "es" : "Europa",
18
+ "fr" : "Europe",
19
+ "ja" : "ヨーロッパ",
20
+ "pt-BR" : "Europa",
21
+ "ru" : "Европа",
22
+ "zh-CN" : "欧洲"
23
+ }
24
+ },
25
+ "country" : {
26
+ "confidence" : 95,
27
+ "geoname_id" : 2635167,
28
+ "iso_code" : "GB",
29
+ "names" : {
30
+ "de" : "Vereinigtes Königreich",
31
+ "en" : "United Kingdom",
32
+ "es" : "Reino Unido",
33
+ "fr" : "Royaume-Uni",
34
+ "ja" : "イギリス",
35
+ "pt-BR" : "Reino Unido",
36
+ "ru" : "Великобритания",
37
+ "zh-CN" : "英国"
38
+ }
39
+ },
40
+ "location" : {
41
+ "accuracy_radius" : 100,
42
+ "latitude" : "51.7500",
43
+ "longitude" : "-1.2500",
44
+ "time_zone" : "Europe/London"
45
+ },
46
+ "postal" : {
47
+ "code" : "OX1",
48
+ "confidence" : 20
49
+ },
50
+ "registered_country" : {
51
+ "geoname_id" : 3017382,
52
+ "iso_code" : "FR",
53
+ "names" : {
54
+ "de" : "Frankreich",
55
+ "en" : "France",
56
+ "es" : "Francia",
57
+ "fr" : "France",
58
+ "ja" : "フランス共和国",
59
+ "pt-BR" : "França",
60
+ "ru" : "Франция",
61
+ "zh-CN" : "法国"
62
+ }
63
+ },
64
+ "subdivisions" : [
65
+ {
66
+ "confidence" : 70,
67
+ "geoname_id" : 6269131,
68
+ "iso_code" : "ENG",
69
+ "names" : {
70
+ "en" : "England",
71
+ "es" : "Inglaterra",
72
+ "fr" : "Angleterre",
73
+ "pt-BR" : "Inglaterra"
74
+ }
75
+ },
76
+ {
77
+ "geoname_id" : 3333217,
78
+ "iso_code" : "WBK",
79
+ "names" : {
80
+ "en" : "West Berkshire",
81
+ "ru" : "Западный Беркшир",
82
+ "zh-CN" : "西伯克郡"
83
+ }
84
+ }
85
+ ]
86
+ }
87
+ },
88
+ {
89
+ "::67.43.156.0/120" : {
90
+ "continent" : {
91
+ "code" : "AS",
92
+ "geoname_id" : 6255147,
93
+ "names" : {
94
+ "de" : "Asien",
95
+ "en" : "Asia",
96
+ "es" : "Asia",
97
+ "fr" : "Asie",
98
+ "ja" : "アジア",
99
+ "pt-BR" : "Ásia",
100
+ "ru" : "Азия",
101
+ "zh-CN" : "亚洲"
102
+ }
103
+ },
104
+ "country" : {
105
+ "confidence" : 99,
106
+ "geoname_id" : 1252634,
107
+ "iso_code" : "BT",
108
+ "names" : {
109
+ "de" : "Bhutan",
110
+ "en" : "Bhutan",
111
+ "es" : "Bután",
112
+ "fr" : "Bhutan",
113
+ "ja" : "ブータン王国",
114
+ "pt-BR" : "Butão",
115
+ "ru" : "Бутан",
116
+ "zh-CN" : "不丹"
117
+ }
118
+ },
119
+ "location" : {
120
+ "accuracy_radius" : 534,
121
+ "latitude" : "27.5000",
122
+ "longitude" : "90.5000",
123
+ "time_zone" : "Asia/Thimphu"
124
+ },
125
+ "registered_country" : {
126
+ "geoname_id" : 798549,
127
+ "iso_code" : "RO",
128
+ "names" : {
129
+ "de" : "Rumänien",
130
+ "en" : "Romania",
131
+ "es" : "Rumanía",
132
+ "fr" : "Roumanie",
133
+ "ja" : "ルーマニア",
134
+ "pt-BR" : "Romênia",
135
+ "ru" : "Румыния",
136
+ "zh-CN" : "罗马尼亚"
137
+ }
138
+ },
139
+ "traits" : {
140
+ "autonomous_system_number" : 35908,
141
+ "domain" : "shoesfin.NET",
142
+ "is_anonymous_proxy" : true,
143
+ "isp" : "Loud Packet",
144
+ "organization" : "zudoarichikito_",
145
+ "user_type" : "search_engine_spider"
146
+ }
147
+ }
148
+ },
149
+ {
150
+ "::74.209.24.0/116" : {
151
+ "city" : {
152
+ "confidence" : "11",
153
+ "geoname_id" : "5112335",
154
+ "names" : {
155
+ "en" : "Chatham"
156
+ }
157
+ },
158
+ "continent" : {
159
+ "code" : "NA",
160
+ "geoname_id" : "6255149",
161
+ "names" : {
162
+ "de" : "Nordamerika",
163
+ "en" : "North America",
164
+ "es" : "Norteamérica",
165
+ "fr" : "Amérique du Nord",
166
+ "ja" : "北アメリカ",
167
+ "pt-BR" : "América do Norte",
168
+ "ru" : "Северная Америка",
169
+ "zh-CN" : "北美洲"
170
+ }
171
+ },
172
+ "country" : {
173
+ "confidence" : "99",
174
+ "geoname_id" : "6252001",
175
+ "iso_code" : "US",
176
+ "names" : {
177
+ "de" : "USA",
178
+ "en" : "United States",
179
+ "es" : "Estados Unidos",
180
+ "fr" : "États-Unis",
181
+ "ja" : "アメリカ合衆国",
182
+ "pt-BR" : "Estados Unidos",
183
+ "ru" : "США",
184
+ "zh-CN" : "美国"
185
+ }
186
+ },
187
+ "location" : {
188
+ "accuracy_radius" : "27",
189
+ "latitude" : "42.347800",
190
+ "longitude" : "-73.554900",
191
+ "metro_code" : "532",
192
+ "time_zone" : "America/New_York"
193
+ },
194
+ "postal" : {
195
+ "code" : "12037",
196
+ "confidence" : "11"
197
+ },
198
+ "registered_country" : {
199
+ "geoname_id" : "6252001",
200
+ "iso_code" : "US",
201
+ "names" : {
202
+ "de" : "USA",
203
+ "en" : "United States",
204
+ "es" : "Estados Unidos",
205
+ "fr" : "États-Unis",
206
+ "ja" : "アメリカ合衆国",
207
+ "pt-BR" : "Estados Unidos",
208
+ "ru" : "США",
209
+ "zh-CN" : "美国"
210
+ }
211
+ },
212
+ "subdivisions" : [
213
+ {
214
+ "confidence" : "93",
215
+ "geoname_id" : "5128638",
216
+ "iso_code" : "NY",
217
+ "names" : {
218
+ "de" : "New York",
219
+ "en" : "New York",
220
+ "es" : "Nueva York",
221
+ "fr" : "New York",
222
+ "ja" : "ニューヨーク州",
223
+ "pt-BR" : "Nova Iorque",
224
+ "ru" : "Нью-Йорк",
225
+ "zh-CN" : "纽约州"
226
+ }
227
+ }
228
+ ],
229
+ "traits" : {
230
+ "autonomous_system_number" : "14671",
231
+ "autonomous_system_organization" : "FairPoint Communications",
232
+ "connection_type" : "Cable/DSL",
233
+ "domain" : "frpt.net",
234
+ "is_anonymous_proxy" : true,
235
+ "is_legitimate_proxy" : true,
236
+ "is_satellite_provider" : true,
237
+ "isp" : "Fairpoint Communications",
238
+ "organization" : "Fairpoint Communications",
239
+ "user_type" : "residential"
240
+ }
241
+ }
242
+ },
243
+ {
244
+ "::81.2.69.160/123" : {
245
+ "city" : {
246
+ "confidence" : 42,
247
+ "geoname_id" : "2643743",
248
+ "names" : {
249
+ "de" : "London",
250
+ "en" : "London",
251
+ "es" : "Londres",
252
+ "fr" : "Londres",
253
+ "ja" : "ロンドン",
254
+ "pt-BR" : "Londres",
255
+ "ru" : "Лондон"
256
+ }
257
+ },
258
+ "continent" : {
259
+ "code" : "EU",
260
+ "geoname_id" : 6255148,
261
+ "names" : {
262
+ "de" : "Europa",
263
+ "en" : "Europe",
264
+ "es" : "Europa",
265
+ "fr" : "Europe",
266
+ "ja" : "ヨーロッパ",
267
+ "pt-BR" : "Europa",
268
+ "ru" : "Европа",
269
+ "zh-CN" : "欧洲"
270
+ }
271
+ },
272
+ "country" : {
273
+ "confidence" : 99,
274
+ "geoname_id" : 2635167,
275
+ "iso_code" : "GB",
276
+ "names" : {
277
+ "de" : "Vereinigtes Königreich",
278
+ "en" : "United Kingdom",
279
+ "es" : "Reino Unido",
280
+ "fr" : "Royaume-Uni",
281
+ "ja" : "イギリス",
282
+ "pt-BR" : "Reino Unido",
283
+ "ru" : "Великобритания",
284
+ "zh-CN" : "英国"
285
+ }
286
+ },
287
+ "location" : {
288
+ "accuracy_radius" : 100,
289
+ "latitude" : "51.5142",
290
+ "longitude" : "-0.0931",
291
+ "time_zone" : "Europe/London"
292
+ },
293
+ "registered_country" : {
294
+ "geoname_id" : 6252001,
295
+ "iso_code" : "US",
296
+ "names" : {
297
+ "de" : "USA",
298
+ "en" : "United States",
299
+ "es" : "Estados Unidos",
300
+ "fr" : "États-Unis",
301
+ "ja" : "アメリカ合衆国",
302
+ "pt-BR" : "Estados Unidos",
303
+ "ru" : "США",
304
+ "zh-CN" : "美国"
305
+ }
306
+ },
307
+ "subdivisions" : [
308
+ {
309
+ "confidence" : 42,
310
+ "geoname_id" : 6269131,
311
+ "iso_code" : "ENG",
312
+ "names" : {
313
+ "en" : "England",
314
+ "es" : "Inglaterra",
315
+ "fr" : "Angleterre",
316
+ "pt-BR" : "Inglaterra"
317
+ }
318
+ }
319
+ ],
320
+ "traits" : {
321
+ "connection_type" : "Corporate",
322
+ "domain" : "in-addr.arpa",
323
+ "isp" : "Andrews & Arnold Ltd",
324
+ "organization" : "STONEHOUSE office network",
325
+ "user_type" : "government"
326
+ }
327
+ }
328
+ },
329
+ {
330
+ "::89.160.20.112/124" : {
331
+ "city" : {
332
+ "confidence" : 51,
333
+ "geoname_id" : "2694762",
334
+ "names" : {
335
+ "de" : "Linköping",
336
+ "en" : "Linköping",
337
+ "fr" : "Linköping",
338
+ "ja" : "リンシェーピング",
339
+ "zh-CN" : "林雪平"
340
+ }
341
+ },
342
+ "continent" : {
343
+ "code" : "EU",
344
+ "geoname_id" : 6255148,
345
+ "names" : {
346
+ "de" : "Europa",
347
+ "en" : "Europe",
348
+ "es" : "Europa",
349
+ "fr" : "Europe",
350
+ "ja" : "ヨーロッパ",
351
+ "pt-BR" : "Europa",
352
+ "ru" : "Европа",
353
+ "zh-CN" : "欧洲"
354
+ }
355
+ },
356
+ "country" : {
357
+ "confidence" : 99,
358
+ "geoname_id" : 2661886,
359
+ "iso_code" : "SE",
360
+ "names" : {
361
+ "de" : "Schweden",
362
+ "en" : "Sweden",
363
+ "es" : "Suecia",
364
+ "fr" : "Suède",
365
+ "ja" : "スウェーデン王国",
366
+ "pt-BR" : "Suécia",
367
+ "ru" : "Швеция",
368
+ "zh-CN" : "瑞典"
369
+ }
370
+ },
371
+ "location" : {
372
+ "accuracy_radius" : 76,
373
+ "latitude" : "58.4167",
374
+ "longitude" : "15.6167",
375
+ "time_zone" : "Europe/Stockholm"
376
+ },
377
+ "registered_country" : {
378
+ "geoname_id" : 2921044,
379
+ "iso_code" : "DE",
380
+ "names" : {
381
+ "de" : "Deutschland",
382
+ "en" : "Germany",
383
+ "es" : "Alemania",
384
+ "fr" : "Allemagne",
385
+ "ja" : "ドイツ連邦共和国",
386
+ "pt-BR" : "Alemanha",
387
+ "ru" : "Германия",
388
+ "zh-CN" : "德国"
389
+ }
390
+ },
391
+ "subdivisions" : [
392
+ {
393
+ "confidence" : 51,
394
+ "geoname_id" : 2685867,
395
+ "iso_code" : "E",
396
+ "names" : {
397
+ "en" : "Östergötland County",
398
+ "fr" : "Comté d'Östergötland"
399
+ }
400
+ }
401
+ ],
402
+ "traits" : {
403
+ "autonomous_system_number" : 29518,
404
+ "autonomous_system_organization" : "Bredband2 AB",
405
+ "connection_type" : "Corporate",
406
+ "domain" : "bredband2.com",
407
+ "isp" : "Bredband2 AB",
408
+ "organization" : "Bevtec",
409
+ "user_type" : "government"
410
+ }
411
+ }
412
+ },
413
+ {
414
+ "::175.16.199.0/120" : {
415
+ "city" : {
416
+ "confidence" : 50,
417
+ "geoname_id" : 2038180,
418
+ "names" : {
419
+ "de" : "Chángchūn",
420
+ "en" : "Changchun",
421
+ "fr" : "Changchun",
422
+ "ja" : "長春市",
423
+ "ru" : "Чанчунь",
424
+ "zh-CN" : "长春"
425
+ }
426
+ },
427
+ "continent" : {
428
+ "code" : "AS",
429
+ "geoname_id" : 6255147,
430
+ "names" : {
431
+ "de" : "Asien",
432
+ "en" : "Asia",
433
+ "es" : "Asia",
434
+ "fr" : "Asie",
435
+ "ja" : "アジア",
436
+ "pt-BR" : "Ásia",
437
+ "ru" : "Азия",
438
+ "zh-CN" : "亚洲"
439
+ }
440
+ },
441
+ "country" : {
442
+ "confidence" : 95,
443
+ "geoname_id" : 1814991,
444
+ "iso_code" : "CN",
445
+ "names" : {
446
+ "de" : "China",
447
+ "en" : "China",
448
+ "es" : "China",
449
+ "fr" : "Chine",
450
+ "ja" : "中国",
451
+ "pt-BR" : "China",
452
+ "ru" : "Китай",
453
+ "zh-CN" : "中国"
454
+ }
455
+ },
456
+ "location" : {
457
+ "accuracy_radius" : 100,
458
+ "latitude" : 43.88,
459
+ "longitude" : 125.3228,
460
+ "time_zone" : "Asia/Harbin"
461
+ },
462
+ "registered_country" : {
463
+ "geoname_id" : 1814991,
464
+ "iso_code" : "CN",
465
+ "names" : {
466
+ "de" : "China",
467
+ "en" : "China",
468
+ "es" : "China",
469
+ "fr" : "Chine",
470
+ "ja" : "中国",
471
+ "pt-BR" : "China",
472
+ "ru" : "Китай",
473
+ "zh-CN" : "中国"
474
+ }
475
+ },
476
+ "subdivisions" : [
477
+ {
478
+ "confidence" : 70,
479
+ "geoname_id" : 2036500,
480
+ "iso_code" : "22",
481
+ "names" : {
482
+ "en" : "Jilin Sheng",
483
+ "zh-CN" : "吉林"
484
+ }
485
+ }
486
+ ],
487
+ "traits" : {
488
+ "user_type" : "dialup"
489
+ }
490
+ }
491
+ },
492
+ {
493
+ "::202.196.224.0/116" : {
494
+ "continent" : {
495
+ "code" : "AS",
496
+ "geoname_id" : 6255147,
497
+ "names" : {
498
+ "de" : "Asien",
499
+ "en" : "Asia",
500
+ "es" : "Asia",
501
+ "fr" : "Asie",
502
+ "ja" : "アジア",
503
+ "pt-BR" : "Ásia",
504
+ "ru" : "Азия",
505
+ "zh-CN" : "亚洲"
506
+ }
507
+ },
508
+ "country" : {
509
+ "confidence" : 95,
510
+ "geoname_id" : 1694008,
511
+ "iso_code" : "PH",
512
+ "names" : {
513
+ "de" : "Philippinen",
514
+ "en" : "Philippines",
515
+ "es" : "Filipinas",
516
+ "fr" : "Philippines",
517
+ "ja" : "フィリピン共和国",
518
+ "pt-BR" : "Filipinas",
519
+ "ru" : "Филиппины",
520
+ "zh-CN" : "菲律宾"
521
+ }
522
+ },
523
+ "location" : {
524
+ "accuracy_radius" : 121,
525
+ "latitude" : "13",
526
+ "longitude" : "122",
527
+ "time_zone" : "Asia/Manila"
528
+ },
529
+ "postal" : {
530
+ "code" : "34021",
531
+ "confidence" : 20
532
+ },
533
+ "registered_country" : {
534
+ "geoname_id" : 1694008,
535
+ "iso_code" : "PH",
536
+ "names" : {
537
+ "de" : "Philippinen",
538
+ "en" : "Philippines",
539
+ "es" : "Filipinas",
540
+ "fr" : "Philippines",
541
+ "ja" : "フィリピン共和国",
542
+ "pt-BR" : "Filipinas",
543
+ "ru" : "Филиппины",
544
+ "zh-CN" : "菲律宾"
545
+ }
546
+ },
547
+ "represented_country" : {
548
+ "geoname_id" : 6252001,
549
+ "iso_code" : "US",
550
+ "names" : {
551
+ "de" : "USA",
552
+ "en" : "United States",
553
+ "es" : "Estados Unidos",
554
+ "fr" : "États-Unis",
555
+ "ja" : "アメリカ合衆国",
556
+ "pt-BR" : "Estados Unidos",
557
+ "ru" : "США",
558
+ "zh-CN" : "美国"
559
+ },
560
+ "type" : "military"
561
+ }
562
+ }
563
+ },
564
+ {
565
+ "::216.160.83.56/125" : {
566
+ "city" : {
567
+ "confidence" : 40,
568
+ "geoname_id" : "5803556",
569
+ "names" : {
570
+ "en" : "Milton",
571
+ "ru" : "Мильтон"
572
+ }
573
+ },
574
+ "continent" : {
575
+ "code" : "NA",
576
+ "geoname_id" : 6255149,
577
+ "names" : {
578
+ "de" : "Nordamerika",
579
+ "en" : "North America",
580
+ "es" : "América del Norte",
581
+ "fr" : "Amérique du Nord",
582
+ "ja" : "北アメリカ",
583
+ "pt-BR" : "América do Norte",
584
+ "ru" : "Северная Америка",
585
+ "zh-CN" : "北美洲"
586
+ }
587
+ },
588
+ "country" : {
589
+ "confidence" : 99,
590
+ "geoname_id" : 6252001,
591
+ "iso_code" : "US",
592
+ "names" : {
593
+ "de" : "USA",
594
+ "en" : "United States",
595
+ "es" : "Estados Unidos",
596
+ "fr" : "États-Unis",
597
+ "ja" : "アメリカ合衆国",
598
+ "pt-BR" : "Estados Unidos",
599
+ "ru" : "США",
600
+ "zh-CN" : "美国"
601
+ }
602
+ },
603
+ "location" : {
604
+ "accuracy_radius" : 22,
605
+ "latitude" : "47.2513",
606
+ "longitude" : "-122.3149",
607
+ "metro_code" : "819",
608
+ "time_zone" : "America/Los_Angeles"
609
+ },
610
+ "postal" : {
611
+ "code" : "98354",
612
+ "confidence" : 40
613
+ },
614
+ "registered_country" : {
615
+ "geoname_id" : 2635167,
616
+ "iso_code" : "GB",
617
+ "names" : {
618
+ "de" : "Vereinigtes Königreich",
619
+ "en" : "United Kingdom",
620
+ "es" : "Reino Unido",
621
+ "fr" : "Royaume-Uni",
622
+ "ja" : "イギリス",
623
+ "pt-BR" : "Reino Unido",
624
+ "ru" : "Великобритания",
625
+ "zh-CN" : "英国"
626
+ }
627
+ },
628
+ "subdivisions" : [
629
+ {
630
+ "confidence" : 99,
631
+ "geoname_id" : 5815135,
632
+ "iso_code" : "WA",
633
+ "names" : {
634
+ "en" : "Washington",
635
+ "es" : "Washington",
636
+ "fr" : "État de Washington",
637
+ "ja" : "ワシントン州",
638
+ "ru" : "Вашингтон",
639
+ "zh-CN" : "华盛顿州"
640
+ }
641
+ }
642
+ ],
643
+ "traits" : {
644
+ "autonomous_system_number" : 209,
645
+ "connection_type" : "Cable/DSL",
646
+ "isp" : "Century Link",
647
+ "organization" : "Lariat Software",
648
+ "user_type" : "government"
649
+ }
650
+ }
651
+ },
652
+ {
653
+ "::212.47.235.81/128" : {
654
+ "traits" : {
655
+ "is_anonymous_proxy" : true
656
+ }
657
+ }
658
+ },
659
+ {
660
+ "::212.47.235.82/128" : {
661
+ "traits" : {
662
+ "is_satellite_provider" : true
663
+ }
664
+ }
665
+ }
666
+ ]