mirror of
https://github.com/Sithranduil/srcds_exporter.git
synced 2025-07-22 23:28:26 +02:00
154 lines
4.4 KiB
JavaScript
154 lines
4.4 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;
|
|
let tv = null;
|
|
let regexStatus = 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") {
|
|
tv = "gotv";
|
|
regexStatus = /players : (\d+) humans, (\d+) bots \((\d+)\/0 max\)/;
|
|
} else {
|
|
tv = "sourcetv";
|
|
regexStatus = /players : (\d+) humans, (\d+) bots \((\d+) max\)/;
|
|
}
|
|
|
|
|
|
if (statusLine[0].search(tv) !== -1) {
|
|
statusLine.shift();
|
|
}
|
|
res = statusLine[0].split(regexStatus);
|
|
res.pop();
|
|
res.shift();
|
|
return res;
|
|
},
|
|
async requestStatusCs2(client, game) {
|
|
let stats = await utils.rconCommand(client, 'status_json');
|
|
stats = JSON.parse(stats)
|
|
return stats;
|
|
},
|
|
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)));
|
|
},
|
|
setCs2StatusMetrics(response) {
|
|
let clients_human = 0;
|
|
let clients_bot = 0;
|
|
let cpu = 0;
|
|
let status = 0;
|
|
let uptime = 0;
|
|
let maps = '';
|
|
if (response) {
|
|
let { server } = response;
|
|
uptime = response.process_uptime
|
|
clients_human = server.clients_human;
|
|
clients_bot = server.clients_bot;
|
|
cpu = server.cpu_usage;
|
|
maps = server.maps;
|
|
status = 1;
|
|
}
|
|
metrics.players.set((Number(clients_human)));
|
|
metrics.bots.set((Number(clients_bot)));
|
|
//metrics.maxPlayers.set((Number(maxPlayers)));
|
|
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)));
|
|
//metrics.svMaxUpdateRate.set((Number(maxUpdateRate)));
|
|
},
|
|
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;
|
|
},
|
|
};
|