Stat.js merge with logger.js, added ids.js

This commit is contained in:
MrFry 2019-10-28 14:29:18 +01:00
parent 892bfff54e
commit 5dfcb7d8ae
4 changed files with 112 additions and 35 deletions

View file

@ -25,13 +25,11 @@ const httpsport = 8443
const express = require('express') const express = require('express')
const vhost = require('vhost') const vhost = require('vhost')
const logger = require('./utils/logger.js') const logger = require('./utils/logger.js')
logger.setNoLogReadInterval() logger.Load()
const utils = require('./utils/utils.js') const utils = require('./utils/utils.js')
const fs = require('fs') const fs = require('fs')
const http = require('http') const http = require('http')
const https = require('https') const https = require('https')
const stat = require('./utils/stat.js')
stat.Load()
const loggableKeywords = [ const loggableKeywords = [
'user.js' 'user.js'
@ -73,12 +71,11 @@ app.use(function (req, res, next) {
return req.url.includes(x) return req.url.includes(x)
}) })
if (toLog) { logger.LogReq(req) } if (toLog) { logger.LogReq(req) }
if (res.statusCode !== 404) { stat.LogStat(req.url) } if (res.statusCode !== 404) { logger.LogStat(req.url) }
}) })
next() next()
}) })
Object.keys(modules).forEach(function (k, i) { Object.keys(modules).forEach(function (k, i) {
let x = modules[k] let x = modules[k]
try { try {

View file

@ -30,6 +30,7 @@ const motdFile = './public/motd'
const qaFile = './public/qa' const qaFile = './public/qa'
var logger = require('../utils/logger.js') var logger = require('../utils/logger.js')
const idStats = require('../utils/ids.js')
var utils = require('../utils/utils.js') var utils = require('../utils/utils.js')
const classes = require('./question-classes/classes.js') const classes = require('./question-classes/classes.js')
@ -87,11 +88,17 @@ function ProcessIncomingRequest (data) {
} }
} }
logger.Log('\t' + d.subj) let subjRow = '\t' + d.subj
if (d.id) {
subjRow += ' ( CID: ' + logger.logHashed(d.id) + ')'
idStats.LogId(d.id)
}
logger.Log(subjRow)
if (d.version !== undefined) { msg += '. Version: ' + d.version } if (d.version !== undefined) { msg += '. Version: ' + d.version }
logger.Log('\t' + msg, color) logger.Log('\t' + msg, color)
} catch (e) { } catch (e) {
console.log(e)
logger.Log('Couldnt parse JSON data', logger.GetColor('redbg')) logger.Log('Couldnt parse JSON data', logger.GetColor('redbg'))
} }
} }

View file

