Skip to content

Commit 4a653e5

Browse files
committed
1.2.0, support client ip info
1 parent 1a148aa commit 4a653e5

File tree

6 files changed

+172
-198
lines changed

6 files changed

+172
-198
lines changed

README.md

+7-15
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Open Source REST API for IP database, includes qqwry, ipipdotnet.
99
## Usage
1010

1111
```http
12-
GET https://api.i-meto.com/ip/v1/qqwry/119.29.29.29
12+
GET http://localhost:3000/v1/qqwry/119.29.29.29
1313
```
1414

1515
```json
@@ -19,29 +19,21 @@ GET https://api.i-meto.com/ip/v1/qqwry/119.29.29.29
1919
"region_name": "广东",
2020
"city_name": "广州",
2121
"owner_domain": "cloud.tencent.com",
22-
"isp_domain": "",
23-
"range": {
24-
"from": "119.29.0.0",
25-
"to": "119.29.127.255"
26-
}
22+
"isp_domain": ""
2723
}
2824
```
2925

3026
```http
31-
GET https://api.i-meto.com/ip/v1/ipip/119.29.29.29
27+
GET http://localhost:3000/v1/qqwry/me
3228
```
3329

3430
```json
3531
{
36-
"ip": "119.29.29.29",
37-
"country_name": "DNSPOD.COM",
38-
"region_name": "DNSPOD.COM",
32+
"ip": "127.0.0.1",
33+
"country_name": "本机地址",
34+
"region_name": "本机地址",
3935
"city_name": "",
4036
"owner_domain": "",
41-
"isp_domain": "",
42-
"range": {
43-
"from": "119.29.29.0",
44-
"to": "119.29.29.255"
45-
}
37+
"isp_domain": ""
4638
}
4739
```

package.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "docker-ipdb",
3-
"version": "1.1.0",
3+
"version": "1.2.0",
44
"main": "server.js",
55
"repository": "[email protected]:metowolf/docker-ipdb.git",
66
"author": "metowolf <[email protected]>",
@@ -18,11 +18,11 @@
1818
"koa-pino-logger": "^3.0.0",
1919
"koa-router": "^10.0.0",
2020
"koa2-cors": "^2.0.6",
21-
"pino": "^6.11.3",
22-
"pino-pretty": "^5.1.0",
23-
"qqwry.ipdb": "^2021.6.30"
21+
"pino": "^6.12.0",
22+
"pino-pretty": "^5.1.1",
23+
"qqwry.ipdb": "^2021.7.7"
2424
},
2525
"devDependencies": {
26-
"nodemon": "^2.0.9"
26+
"nodemon": "^2.0.12"
2727
}
2828
}

src/config.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@ module.exports = {
55
port: parseInt(process.env.HTTP_PORT || 3000, 10),
66
host: process.env.HTTP_HOST || 'localhost',
77
prefix: process.env.HTTP_PREFIX || ''
8-
}
8+
},
9+
client_header: process.env.CLIENT_HEADER || 'x-real-ip',
10+
disable_range: (process.env.DISABLE_RANGE || 'true') === 'true'
911
}

src/services/v1/ipip/routes.js

+9-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const Router = require('koa-router')
22
const IPDB = require('ipdb')
33
const ipdb_range = require('@ipdb/range')
44
const ipdb_database = require('@ipdb/database')
5+
const config = require('../../../config')
56
const ipdb = new IPDB(ipdb_database, {
67
patches: [ipdb_range]
78
})
@@ -26,7 +27,10 @@ router.get('/version', async (ctx) => {
2627
// find ip
2728
router.get('/:ip', async (ctx) => {
2829
try {
29-
const ip = ctx.params.ip
30+
let ip = ctx.params.ip
31+
if (ip === 'me') {
32+
ip = ctx.headers[config.client_header] || ctx.ip
33+
}
3034
const { code, data, message } = ipdb.find(ip)
3135
if (code) {
3236
throw new Error(message)
@@ -37,8 +41,10 @@ router.get('/:ip', async (ctx) => {
3741
region_name: data.region_name,
3842
city_name: data.city_name,
3943
owner_domain: data.owner_domain || '',
40-
isp_domain: data.isp_domain || '',
41-
range: {
44+
isp_domain: data.isp_domain || ''
45+
}
46+
if (!config.disable_range) {
47+
result.range = {
4248
from: data.range.from,
4349
to: data.range.to
4450
}

src/services/v1/qqwry/routes.js

+9-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const Router = require('koa-router')
22
const IPDB = require('ipdb')
33
const ipdb_range = require('@ipdb/range')
44
const qqwry_ipdb = require('qqwry.ipdb')
5+
const config = require('../../../config')
56
const ipdb = new IPDB(qqwry_ipdb, {
67
patches: [ipdb_range]
78
})
@@ -26,7 +27,10 @@ router.get('/version', async (ctx) => {
2627
// find ip
2728
router.get('/:ip', async (ctx) => {
2829
try {
29-
const ip = ctx.params.ip
30+
let ip = ctx.params.ip
31+
if (ip === 'me') {
32+
ip = ctx.headers[config.client_header] || ctx.ip
33+
}
3034
const { code, data, message } = ipdb.find(ip)
3135
if (code) {
3236
throw new Error(message)
@@ -37,8 +41,10 @@ router.get('/:ip', async (ctx) => {
3741
region_name: data.region_name,
3842
city_name: data.city_name,
3943
owner_domain: data.owner_domain || '',
40-
isp_domain: data.isp_domain || '',
41-
range: {
44+
isp_domain: data.isp_domain || ''
45+
}
46+
if (!config.disable_range) {
47+
result.range = {
4248
from: data.range.from,
4349
to: data.range.to
4450
}

0 commit comments

Comments
 (0)