Skip to content

Commit 69b711b

Browse files
authored
Merge pull request #312 from Bukowskaii/feature/advanced_logging
Feature/advanced logging
2 parents 04a7450 + 57df790 commit 69b711b

File tree

1 file changed

+68
-5
lines changed

1 file changed

+68
-5
lines changed

src/routes/discord.js

Lines changed: 68 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
const express = require('express');
44
const axios = require('axios');
55
const router = express.Router();
6-
76
const DiscordClient = require('../services/discord.js');
87
//const utils = require('../services/utils.js');
98

@@ -17,6 +16,7 @@ const catchAsyncErrors = fn => ((req, res, next) => {
1716
}
1817
});
1918

19+
2020
router.get('/login', (req, res) => {
2121
const scope = 'guilds%20identify%20email';
2222
res.redirect(`https://discordapp.com/api/oauth2/authorize?client_id=${config.discord.clientId}&scope=${scope}&response_type=code&redirect_uri=${redirect}`);
@@ -46,16 +46,79 @@ router.get('/callback', catchAsyncErrors(async (req, res) => {
4646
const valid = perms.map !== false;
4747
req.session.valid = valid;
4848
req.session.save();
49+
50+
const ip = req.headers['cf-connecting-ip'] || ((req.headers['x-forwarded-for'] || '').split(', ')[0]) || (req.connection.remoteAddress || req.connection.localAddress).match('[0-9]+.[0-9].+[0-9]+.[0-9]+$')[0];
51+
const url = `http://ip-api.com/json/${ip}?fields=66846719&lang=${config.locale || 'en'}`;
52+
const geoResponse = await axios.get(url);
53+
const geo = geoResponse.data;
54+
const embed = {
55+
color: 0xFF0000,
56+
title: 'Failure',
57+
author: {
58+
name: `${user.username}#${user.discriminator}`,
59+
icon_url: `https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png`,
60+
},
61+
description: 'User Failed Authentication',
62+
thumbnail: {
63+
url: `https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png`,
64+
},
65+
fields: [
66+
{
67+
name: 'Discord Id',
68+
value: `<@${user.id}>`,
69+
},
70+
{
71+
name: 'Client Info',
72+
value: req.headers['user-agent']
73+
},
74+
{
75+
name: 'Ip Address',
76+
value: `||${req.headers['cf-connecting-ip']}||`
77+
},
78+
{
79+
name: 'Geo Lookup',
80+
value: `${geo['city']}, ${geo['regionName']}, ${geo['zip']}`
81+
},
82+
{
83+
name: 'Google Map',
84+
value: `https://www.google.com/maps?q=${geo['lat']},${geo['lon']}`
85+
},
86+
{
87+
name: 'Network Provider',
88+
value: `${geo['isp']}, ${geo['as']}`
89+
},
90+
{
91+
name: 'Mobile',
92+
value: `${geo['mobile']}`,
93+
inline: true
94+
},
95+
{
96+
name: 'Proxy',
97+
value: `${geo['proxy']}`,
98+
inline: true
99+
},
100+
{
101+
name: 'Hosting',
102+
value: `${geo['hosting']}`,
103+
inline: true
104+
},
105+
],
106+
timestamp: new Date(),
107+
};
108+
let redirect = '/login';
49109
if (valid) {
50110
console.log(user.id, 'Authenticated successfully.');
51-
await DiscordClient.sendMessage(config.discord.logChannelId, `${user.username}#${user.discriminator} (${user.id}) Authenticated successfully.`);
52-
res.redirect(`/?token=${response.data.access_token}`);
111+
embed.title = 'Success';
112+
embed.description = 'User Successfully Authenticated';
113+
embed.color = 0x00FF00;
114+
redirect = `/?token=${response.data.access_token}`;
53115
} else {
54116
// Not in Discord server(s) and/or have required roles to view map
55117
console.warn(user.id, 'Not authorized to access map');
56-
await DiscordClient.sendMessage(config.discord.logChannelId, `${user.username}#${user.discriminator} (${user.id}) Not authorized to access map.`);
57-
res.redirect('/login');
58118
}
119+
120+
await DiscordClient.sendMessage(config.discord.logChannelId, {embed: embed});
121+
res.redirect(redirect);
59122
}).catch(error => {
60123
console.error(error);
61124
//throw new Error('UnableToFetchToken');

0 commit comments

Comments
 (0)