added bit more advanced file existance checking, removed vhosts in favor or routes

This commit is contained in:
mrfry 2023-03-29 19:10:44 +02:00
parent ba89f4a342
commit 113a114821
24 changed files with 2720 additions and 2474 deletions

View file

@ -59,7 +59,12 @@ import {
getSubjNameWithoutYear,
SearchResultQuestion,
} from '../../../utils/qdbUtils'
import { paths } from '../../../utils/files'
import constants from '../../../constants.json'
import {
isJsonValidAndLogError,
TestUsersSchema,
} from '../../../types/typeSchemas'
interface SavedQuestionData {
fname: string
@ -78,14 +83,6 @@ interface SavedQuestionData {
// }
const line = '====================================================' // lol
const registeredScriptsFile = 'stats/registeredScripts.json'
const testUsersFile = 'data/testUsers.json'
const askedQuestionFile = 'stats/askedQuestions'
const recievedQuestionFile = 'stats/recievedQuestions'
const savedQuestionsFileName = 'savedQuestions.json'
const oldMotdFile = 'publicDirs/qminingPublic/oldMotd'
const dailyDataCountFile = 'stats/dailyDataCount'
const dataEditsLog = 'stats/dataEdits'
function getSubjCount(qdbs: QuestionDb[]): number {
return qdbs.reduce((acc, qdb) => {
@ -114,7 +111,7 @@ function ExportDailyDataCount(questionDbs: QuestionDb[], userDB: Database) {
questionDbsCount: questionDbs.length,
userCount: dbtools.TableInfo(userDB, 'users').dataCount,
}),
dailyDataCountFile
paths.dailyDataCountFile
)
}
@ -157,17 +154,6 @@ function getDetailedRes(questionDbs: QuestionDb[]) {
})
}
function getMotd(version: string, motd: string) {
if (version) {
if (version.startsWith('2.0.')) {
if (utils.FileExists(oldMotdFile)) {
return utils.ReadFile(oldMotdFile)
}
}
}
return motd
}
function searchInDbs(
question: Question,
subj: string,
@ -268,7 +254,7 @@ function writeAskData(body: QuestionFromScript) {
towrite += JSON.stringify(body)
towrite +=
'\n------------------------------------------------------------------------------\n'
utils.AppendToFile(towrite, askedQuestionFile)
utils.AppendToFile(towrite, paths.askedQuestionFile)
} catch (err) {
logger.Log('Error writing revieved /ask POST data')
console.error(err)
@ -283,7 +269,7 @@ function writeIsAddingData(body: RecievedData) {
towrite += JSON.stringify(body)
towrite +=
'\n------------------------------------------------------------------------------\n'
utils.AppendToFile(towrite, recievedQuestionFile)
utils.AppendToFile(towrite, paths.recievedQuestionFile)
} catch (err) {
logger.Log('Error writing revieved /ask POST data')
console.error(err)
@ -312,7 +298,7 @@ function saveQuestion(
const fname = `${utils.GetDateString()}_${userid}_${testUrl}.json`
const subject = getSubjNameWithoutYear(subj).replace(/\//g, '-')
const subjPath = `${savedQuestionsDir}/${subject}`
const savedSubjQuestionsFilePath = `${subjPath}/${savedQuestionsFileName}`
const savedSubjQuestionsFilePath = `${subjPath}/${constants.savedQuestionsFileName}`
utils.CreatePath(subjPath, true)
if (!utils.FileExists(savedSubjQuestionsFilePath)) {
@ -358,9 +344,7 @@ function saveQuestion(
}
function loadSupportedSites() {
const script = utils
.ReadFile(constants.moodleTestUserscriptPath)
.split('\n')
const script = utils.ReadFile(paths.moodleTestUserscriptPath).split('\n')
let i = 0
let stayIn = true
@ -393,11 +377,18 @@ function LoadMOTD(motdFile: string) {
}
function LoadTestUsers() {
let testUsers = utils.ReadJSON(testUsersFile)
if (testUsers) {
testUsers = testUsers.userIds
if (!utils.FileExists(paths.testUsersFile)) {
utils.WriteFile('{}', paths.testUsersFile)
}
const testUsers = utils.ReadJSON<{ userIds: number[] }>(paths.testUsersFile)
if (
!isJsonValidAndLogError(testUsers, TestUsersSchema, paths.testUsersFile)
) {
return []
} else {
return testUsers.userIds
}
return testUsers
}
function getNewQdb(
@ -481,14 +472,14 @@ function setup(data: SubmoduleData): Submodule {
},
},
{
fname: testUsersFile,
fname: paths.testUsersFile,
logMsg: 'Test Users file changed',
action: () => {
testUsers = LoadTestUsers()
},
},
{
fname: constants.moodleTestUserscriptPath,
fname: paths.moodleTestUserscriptPath,
logMsg: 'User script file changed',
action: () => {
version = utils.getScriptVersion()
@ -754,7 +745,7 @@ function setup(data: SubmoduleData): Submodule {
result.version = version
}
if (req.query.motd) {
result.motd = getMotd(req.query.cversion, motd)
result.motd = motd
}
res.json(result)
})
@ -762,13 +753,13 @@ function setup(data: SubmoduleData): Submodule {
app.post('/registerscript', function (req: Request, res) {
logger.LogReq(req)
if (!utils.FileExists(registeredScriptsFile)) {
utils.WriteFile('[]', registeredScriptsFile)
if (!utils.FileExists(paths.registeredScriptsFile)) {
utils.WriteFile('[]', paths.registeredScriptsFile)
}
const ua: string = req.headers['user-agent']
const registeredScripts: RegisteredUserEntry[] = utils.ReadJSON(
registeredScriptsFile
paths.registeredScriptsFile
)
const { cid, uid, version, installSource, date } = req.body
@ -810,7 +801,7 @@ function setup(data: SubmoduleData): Submodule {
utils.WriteFile(
JSON.stringify(registeredScripts, null, 2),
registeredScriptsFile
paths.registeredScriptsFile
)
res.json({ msg: 'done' })
@ -828,7 +819,7 @@ function setup(data: SubmoduleData): Submodule {
})
res.json({
savedQuestionsFileName: savedQuestionsFileName,
savedQuestionsFileName: constants.savedQuestionsFileName,
subjects: files.map((subj) => {
return {
name: subj,
@ -844,7 +835,7 @@ function setup(data: SubmoduleData): Submodule {
const subj = req.body.subj
const file = req.body.file
const savedQuestionsPath = `${savedQuestionsDir}/${subj}/${savedQuestionsFileName}`
const savedQuestionsPath = `${savedQuestionsDir}/${subj}/${constants.savedQuestionsFileName}`
const savedQuestions: SavedQuestionData[] =
utils.ReadJSON(savedQuestionsPath)
let path = `${savedQuestionsDir}/${subj}/${file}`
@ -943,11 +934,11 @@ function setup(data: SubmoduleData): Submodule {
)
utils.AppendToFile(
`${date}: User ${user.id} deleted a question from '${subjName}' (index: ${index})`,
dataEditsLog
paths.dataEditsLog
)
utils.AppendToFile(
JSON.stringify(deletedQuestion, null, 2),
dataEditsLog
paths.dataEditsLog
)
}
@ -959,7 +950,7 @@ function setup(data: SubmoduleData): Submodule {
)
utils.AppendToFile(
`${date}: User ${user.id} edited a question in '${subjName}' (index: ${index})`,
dataEditsLog
paths.dataEditsLog
)
utils.AppendToFile(
JSON.stringify(
@ -970,7 +961,7 @@ function setup(data: SubmoduleData): Submodule {
null,
2
),
dataEditsLog
paths.dataEditsLog
)
}
@ -982,7 +973,7 @@ function setup(data: SubmoduleData): Submodule {
)
utils.AppendToFile(
`${date} User #${user.id} modified '${subjName}'. Edited: ${deletedQuestions.length}, deleted: ${deletedQuestions.length}`,
dataEditsLog
paths.dataEditsLog
)
utils.AppendToFile(
JSON.stringify(
@ -993,7 +984,7 @@ function setup(data: SubmoduleData): Submodule {
null,
2
),
dataEditsLog
paths.dataEditsLog
)
}
// ------------------