-
Notifications
You must be signed in to change notification settings - Fork 129
/
sample.js
234 lines (193 loc) · 5.67 KB
/
sample.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
var geoip = require('geoip');
// !! Important !!
// Befor you can use this package, you need to download or buy some data fro http://www.maxmind.com/app/ip-location.
// There are some free databases among some commercial versions, the free databases can be found http://geolite.maxmind.com/download/geoip/database/.
////////////////////////////////////////////////////////////////////////////////
// Country
////////////////////////////////////////////////////////////////////////////////
/////////////////////////
// ipv4 address lookup //
/////////////////////////
var Country = geoip.Country;
var country = new Country('/path/to/GeoIP.dat');
// Synchronous method:
var country_obj = country.lookupSync('8.8.8.8');
console.log(country_obj);
/*
{ country_code: 'US',
country_code3: 'USA',
country_name: 'United States',
continent_code: 'NA'
}
*/
// Asynchronous method:
country.lookup('www.google.com', function(err, data) {
if (err) {throw err;}
if (data) { // if not found, just return null
console.log(data); // same as lookup method
}
});
/////////////////////////
// ipv6 address lookup //
/////////////////////////
var Coutry6 = geoip.Country6;
var country_v6 = new Country6('/path/to/GeoIPv6.dat');
// Synchronous method
var country_obj_v6 = country_v6.lookupSync('2607:f0d0:1002:0051:0000:0000:0000:0004');
console.log(country_obj_v6);
/*
{ country_code: 'US',
country_code3: 'USA',
country_name: 'United States',
continent_code: 'NA'
}
*/
country_v6.update('/path/to/new/country/ipv6/database');
// Asynchronous method
country_v6.lookup('2400:2352:b0f1:36c5:aa9d:694a:2f98:40bd', function(err, data_v6) {
if (err) {throw err;}
if (data_v6) {
console.log(data_v6);
/*
{
country_code: 'JP',
country_code3: 'JPN',
country_name: 'Japan',
continent_code: 'AS'
}
*/
}
});
////////////////////////////////////////////////////////////////////////////////
// City
////////////////////////////////////////////////////////////////////////////////
//////////////////////////
// ipv4 address lookup ///
//////////////////////////
var City = geoip.City;
var city = new City('/path/to/GeoLiteCity.dat');
// Synchronous method
var city_obj = city.lookupSync('8.8.8.8');
console.log(city_obj);
/*
Return an object of city information
{
"country_code":"US",
"country_code3":"USA",
"country_name":"United States",
"continet_code":"NA",
"region":"CA",
"city":"Mountain View",
"postal_code":"94043",
"latitude":37.41919999999999,
"longitude":-122.0574,
"dma_code":807,
"metro_code":807,
"area_code":650
}
*/
city.update('/path/to/new/GeoLiteCity.dat');
// Asynchronous method
city.lookup('www.google.com', function(err, data) {
if (err) {throw err;}
if (data) {
console.log(data);
}
});
/////////////////////////
// ipv6 address lookup //
/////////////////////////
var City6 = geoip.City6;
var city6 = new City6('/path/to/GeoLiteCityv6.dat');
// Synchronous method
var city6_obj = city6.lookupSync('2002:a46f:f395:14de:f876:542b:41cb:5bbe');
console.log(city6_obj);
/*
Return an object of city information
{ country_code: 'US',
country_code3: 'USA',
country_name: 'United States',
region: 'AL',
city: 'Birmingham',
postal_code: '35294',
latitude: 33.54460144042969,
longitude: -86.92919921875,
continent_code: 'NA' }
*/
city6.update('/path/to/new/GeoLiteCityv6.dat');
// Asynchronous method
city6.lookup('2001:b565:487a:c05d:5f07:5662:c3cd:cfcf', function(err, data) {
if (err) {throw err;}
if (data) {
console.log(data);
/*
{ country_code: 'TW',
country_code3: 'TWN',
country_name: 'Taiwan',
latitude: 23.5,
longitude: 121,
continent_code: 'AS'
}
*/
}
});
////////////////////////////////////////////////////////////////////////////////
// Organization
////////////////////////////////////////////////////////////////////////////////
var Org = geoip.Org;
var org = new Org('/path/to/database'); // Org module can open three edition database 'org', 'asnum', 'isp'
// Synchronous method
var org_str = org.lookup('8.8.8.8');
console.log(org_str);
/*
The type of returned data is string, for example:
'Genuity'
'AS15169 Google Inc.'
no longer an object
*/
org.update('/path/to/new/database');
// Asynchronous method
org.lookup('www.google.com', function(err, data) {
if (err) {throw err;}
if (data) {
console.log(data);
}
});
////////////////////////////////////////////////////////////////////////////////
// Region
////////////////////////////////////////////////////////////////////////////////
var Region = geoip.Region;
var region = new Region('/path/to/GeoIPRegion.dat');
// Synchronous method
var region_obj = region.lookupSync('8.8.8.8');
console.log(region_obj);
/*
region object has two properties:
{ country_code: 'US', region: 'CO' }
*/
region.update('/path/to/new/GeoIPRegion.dat');
// Asynchronous method
region.lookup('www.google.com', function(data) {
if (data) {
console.log(data);
}
});
////////////////////////////////////////////////////////////////////////////////
// NetSpeed
////////////////////////////////////////////////////////////////////////////////
var NetSpeed = geoip.NetSpeed;
var netspeed = new NetSpeed('/path/to/GeoIPNetSpeed.dat');
// Synchronous method
var netspeed_str = netspeed.lookupSync('8.8.8.8');
console.log(netspeed_str);
/*
netspeed_str just a simple string, 'Dialup', 'Corprate'... so on
*/
netspeed.update('/path/to/new/netspeed/database');
// Asynchronous method
netspeed.lookup('www.google.com', function(err, data) {
if (err) {throw err;}
if (data) {
console.log(data); // Maybe return 'unknow' or different from lookup method
}
});