diff --git a/server.js b/server.js index 6eb7d7b..9edda4e 100644 --- a/server.js +++ b/server.js @@ -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 { diff --git a/utils/actions.js b/utils/actions.js index b6e4311..0f36a4e 100644 --- a/utils/actions.js +++ b/utils/actions.js @@ -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')) } } diff --git a/utils/stat.js b/utils/ids.js similarity index 69% rename from utils/stat.js rename to utils/ids.js index 11be1bb..7dcb506 100644 --- a/utils/stat.js +++ b/utils/ids.js @@ -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) diff --git a/utils/logger.js b/utils/logger.js index 20435ff..a4d9b4e 100644 --- a/utils/logger.js +++ b/utils/logger.js @@ -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'