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

View file

@ -30,6 +30,7 @@ const motdFile = './public/motd'
const qaFile = './public/qa'
var logger = require('../utils/logger.js')
const idStats = require('../utils/ids.js')
var utils = require('../utils/utils.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 }
logger.Log('\t' + msg, color)
} catch (e) {
console.log(e)
logger.Log('Couldnt parse JSON data', logger.GetColor('redbg'))
}
}

View file

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

View file

@ -23,7 +23,9 @@ module.exports = {
Log: Log,
GetColor: GetColor,
LogReq: LogReq,
setNoLogReadInterval: setNoLogReadInterval
LogStat: LogStat,
Load: Load,
logHashed: logHashed
}
const DELIM = C('green') + '|' + C()
@ -32,6 +34,14 @@ const utils = require('../utils/utils.js')
const locLogFile = './stats/logs'
const logFile = '/nlogs/nlogs'
const allLogFile = '/nlogs/log'
const statFile = 'stats/stats'
const vStatFile = 'stats/vstats'
const writeInterval = 10
let data = {}
let vData = {}
let writes = 0
const colors = [
'green',
@ -44,13 +54,6 @@ const colors = [
let noLogips = []
function setNoLogReadInterval () {
noLogips = utils.ReadFile('./nolog').split('\n')
setInterval(() => {
noLogips = utils.ReadFile('./nolog').split('\n')
}, 1000 * 60 * 30)
}
function GetDateString () {
const m = new Date()
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) {
if (!ip) {
return 'red'