This repository has been archived by the owner on Jun 19, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 12
/
ipInfo.js
85 lines (77 loc) · 1.87 KB
/
ipInfo.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
const logger = require('./logger')
const { sendImageToWebhooks, sendImageToWebhooksGithub } = require('./webhook')
const ipInfo = async (
clientIP,
imageNameWithExtension,
imagePath,
os,
browser,
userAgent,
domain
) => {
if (!clientIP) return
if (clientIP === '::1') {
clientIP = '207.97.227.239'
logger.info(`Webhook it work but I don't want to send it`)
return
}
if (clientIP.substr(0, 7) === '::ffff:') {
clientIP = clientIP.substr(7)
}
if (clientIP !== 'not found') {
try {
const infoReq = `http://ip-api.com/json/${clientIP}?fields=16976857`
const infoRes = await fetch(infoReq)
const infoJson = await infoRes.json()
const {
country,
regionName,
city,
lat,
lon,
timezone,
isp,
as,
mobile,
proxy,
hosting
} = infoJson
logger.info(
`Client's information: Country: ${country}, Region: ${regionName}, City: ${city}, Coordinates: ${lat}, ${lon}, Timezone: ${timezone}, ISP: ${isp}, AS: ${as}, Mobile: ${mobile}, Proxy: ${proxy}, Hosting: ${hosting}`
)
if (
!userAgent.includes('github-camo') &&
!userAgent.includes('github.com')
) {
sendImageToWebhooks(
imageNameWithExtension,
imagePath,
clientIP,
timezone,
country,
regionName,
city,
lat,
lon,
isp,
as,
mobile,
proxy,
hosting,
os,
browser,
userAgent,
domain
)
} else {
sendImageToWebhooksGithub(imageNameWithExtension, imagePath, domain)
}
} catch (error) {
logger.error(`Error getting client's information: ${error}`)
}
} else {
logger.error('Client IP not found')
}
return
}
module.exports = ipInfo