show the user agent

This commit is contained in:
2026-07-03 08:44:07 +02:00
parent 67d70eef43
commit 848877d452
3 changed files with 15 additions and 13 deletions
+10 -10
View File
@@ -11,13 +11,13 @@ const { serverConfig, configSave } = require('./server_config');
const dns = require('dns').promises;
let adminIp = null;
async function loadVpsIp() {
async function loadAdminIp() {
try {
adminIp = normalizeIp(await dns.lookup("fmadmin.flerken.pl.eu.org").then(r => r.address));
} catch (err) {}
}
loadVpsIp()
setInterval(loadVpsIp, 5 * 60 * 1000);
loadAdminIp()
setInterval(loadAdminIp, 5 * 60 * 1000);
let geoip = null;
try {
@@ -123,16 +123,16 @@ function fetchIpWhoisInfo(ip, timeoutMs = 1500) {
}
function handleConnect(clientIp, currentUsers, ws, callback) {
function handleConnect(clientIp, currentUsers, ws, request, callback) {
if (ipCache.has(clientIp)) {
processConnection(clientIp, ipCache.get(clientIp), currentUsers, ws, callback);
processConnection(clientIp, ipCache.get(clientIp), currentUsers, ws, request, callback);
return;
}
if (ipInfoInFlight.has(clientIp)) {
ipInfoInFlight.get(clientIp)
.then((info) => processConnection(clientIp, info, currentUsers, ws, callback))
.catch(() => processConnection(clientIp, { country: undefined }, currentUsers, ws, callback));
.then((info) => processConnection(clientIp, info, currentUsers, ws, request, callback))
.catch(() => processConnection(clientIp, { country: undefined }, currentUsers, ws, request, callback));
return;
}
@@ -163,7 +163,7 @@ function handleConnect(clientIp, currentUsers, ws, callback) {
});
ipInfoInFlight.set(clientIp, inFlightPromise);
inFlightPromise.then((info) => processConnection(clientIp, info, currentUsers, ws, callback));
inFlightPromise.then((info) => processConnection(clientIp, info, currentUsers, ws, request, callback));
}
let bannedASCache = { data: null, timestamp: 0 };
@@ -204,7 +204,7 @@ function fetchBannedAS(callback) {
const recentBannedIps = new Map(); // Store clientIp -> timestamp
function processConnection(clientIp, locationInfo, currentUsers, ws, callback) {
function processConnection(clientIp, locationInfo, currentUsers, ws, request, callback) {
const options = { year: "numeric", month: "numeric", day: "numeric", hour: "2-digit", minute: "2-digit" };
const connectionTime = new Date().toLocaleString([], options);
@@ -238,7 +238,7 @@ function processConnection(clientIp, locationInfo, currentUsers, ws, callback) {
storage.connectedUsers.push({
ip: clientIp, location: userLocation,
isp: locationInfo?.isp, as: locationInfo?.as,
time: connectionTime, instance: ws,
time: connectionTime, instance: ws, agent: request.headers["user-agent"],
});
consoleCmd.logInfo(`Web client \x1b[32mconnected\x1b[0m (${clientIp}) \x1b[90m[${currentUsers}]\x1b[0m Location: ${userLocationForLog}`);
+1 -1
View File
@@ -96,7 +96,7 @@ wss.on('connection', (ws, request) => {
if (timeoutAntenna) clearTimeout(timeoutAntenna);
helpers.handleConnect(clientIp, currentUsers, ws, (result) => {
helpers.handleConnect(clientIp, currentUsers, ws, request, (result) => {
if (result === "User banned") {
ws.close(1008, 'Banned IP');
return;
+4 -2
View File
@@ -43,6 +43,7 @@
<tr>
<th>IP Address</th>
<th>Location</th>
<th>User Agent</th>
<th>Online since</th>
<th></th>
</tr>
@@ -52,13 +53,14 @@
<% connectedUsers.forEach(user => { %>
<tr>
<td>
<a href="https://ipinfo.io/<%= user.ip.replace('::ffff:', '') %>" target="_blank">
<%= user.ip.replace('::ffff:', '') %>
<a href="https://ipinfo.io/<%= user.ip %>" target="_blank">
<%= user.ip %>
</a>
</td>
<td>
<%= user.location %><% if (user.isp) { %> (<%= user.isp %>)<% } %>
</td>
<td><%= user.agent %></td>
<td><%= user.time %></td>
<td><a href="./kick?ip=<%= user.ip %>">Kick</a></td>
</tr>