@ -19,48 +19,46 @@
------------------------------------------------------------------------- */ ------------------------------------------------------------------------- */
module.exports = { module.exports = {
LogStat: LogStat, LogId: LogId,
Load: Load Load: Load
} }
var utils = require('../utils/utils.js') const utils = require('../utils/utils.js')
var logger = require('../utils/logger.js') const logger = require('../utils/logger.js')
const idStatFile = 'stats/idstats'
const idVStatFile = 'stats/idvstats'
const statFile = 'stats/stats'
const vStatFile = 'stats/vstats'
const writeInterval = 10 const writeInterval = 10
var data = {} let data = {}
var vData = {} let vData = {}
var writes = 0 let writes = 0
function Load () { function Load () {
try { try {
var prevData = utils.ReadFile(statFile) var prevData = utils.ReadFile(idStatFile)
data = JSON.parse(prevData) data = JSON.parse(prevData)
} catch (e) { } catch (e) {
logger.Log('Error at loading logs! (@ first run its normal)', logger.GetColor('redbg')) logger.Log('Error at loading id logs! (@ first run its normal)', logger.GetColor('redbg'))
console.log(e) console.log(e)
} }
try { try {
var prevVData = utils.ReadFile(vStatFile) var prevVData = utils.ReadFile(idVStatFile)
vData = JSON.parse(prevVData) vData = JSON.parse(prevVData)
} catch (e) { } catch (e) {
logger.Log('Error at loading visit logs! (@ first run its normal)', logger.GetColor('redbg')) logger.Log('Error at loading id logs! (@ first run its normal)', logger.GetColor('redbg'))
console.log(e) console.log(e)
} }
} }
function LogStat (url) { function LogId (id) {
url = url.split('?')[0] Inc(id)
Inc(url) AddVisitStat(id)
AddVisitStat(url)
Save() Save()
} }
function Inc (value) { function Inc (value) {
if (value.startsWith('/?')) { value = '/' }
if (data[value] === undefined) { data[value] = 0 } if (data[value] === undefined) { data[value] = 0 }
data[value]++ data[value]++
} }
@ -77,15 +75,15 @@ function Save () {
writes++ writes++
if (writes === writeInterval) { if (writes === writeInterval) {
try { try {
utils.WriteFile(JSON.stringify(data), statFile) utils.WriteFile(JSON.stringify(data), idStatFile)
// logger.Log("Stats wrote."); // Log("Stats wrote.");
} catch (e) { } catch (e) {
logger.Log('Error at writing logs!', logger.GetColor('redbg')) logger.Log('Error at writing logs!', logger.GetColor('redbg'))
console.log(e) console.log(e)
} }
try { try {
utils.WriteFile(JSON.stringify(vData), vStatFile) utils.WriteFile(JSON.stringify(vData), idVStatFile)
// logger.Log("Stats wrote."); // Log("Stats wrote.");
} catch (e) { } catch (e) {
logger.Log('Error at writing visit logs!', logger.GetColor('redbg')) logger.Log('Error at writing visit logs!', logger.GetColor('redbg'))
console.log(e) console.log(e)

View file

@ -23,7 +23,9 @@ module.exports = {
Log: Log, Log: Log,
GetColor: GetColor, GetColor: GetColor,
LogReq: LogReq, LogReq: LogReq,
setNoLogReadInterval: setNoLogReadInterval LogStat: LogStat,
Load: Load,
logHashed: logHashed
} }
const DELIM = C('green') + '|' + C() const DELIM = C('green') + '|' + C()
@ -32,6 +34,14 @@ const utils = require('../utils/utils.js')
const locLogFile = './stats/logs' const locLogFile = './stats/logs'
const logFile = '/nlogs/nlogs' const logFile = '/nlogs/nlogs'
const allLogFile = '/nlogs/log' const allLogFile = '/nlogs/log'
const statFile = 'stats/stats'
const vStatFile = 'stats/vstats'
const writeInterval = 10
let data = {}
let vData = {}
let writes = 0
const colors = [ const colors = [
'green', 'green',
@ -44,13 +54,6 @@ const colors = [
let noLogips = [] let noLogips = []
function setNoLogReadInterval () {
noLogips = utils.ReadFile('./nolog').split('\n')
setInterval(() => {
noLogips = utils.ReadFile('./nolog').split('\n')
}, 1000 * 60 * 30)
}
function GetDateString () { function GetDateString () {
const m = new Date() const m = new Date()
const d = m.getFullYear() + '/' + const d = m.getFullYear() + '/' +
@ -109,6 +112,78 @@ function LogReq (req, toFile, sc) {
} }
} }
function setNoLogReadInterval () {
noLogips = utils.ReadFile('./nolog').split('\n')
setInterval(() => {
noLogips = utils.ReadFile('./nolog').split('\n')
}, 1000 * 60 * 30)
}
function Load () {
try {
var prevData = utils.ReadFile(statFile)
data = JSON.parse(prevData)
} catch (e) {
Log('Error at loading logs! (@ first run its normal)', GetColor('redbg'))
console.log(e)
}
try {
var prevVData = utils.ReadFile(vStatFile)
vData = JSON.parse(prevVData)
} catch (e) {
Log('Error at loading visit logs! (@ first run its normal)', GetColor('redbg'))
console.log(e)
}
setNoLogReadInterval()
}
function LogStat (url) {
url = url.split('?')[0]
Inc(url)
AddVisitStat(url)
Save()
}
function Inc (value) {
if (value.startsWith('/?')) { value = '/' }
if (data[value] === undefined) { data[value] = 0 }
data[value]++
}
function AddVisitStat (name) {
var m = new Date()
const now = m.getFullYear() + '/' + ('0' + (m.getMonth() + 1)).slice(-2) + '/' + ('0' + m.getDate()).slice(-2)
if (vData[now] === undefined) { vData[now] = {} }
if (vData[now][name] === undefined) { vData[now][name] = 0 }
vData[now][name]++
}
function Save () {
writes++
if (writes === writeInterval) {
try {
utils.WriteFile(JSON.stringify(data), statFile)
// Log("Stats wrote.");
} catch (e) {
Log('Error at writing logs!', GetColor('redbg'))
console.log(e)
}
try {
utils.WriteFile(JSON.stringify(vData), vStatFile)
// Log("Stats wrote.");
} catch (e) {
Log('Error at writing visit logs!', GetColor('redbg'))
console.log(e)
}
writes = 0
}
}
function logHashed (x) {
return GetRandomColor(x.toString()) + x + C()
}
function GetRandomColor (ip) { function GetRandomColor (ip) {
if (!ip) { if (!ip) {
return 'red' return 'red'