-
Notifications
You must be signed in to change notification settings - Fork 129
/
sample.js
179 lines (140 loc) · 3.84 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
var geoip = require('geoip');
// Data
// 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
// Open the country data file
var Country = geoip.Country;
// ipv4
var country = new Country('/path/to/GeoIP.dat');
// Synchronous method(the recommended way):
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 (Currently only Country module supports ipv6)
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); // Same as ipv4
/*
{ 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
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);
}
});
// 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
}
});