Compare commits
No commits in common. "03073f5436c95ca6fee54b5544d593628656f1b2" and "3c02c353e730773082297158676f7b03c4306946" have entirely different histories.
03073f5436
...
3c02c353e7
|
@ -46,6 +46,7 @@ Thumbs.db
|
||||||
|
|
||||||
# Internal Data
|
# Internal Data
|
||||||
/public/
|
/public/
|
||||||
|
mongodb-data/
|
||||||
server/resource/
|
server/resource/
|
||||||
server/apib/dredd/data/tmp-resource
|
server/apib/dredd/data/tmp-resource
|
||||||
backup/
|
backup/
|
||||||
|
@ -58,3 +59,4 @@ backup/
|
||||||
.cache/motd.legal-displayed
|
.cache/motd.legal-displayed
|
||||||
.profile
|
.profile
|
||||||
.ssh/
|
.ssh/
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -32,7 +32,6 @@ const LogBudgetSchema = new Schema({
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
collection: 'logBudget',
|
collection: 'logBudget',
|
||||||
versionKey: false,
|
|
||||||
});
|
});
|
||||||
// optional more indices
|
// optional more indices
|
||||||
LogBudgetSchema.index({war: 1});
|
LogBudgetSchema.index({war: 1});
|
||||||
|
|
|
@ -28,7 +28,6 @@ const LogFlagSchema = new Schema({
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
collection: 'logFlag',
|
collection: 'logFlag',
|
||||||
versionKey: false,
|
|
||||||
});
|
});
|
||||||
// optional more indices
|
// optional more indices
|
||||||
LogFlagSchema.index({war: 1, player: 1});
|
LogFlagSchema.index({war: 1, player: 1});
|
||||||
|
|
|
@ -40,7 +40,6 @@ const LogKillSchema = new Schema({
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
collection: 'logKill',
|
collection: 'logKill',
|
||||||
versionKey: false,
|
|
||||||
});
|
});
|
||||||
// optional more indices
|
// optional more indices
|
||||||
LogKillSchema.index({war: 1, shooter: 1, target: 1});
|
LogKillSchema.index({war: 1, shooter: 1, target: 1});
|
||||||
|
|
|
@ -27,7 +27,6 @@ const LogPlayerCountSchema = new Schema({
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
collection: 'logPlayerCount',
|
collection: 'logPlayerCount',
|
||||||
versionKey: false,
|
|
||||||
});
|
});
|
||||||
// optional more indices
|
// optional more indices
|
||||||
LogPlayerCountSchema.index({war: 1});
|
LogPlayerCountSchema.index({war: 1});
|
||||||
|
|
|
@ -32,7 +32,6 @@ const LogKillSchema = new Schema({
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
collection: 'logPoints',
|
collection: 'logPoints',
|
||||||
versionKey: false,
|
|
||||||
});
|
});
|
||||||
// optional more indices
|
// optional more indices
|
||||||
LogKillSchema.index({war: 1, shooter: 1, target: 1});
|
LogKillSchema.index({war: 1, shooter: 1, target: 1});
|
||||||
|
|
|
@ -19,7 +19,6 @@ const LogRespawnSchema = new Schema({
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
collection: 'logRespawn',
|
collection: 'logRespawn',
|
||||||
versionKey: false,
|
|
||||||
});
|
});
|
||||||
// optional more indices
|
// optional more indices
|
||||||
LogRespawnSchema.index({war: 1, player: 1});
|
LogRespawnSchema.index({war: 1, player: 1});
|
||||||
|
|
|
@ -32,7 +32,6 @@ const LogReviveSchema = new Schema({
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
collection: 'logRevive',
|
collection: 'logRevive',
|
||||||
versionKey: false,
|
|
||||||
});
|
});
|
||||||
// optional more indices
|
// optional more indices
|
||||||
LogReviveSchema.index({war: 1, medic: 1});
|
LogReviveSchema.index({war: 1, medic: 1});
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const mongoose = require('mongoose');
|
|
||||||
const Schema = mongoose.Schema;
|
|
||||||
|
|
||||||
const LogServerFpsSchema = new Schema({
|
|
||||||
war: {
|
|
||||||
type: mongoose.Schema.Types.ObjectId,
|
|
||||||
ref: 'War',
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
entityName: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
singleAvgFps: {
|
|
||||||
type: Number,
|
|
||||||
get: (v) => Math.round(v),
|
|
||||||
set: (v) => Math.round(v),
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
singleMinFps: {
|
|
||||||
type: Number,
|
|
||||||
get: (v) => Math.round(v),
|
|
||||||
set: (v) => Math.round(v),
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
avgFps: [{
|
|
||||||
type: Number,
|
|
||||||
get: (v) => Math.round(v),
|
|
||||||
set: (v) => Math.round(v),
|
|
||||||
required: true,
|
|
||||||
}],
|
|
||||||
minFps: [{
|
|
||||||
type: Number,
|
|
||||||
get: (v) => Math.round(v),
|
|
||||||
set: (v) => Math.round(v),
|
|
||||||
required: true,
|
|
||||||
}],
|
|
||||||
}, {
|
|
||||||
collection: 'logServerFps',
|
|
||||||
versionKey: false,
|
|
||||||
});
|
|
||||||
// optional more indices
|
|
||||||
LogServerFpsSchema.index({war: 1});
|
|
||||||
|
|
||||||
module.exports = mongoose.model('LogServerFpsSchema', LogServerFpsSchema);
|
|
|
@ -34,7 +34,6 @@ const LogTransportSchema = new Schema({
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
collection: 'logTransport',
|
collection: 'logTransport',
|
||||||
versionKey: false,
|
|
||||||
});
|
});
|
||||||
// optional more indices
|
// optional more indices
|
||||||
LogTransportSchema.index({war: 1, driver: 1});
|
LogTransportSchema.index({war: 1, driver: 1});
|
||||||
|
|
|
@ -41,7 +41,6 @@ const LogVehicleKillSchema = new Schema({
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
collection: 'logVehicle',
|
collection: 'logVehicle',
|
||||||
versionKey: false,
|
|
||||||
});
|
});
|
||||||
// optional more indices
|
// optional more indices
|
||||||
LogVehicleKillSchema.index({war: 1, shooter: 1, target: 1});
|
LogVehicleKillSchema.index({war: 1, shooter: 1, target: 1});
|
||||||
|
|
|
@ -82,11 +82,6 @@ const PlayerSchema = new Schema({
|
||||||
get: (v) => Math.round(v),
|
get: (v) => Math.round(v),
|
||||||
set: (v) => Math.round(v),
|
set: (v) => Math.round(v),
|
||||||
},
|
},
|
||||||
performance: {
|
|
||||||
type: mongoose.Schema.Types.ObjectId,
|
|
||||||
ref: 'LogServerFpsSchema',
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
}, {
|
}, {
|
||||||
collection: 'player',
|
collection: 'player',
|
||||||
timestamps: {createdAt: 'timestamp'},
|
timestamps: {createdAt: 'timestamp'},
|
||||||
|
|
|
@ -34,7 +34,6 @@ const LogFlagModel = require('../models/logs/flag');
|
||||||
const LogBudgetModel = require('../models/logs/budget');
|
const LogBudgetModel = require('../models/logs/budget');
|
||||||
const LogPointsModel = require('../models/logs/points');
|
const LogPointsModel = require('../models/logs/points');
|
||||||
const LogPlayerCountModel = require('../models/logs/player-count');
|
const LogPlayerCountModel = require('../models/logs/player-count');
|
||||||
const LogServerFpsModel = require('../models/logs/server-fps');
|
|
||||||
|
|
||||||
// util
|
// util
|
||||||
const genericPatch = require('./_generic').genericPatch;
|
const genericPatch = require('./_generic').genericPatch;
|
||||||
|
@ -74,6 +73,11 @@ wars.route('/')
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
|
PlayerModel.create(statsResult.players, (err) => {
|
||||||
|
if (err) {
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
|
||||||
LogKillModel.create(statsResult.kills, () => {
|
LogKillModel.create(statsResult.kills, () => {
|
||||||
LogVehicleKillModel.create(statsResult.vehicles, () => {
|
LogVehicleKillModel.create(statsResult.vehicles, () => {
|
||||||
LogRespawnModel.create(statsResult.respawn, () => {
|
LogRespawnModel.create(statsResult.respawn, () => {
|
||||||
|
@ -83,20 +87,6 @@ wars.route('/')
|
||||||
LogTransportModel.create(statsResult.transport, () => {
|
LogTransportModel.create(statsResult.transport, () => {
|
||||||
LogPlayerCountModel.create(statsResult.playerCount, () => {
|
LogPlayerCountModel.create(statsResult.playerCount, () => {
|
||||||
LogPointsModel.create(statsResult.points, () => {
|
LogPointsModel.create(statsResult.points, () => {
|
||||||
LogServerFpsModel.create(statsResult.serverFps, (err, serverPerformanceEntries) => {
|
|
||||||
serverPerformanceEntries.forEach((entry) => {
|
|
||||||
const idx = statsResult.players
|
|
||||||
.findIndex((player) => player.name === entry.entityName);
|
|
||||||
if (idx !== -1) {
|
|
||||||
const player = statsResult.players[idx];
|
|
||||||
player['performance'] = entry._id;
|
|
||||||
statsResult.players[idx] = player;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
PlayerModel.create(statsResult.players, (err) => {
|
|
||||||
if (err) {
|
|
||||||
return next(err);
|
|
||||||
}
|
|
||||||
const folderName = resourceLocation.concat(war._id);
|
const folderName = resourceLocation.concat(war._id);
|
||||||
mkdirp(folderName, (err) => {
|
mkdirp(folderName, (err) => {
|
||||||
if (err) return next(err);
|
if (err) return next(err);
|
||||||
|
@ -131,14 +121,12 @@ wars.route('/')
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
const err = new Error('no Logfile provided');
|
const err = new Error('no Logfile provided');
|
||||||
err.status = codes.wrongmediasend;
|
err.status = codes.wrongmediasend;
|
||||||
next(err);
|
next(err);
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
)
|
|
||||||
|
|
||||||
.all(
|
.all(
|
||||||
routerHandling.httpMethodNotAllowed
|
routerHandling.httpMethodNotAllowed
|
||||||
|
|
|
@ -29,14 +29,6 @@ const opforPlayerCountRegex = /CSAT\s(\d*)/;
|
||||||
|
|
||||||
const timestampRegex= /LOG:\s(\d*:\d*:\d*)\s---/;
|
const timestampRegex= /LOG:\s(\d*:\d*:\d*)\s---/;
|
||||||
|
|
||||||
const singleMinFpsRegex = /Single min\. FPS for (.*):\s(\d*.\d*)"/; // group1 = entity name, group2 = value
|
|
||||||
|
|
||||||
const singleAvgFpsRegex = /Single avg\. FPS for (.*):\s(\d*.\d*)"/; // group1 = entity name, group2 = value
|
|
||||||
|
|
||||||
const minFpsRegex = /Min\. FPS for (.*):\s\[(.*)\]"/; // group1 = entity name, group2 = comma separated values
|
|
||||||
|
|
||||||
const avgFpsRegex = /Avg\. FPS for (.*):\s\[(.*)\]"/; // group1 = entity name, group2 = comma separated values
|
|
||||||
|
|
||||||
const parseWarLog = (lineArray, war) => {
|
const parseWarLog = (lineArray, war) => {
|
||||||
let flagBlufor = true;
|
let flagBlufor = true;
|
||||||
let flagOpfor = true;
|
let flagOpfor = true;
|
||||||
|
@ -56,7 +48,6 @@ const parseWarLog = (lineArray, war) => {
|
||||||
transport: [],
|
transport: [],
|
||||||
players: [],
|
players: [],
|
||||||
playerCount: [],
|
playerCount: [],
|
||||||
serverFps: [],
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const VEHICLE_BLACKLIST = [
|
const VEHICLE_BLACKLIST = [
|
||||||
|
@ -274,43 +265,6 @@ const parseWarLog = (lineArray, war) => {
|
||||||
countBlufor: countBlufor,
|
countBlufor: countBlufor,
|
||||||
countOpfor: countOpfor,
|
countOpfor: countOpfor,
|
||||||
});
|
});
|
||||||
} else if (line.includes('(FPS)')) {
|
|
||||||
stats.clean.push(line);
|
|
||||||
|
|
||||||
const updateServerFpsLogEntry = (entityName, addKey, addValue) => {
|
|
||||||
const idx = stats.serverFps.findIndex((entry) => entry.entityName === entityName);
|
|
||||||
if (idx === -1) {
|
|
||||||
stats.serverFps.push({
|
|
||||||
war: war.id,
|
|
||||||
entityName: entityName,
|
|
||||||
[addKey]: addValue,
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const entity = stats.serverFps[idx];
|
|
||||||
entity[addKey] = addValue;
|
|
||||||
stats.serverFps[idx] = entity;
|
|
||||||
};
|
|
||||||
|
|
||||||
const singleMinMatch = singleMinFpsRegex.exec(line);
|
|
||||||
if (singleMinMatch) {
|
|
||||||
updateServerFpsLogEntry(singleMinMatch[1], 'singleMinFps', singleMinMatch[2]);
|
|
||||||
} else {
|
|
||||||
const singleAvgMatch = singleAvgFpsRegex.exec(line);
|
|
||||||
if (singleAvgMatch) {
|
|
||||||
updateServerFpsLogEntry(singleAvgMatch[1], 'singleAvgFps', singleAvgMatch[2]);
|
|
||||||
} else {
|
|
||||||
const minCollectionMatch = minFpsRegex.exec(line);
|
|
||||||
if (minCollectionMatch) {
|
|
||||||
updateServerFpsLogEntry(minCollectionMatch[1], 'minFps', minCollectionMatch[2].split(','));
|
|
||||||
} else {
|
|
||||||
const avgCollectionMatch = avgFpsRegex.exec(line);
|
|
||||||
if (avgCollectionMatch) {
|
|
||||||
updateServerFpsLogEntry(avgCollectionMatch[1], 'avgFps', avgCollectionMatch[2].split(','));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (line.includes('(Fraktionsuebersicht)') || line.includes('Fraktionsübersicht')) {
|
} else if (line.includes('(Fraktionsuebersicht)') || line.includes('Fraktionsübersicht')) {
|
||||||
/**
|
/**
|
||||||
* PLAYERS
|
* PLAYERS
|
||||||
|
|
Loading…
Reference in New Issue