Skip to content

Commit

Permalink
Merge pull request #161 from CatalysmsServerManager/Fix-issues-in-han…
Browse files Browse the repository at this point in the history
…dleLogLine
  • Loading branch information
niekcandaele committed Jul 11, 2020
2 parents 9c50561 + 2c74bb0 commit ee15d18
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 25 deletions.
49 changes: 24 additions & 25 deletions api/hooks/sdtdLogs/handleLogLine.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,24 @@ const geoip = require('geoip-country');
const _ = require('lodash');

const replaceQuotes = string => string.substring(1, string.length - 1);
const extractIntegers = string => string.match(/\d*/g).join('');

module.exports = logLine => {
const deathRegex = /(PlayerSpawnedInWorld \(reason: Died, position:)/g;
const deathValuesRegex = /([A-Za-z_]*)=(?:'([^']*)'|(\d*))/gm;
const steamIdRegex = /\d{17}/g;
const deathRegex = /(PlayerSpawnedInWorld \(reason: Died, position:)/g;
const deathValuesRegex = /([A-Za-z_]*)=(?:'([^']*)'|(\d*))/gm;

const connectedRegex = /(Player connected,)/g;

const joinedRegex = /(PlayerSpawnedInWorld \(reason: EnterMultiplayer, position:)/g;
const joinedValuesRegex = /([A-Za-z_]*)=(?:'([^']*)'|(\d*))/gm;

const newLevelRegex = /(made level \d*)/g;
const oldLevelRegex = /(was )\d*/g;

const connectedRegex = /(Player connected,)/g;
const entityKilledRegex = /(killed .*)/g;

module.exports = logLine => {

const joinedRegex = /(PlayerSpawnedInWorld \(reason: EnterMultiplayer, position:)/g;
const joinedValuesRegex = /([A-Za-z_]*)=(?:'([^']*)'|(\d*))/gm;

let returnValue = {
type: 'logLine',
Expand Down Expand Up @@ -296,17 +305,11 @@ module.exports = logLine => {
"type": "Log"
}
*/
let lvlMessage = logLine.msg.split('(');

let steamId = lvlMessage[1].split(')')[0].trim();
let newLvl = lvlMessage[1].split('level')[1].trim();
let oldLvl = lvlMessage[2]
.replace('was ', '')
.replace(')', '')
.trim();
const steamId = logLine.msg.match(steamIdRegex)[0];
const newLvl = extractIntegers(logLine.msg.match(newLevelRegex)[0]);
const oldLvl = extractIntegers(logLine.msg.match(oldLevelRegex)[0]);

newLvl = parseInt(newLvl);
oldLvl = parseInt(oldLvl);

lvlMessage = {
date: logLine.date,
Expand All @@ -333,28 +336,24 @@ module.exports = logLine => {
"type": "Log"
}
*/
let killMessage = logLine.msg.split('(');

let steamId = killMessage[1].split(')')[0].trim();
let victimInfo = killMessage[1].split('killed ')[1].split(' ');
let entityClass = victimInfo[0];
let entityName = victimInfo[1];
const entityInfo = logLine.msg.match(entityKilledRegex)[0].split(' ');

killMessage = {
date: logLine.date,
time: logLine.time,
uptime: logLine.uptime,
msg: logLine.msg,
steamId: steamId,
entityClass: entityClass,
entityName: entityName
steamId: logLine.msg.match(steamIdRegex)[0],
entityClass: entityInfo[1],
entityName: entityInfo[2]
};

if (entityClass === 'zombie') {
if (killMessage.entityClass === 'zombie') {
returnValue.type = 'zombieKilled';
}

if (entityClass === 'animal') {
if (killMessage.entityClass === 'animal') {
returnValue.type = 'animalKilled';
}

Expand Down
56 changes: 56 additions & 0 deletions test/unit/hooks/sdtdlogs/handleLogLine.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,60 @@ describe('sdtdLogs#handleLogLine', () => {
expect(result.data.steamId).to.eq('76561198028175941');
expect(result.data.entityId).to.eq('531');
});

it('correctly detects a playerLevel event', () => {
const logLine = {
'date': '2020-07-11',
'time': '08:11:40',
'uptime': '1673.118',
'msg': '[CSMM_Patrons]playerLeveled: (VE) Kiota (76561198108856299) made level 4 (was 3)',
'trace': '',
'type': 'Log'
};

const result = handleLogLine(logLine);

expect(result.type).to.eq('playerLevel');
expect(result.data.steamId).to.eq('76561198108856299');
expect(result.data.newLvl).to.eq('4');
expect(result.data.oldLvl).to.eq('3');

});


it('correctly detects a zombieKilled event', () => {
const logLine = {
'date': '2017-11-14',
'time': '14:50:49',
'uptime': '133.559',
'msg': '[CSMM_Patrons]entityKilled: (VE) Kiota (76561198028175941) killed zombie zombieBoe',
'trace': '',
'type': 'Log'
};
const result = handleLogLine(logLine);

expect(result.type).to.eq('zombieKilled');
expect(result.data.steamId).to.eq('76561198028175941');
expect(result.data.entityClass).to.eq('zombie');
expect(result.data.entityName).to.eq('zombieBoe');

});

it('correctly detects a animalKilled event', () => {
const logLine = {
'date': '2017-11-14',
'time': '14:50:49',
'uptime': '133.559',
'msg': '[CSMM_Patrons]entityKilled: (VE) Kiota (76561198028175941) killed animal cuteBambi',
'trace': '',
'type': 'Log'
};
const result = handleLogLine(logLine);

expect(result.type).to.eq('animalKilled');
expect(result.data.steamId).to.eq('76561198028175941');
expect(result.data.entityClass).to.eq('animal');
expect(result.data.entityName).to.eq('cuteBambi');

});
});

0 comments on commit ee15d18

Please sign in to comment.