mirror of
https://github.com/Sithranduil/srcds_exporter.git
synced 2025-07-23 08:28:00 +02:00
111 lines
2.8 KiB
JavaScript
111 lines
2.8 KiB
JavaScript
import utils from '../utils/utils.js';
|
|
import metrics from './metrics.js';
|
|
|
|
export default {
|
|
async requestStatus(client, game) {
|
|
const stats = await utils.rconCommand(client, 'status');
|
|
let statusLine = null;
|
|
let res = null;
|
|
if (stats) {
|
|
statusLine = stats.split(/\r?\n/);
|
|
} else {
|
|
return null;
|
|
}
|
|
statusLine.shift();
|
|
statusLine.shift();
|
|
statusLine.shift();
|
|
statusLine.shift();
|
|
statusLine.shift();
|
|
statusLine.shift();
|
|
if (game === 'csgo') {
|
|
if (statusLine[0].search('gotv') !== -1) {
|
|
statusLine.shift();
|
|
}
|
|
res = statusLine[0].split(/players : (\d+) humans, (\d+) bots \((\d+)\/0 max\)/);
|
|
} else {
|
|
res = statusLine[0].split(/players : (\d+) humans, (\d+) bots \((\d+) max\)/);
|
|
}
|
|
res.pop();
|
|
res.shift();
|
|
return res;
|
|
},
|
|
setStatusMetrics(response) {
|
|
let players = 0;
|
|
let bots = 0;
|
|
let maxPlayers = 0;
|
|
if (response) {
|
|
[players, bots, maxPlayers] = response;
|
|
}
|
|
metrics.players.set((Number(players)));
|
|
metrics.bots.set((Number(bots)));
|
|
metrics.maxPlayers.set((Number(maxPlayers)));
|
|
},
|
|
async requestStats(client, game) {
|
|
const stats = await utils.rconCommand(client, 'stats');
|
|
let statusLine = null;
|
|
if (stats) {
|
|
statusLine = stats.split(/\r?\n/);
|
|
} else {
|
|
return null;
|
|
}
|
|
if (game === 'csgo') {
|
|
statusLine = stats.split(/\r?\n/);
|
|
statusLine.shift();
|
|
statusLine = statusLine[0].split(/\s+/);
|
|
statusLine.shift();
|
|
return statusLine;
|
|
}
|
|
statusLine.shift();
|
|
statusLine = statusLine[0].split(/\s+/);
|
|
return statusLine;
|
|
},
|
|
setStatsMetrics(response, game) {
|
|
let status = 0;
|
|
let cpu = 0;
|
|
let netin = 0;
|
|
let netout = 0;
|
|
let uptime = 0;
|
|
let maps = 0;
|
|
let fps = 0;
|
|
let svms = 0;
|
|
let varms = 0;
|
|
if (response) {
|
|
status = 1;
|
|
[cpu, netin, netout, uptime, maps, fps, , svms, varms] = response;
|
|
}
|
|
if (game === 'csgo') {
|
|
metrics.status.set((Number(status)));
|
|
metrics.cpu.set((Number(cpu)));
|
|
metrics.netin.set((Number(netin)));
|
|
metrics.netout.set((Number(netout)));
|
|
metrics.uptime.set((Number(uptime)));
|
|
metrics.maps.set((Number(maps)));
|
|
metrics.fps.set((Number(fps)));
|
|
metrics.svms.set((Number(svms)));
|
|
metrics.varms.set((Number(varms)));
|
|
} else {
|
|
metrics.status.set((Number(status)));
|
|
metrics.cpu.set((Number(cpu)));
|
|
metrics.netin.set((Number(netin)));
|
|
metrics.netout.set((Number(netout)));
|
|
metrics.uptime.set((Number(uptime)));
|
|
metrics.maps.set((Number(maps)));
|
|
metrics.fps.set((Number(fps)));
|
|
}
|
|
},
|
|
async requeseInfo(client) {
|
|
const maxUpdateRate = await utils.rconCommand(client, 'sv_maxupdaterate');
|
|
return {
|
|
sv_maxupdaterate: maxUpdateRate,
|
|
};
|
|
},
|
|
setInfoMetrics(response) {
|
|
let maxUpdateRate = 0;
|
|
if (response && response.sv_maxupdaterate) {
|
|
maxUpdateRate = utils.parseCvar(response.sv_maxupdaterate).value;
|
|
}
|
|
metrics.svMaxUpdateRate.set((Number(maxUpdateRate)));
|
|
return true;
|
|
},
|
|
};
|