From 2535ee92b0f52469c4b4cfde4037234c6d23bf8e Mon Sep 17 00:00:00 2001 From: MrFry Date: Fri, 10 Apr 2020 15:42:11 +0200 Subject: [PATCH 1/5] Readme update, and dbSetup uncommenting code --- README.md | 5 ++++- devel/readme.md | 34 +++++++++++++++++++++++++++++----- public/moodle-test-userscript | 2 +- utils/dbSetup.js | 8 ++++---- 4 files changed, 38 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 9034e35..8437d8a 100755 --- a/README.md +++ b/README.md @@ -60,9 +60,12 @@ motd.js | `data.json` és ./public/motd -be írja a paraméterként kapott szöv ids.js | egyedi felhasználó azonosítókat írja statisztika fájlba dataUpdater.js | régifajta adatbázist, amiben még van `.Q` propertyjű kérdés alakít át changedataversion.js | `data.json`-ban és a ./public/version ban írja át a teszt megoldó kliens aktuális verzióját -merger.js | Paraméterként kapott adatbázisból törli az egyező bejegyzéseket, és egyesíti egy fájlba merge.sh | Biztonsági mentést készít, és egyszerűsíti az adatbázist, majd felülírja az újjal classes.js | Összehasonlításhoz és tároláshoz szükséges osztályok +dbSetup.js | Üres / előre userrel feltöltött adatbázist hoz létre +dbtools.js | Javascript wrapper gyakran használt SQL utasításokhoz +rmDuplicates.js | Paraméterként átadott JSON kérdés adatbázisból távolítja el az ugyanolyan kérdéseket +runSqliteCmds.sh | Paraméterként átadott adatbázison futtatja a második paraméterben található Sqlite parancsokat # Egyéb Jelenleg sok optimalizálatlan rész található benne, cél ezek kijavítása, szépítése diff --git a/devel/readme.md b/devel/readme.md index 6069497..f9e1b12 100644 --- a/devel/readme.md +++ b/devel/readme.md @@ -16,9 +16,33 @@ A `make.sh` script futtatása minden eddigi szerver által használt/generált a Szükséges könyvtár struktúrát és egyéb fájlokat automatikusan létrehozza a `make.sh` script -`npm start ${debugLevel]` ahol a `debugLevel` egy szám, hogy milyen részletesen történjen a logolás. +Majd: -Jelenleg a max ilyen 3-4 körül van. Minél nagyobb a szám annál bővebb a log +`npm run dev` +vagy +`npm start` + +## Környezeti változók +* `NS_SQL_DEBUG_LOG` + + Ha `true`, akkor minden SQL utasítás ki lesz írva a konzolra + +* `NS_LOGLEVEL` + + Egy szám lehet, ami minél nagyobb annál részletesebben történik a logolás konzolra. Jelenleg ez + ilyen 1-4 közötti skálán mozog. + +## Adatbázis előkészítése + +A szerver egy felhasználókat, session-öket és ehhez tartozó segéd táblákat tartalmazó adatbázist +használ. Az adatbázis struktúrát a `modules/api/apiDBStruct.json` tartalmazza, és az adatbázis +módosításához szükséges függvények az `utils/dbtools.js` fájlban vannak megvalósítva. Így nem kell +SQL lekérdezéseket írni, csak ezeket meghívni. + +A `make.sh` script automatikusan létrehoz egy üres adatbázist a `utils/dbSetup.js` segítségével. +Később ezt manuálisan futtatva alaphelyzetbe lehet állítani az adatbázist. Ha létezik egy +`utils/ids` fájl, ami sorokban felhasználó kliens ID-kat tartalmaz, akkor a `utils/dbSetup.js` +automatikusan létrehoz ezek alapján felhasználókat. ## Hogy az API és a többi modul tudjon kommunikálni: @@ -34,11 +58,11 @@ lokálisan az API és a usercript!__ Figyelj rá, hogy az IP cím és az url közötti spacing az pontosan 1 tab! - Firefox nem mindig használha a hosts filet! Ennélkül a qmining modul nem bír kommunikálni az api-val, ahonnan szedi a kérdéseket, motd-t, felhasználó kérdéseket és ilyesmiket. + Firefox nem mindig használja a hosts filet! Ennélkül a qmining modul nem bír kommunikálni az api-val, ahonnan szedi a kérdéseket, motd-t, felhasználó kérdéseket és ilyesmiket. 2. Ezután a server.js-ben a portot írd át 80-ra és superuserként kell indítani a szervert -3. Ezután a böngészóben a qmining.frylabs.net-en a gépen futó szerver lesz elérhető +3. Ezután a böngészőben a qmining.frylabs.net-en a gépen futó szerver lesz elérhető A frylabs.net-es url-ek helyett lehet mást is használni, de néhány helyen előfordulhat hogy be van még égetve, ezért ezek ajánlottak @@ -57,7 +81,7 @@ A feedback oldalra írt üzenetek ebbe mentődnek ### stats -JSON file, kulcsok az url-ek, az értékek pedig hogy hányszor kérődtek le +JSON file, kulcsok az url-ek, az értékek pedig hogy hányszor lettek lekérve ### vstats diff --git a/public/moodle-test-userscript b/public/moodle-test-userscript index a25e641..93c5d88 160000 --- a/public/moodle-test-userscript +++ b/public/moodle-test-userscript @@ -1 +1 @@ -Subproject commit a25e64189e050bcde8408bef0628d792e10b8b67 +Subproject commit 93c5d887f5d92dd6fa13814db102d76cde49e901 diff --git a/utils/dbSetup.js b/utils/dbSetup.js index fcadf35..a00b4c7 100644 --- a/utils/dbSetup.js +++ b/utils/dbSetup.js @@ -18,10 +18,10 @@ function CreateDB () { authDB = dbtools.GetDB(usersDBPath) authDB.pragma('synchronous = OFF') - // Object.keys(dbStruct).forEach((tableName) => { - // const tableData = dbStruct[tableName] - // dbtools.CreateTable(authDB, tableName, tableData.tableStruct, tableData.foreignKey) - // }) + Object.keys(dbStruct).forEach((tableName) => { + const tableData = dbStruct[tableName] + dbtools.CreateTable(authDB, tableName, tableData.tableStruct, tableData.foreignKey) + }) try { if (utils.FileExists('./ids')) { From e3fecd61d05c41135ae9c7c67874c0d816b6c6c0 Mon Sep 17 00:00:00 2001 From: MrFry Date: Sun, 12 Apr 2020 20:37:21 +0200 Subject: [PATCH 2/5] Added devel ports --- modules/api/api.js | 1 + server.js | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/api/api.js b/modules/api/api.js index 9042294..3e6e484 100644 --- a/modules/api/api.js +++ b/modules/api/api.js @@ -140,6 +140,7 @@ function GetApp () { const pw = uuidv4() const insertRes = dbtools.Insert(userDB, 'users', { pw: pw, + avaiblePWRequests: 2, created: utils.GetDateString() }) diff --git a/server.js b/server.js index fc52721..344a583 100755 --- a/server.js +++ b/server.js @@ -21,8 +21,13 @@ console.clear() const startHTTPS = true const isRoot = process.getuid && process.getuid() === 0 -const port = isRoot ? 80 : 8080 -const httpsport = 5001 + +let port = isRoot ? 80 : 8080 +let httpsport = isRoot ? 443 : 5001 +if (process.env.NS_DEVEL) { + port = 24243 + httpsport = 24244 +} const express = require('express') const vhost = require('vhost') From 3aa36520d4b0d0188ce8a6c95c1543e0c69c6efa Mon Sep 17 00:00:00 2001 From: MrFry Date: Mon, 13 Apr 2020 08:59:51 +0200 Subject: [PATCH 3/5] Handling undefined hostname --- middlewares/reqlogger.middleware.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/middlewares/reqlogger.middleware.js b/middlewares/reqlogger.middleware.js index e016140..8109608 100644 --- a/middlewares/reqlogger.middleware.js +++ b/middlewares/reqlogger.middleware.js @@ -11,7 +11,12 @@ module.exports = function (options) { } const ip = req.headers['cf-connecting-ip'] || req.connection.remoteAddress - const hostname = req.hostname.replace('www.', '').split('.')[0] + let hostname = 'UNDEF' + if (req.hostname) { + hostname = req.hostname.replace('www.', '').split('.')[0] + } else { + logger.Log('Hostname is undefined!', logger.GetColor('redbg')) + } // fixme: regexp includes checking const hasLoggableKeyword = loggableKeywords && loggableKeywords.some((x) => { From f3e6f21ad52203957780fbcc5d728b7ae5785765 Mon Sep 17 00:00:00 2001 From: MrFry Date: Mon, 13 Apr 2020 09:20:36 +0200 Subject: [PATCH 4/5] Daily actions fix, typo fix, incremented maxPWCount --- modules/api/api.js | 9 +++++---- server.js | 21 +++++++++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/modules/api/api.js b/modules/api/api.js index 3e6e484..c4692b3 100644 --- a/modules/api/api.js +++ b/modules/api/api.js @@ -47,7 +47,7 @@ const usersDbBackupPath = 'data/dbs/backup' const maxVeteranPwGetCount = 10 const addPWPerDay = 1 // every x day a user can give a pw -const maxPWCount = 4 // maximum pw give opportunities a user can have at once +const maxPWCount = 6 // maximum pw give opportunities a user can have at once const daysAfterUserGetsPWs = 2 // days after user gets pw-s let userDB @@ -144,7 +144,7 @@ function GetApp () { created: utils.GetDateString() }) - logger.Log(`User #${requestingUser.id} creted new user #${insertRes.lastInsertRowid}`, logger.GetColor('cyan')) + logger.Log(`User #${requestingUser.id} created new user #${insertRes.lastInsertRowid}`, logger.GetColor('cyan')) res.json({ result: 'success', @@ -590,6 +590,7 @@ function GetApp () { function IncrementAvaiblePWs () { // FIXME: check this if this is legit and works + logger.Log('Incrementing avaible PW-s ...') const users = dbtools.SelectAll(userDB, 'users') const today = new Date() const getDayDiff = (dateString) => { @@ -619,14 +620,14 @@ function GetApp () { }) } - function DailyActions () { + function DailyAction () { ExportDailyDataCount() BackupDB() IncrementAvaiblePWs() } return { - DailyActions: DailyActions, + dailyAction: DailyAction, app: app } } diff --git a/server.js b/server.js index 344a583..7a77706 100755 --- a/server.js +++ b/server.js @@ -17,7 +17,7 @@ along with this program. If not, see . ------------------------------------------------------------------------- */ -console.clear() +process.stdout.write('\u001b[2J\u001b[0;0H') // console.clear() const startHTTPS = true const isRoot = process.getuid && process.getuid() === 0 @@ -125,7 +125,7 @@ Object.keys(modules).forEach(function (k, i) { const modApp = mod.getApp() x.app = modApp.app - x.dailyAction = modApp.DailyAction + x.dailyAction = modApp.dailyAction x.cleanup = modApp.cleanup x.urls.forEach((url) => { @@ -169,10 +169,20 @@ function setLogTimer () { const night = new Date( now.getFullYear(), now.getMonth(), - now.getDate() + 1, // the next day, ... - 0, 0, 0 // ...at 00:00:00 hours + now.getDate() + 1, + 0, + 0, + 0 ) + logger.DebugLog(`Next daily action: ${night}`, 'daily', 1) const msToMidnight = night.getTime() - now.getTime() + logger.DebugLog(`msToMidnight: ${msToMidnight}`, 'daily', 1) + logger.DebugLog(`Seconds To Midnight: ${msToMidnight / 1000}`, 'daily', 1) + + if (msToMidnight < 0) { + logger.Log(`Error setting up Log Timer, msToMidnight is negative! (${msToMidnight})`, logger.GetColor('redbg')) + return + } setTimeout(function () { LogTimerAction() @@ -181,10 +191,13 @@ function setLogTimer () { } function LogTimerAction () { + logger.DebugLog(`Running Log Timer Action`, 'daily', 1) Object.keys(modules).forEach((k, i) => { const x = modules[k] + logger.DebugLog(`Ckecking ${k}`, 'daily', 1) if (x.dailyAction) { try { + logger.Log(`Running daily action of ${k}`) x.dailyAction() } catch (e) { logger.Log(`Error in ${k} daily action! Details in STDERR`, logger.GetColor('redbg')) From d047f357af24baeecd3ba27f0e13d647ba5b85f7 Mon Sep 17 00:00:00 2001 From: MrFry Date: Mon, 13 Apr 2020 09:20:54 +0200 Subject: [PATCH 5/5] Removed devel ports --- server.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/server.js b/server.js index 7a77706..b05348e 100755 --- a/server.js +++ b/server.js @@ -22,12 +22,8 @@ process.stdout.write('\u001b[2J\u001b[0;0H') // console.clear() const startHTTPS = true const isRoot = process.getuid && process.getuid() === 0 -let port = isRoot ? 80 : 8080 -let httpsport = isRoot ? 443 : 5001 -if (process.env.NS_DEVEL) { - port = 24243 - httpsport = 24244 -} +const port = isRoot ? 80 : 8080 +const httpsport = isRoot ? 443 : 5001 const express = require('express') const vhost = require('vhost')