diff --git a/modules.json b/modules.json index 8cb4144..6afa8c1 100644 --- a/modules.json +++ b/modules.json @@ -4,6 +4,11 @@ "name": "qmining", "urls": [ "qmining.frylabs.net", "localhost" ] }, + "api": { + "path": "./modules/api/api.js", + "name": "api", + "urls": [ "api.frylabs.net" ] + }, "main": { "path": "./modules/main/main.js", "name": "main", diff --git a/modules/qmining/qmining.js b/modules/qmining/qmining.js index e5eb312..2e3195b 100644 --- a/modules/qmining/qmining.js +++ b/modules/qmining/qmining.js @@ -18,39 +18,22 @@ ------------------------------------------------------------------------- */ -let url = '' +let url = '' // http(s)//asd.basd const express = require('express') const bodyParser = require('body-parser') const busboy = require('connect-busboy') -const fs = require('fs') const app = express() -// const http = require('http') -// const https = require('https') +// const utils = require('../../utils/utils.js') const logger = require('../../utils/logger.js') -const utils = require('../../utils/utils.js') -const actions = require('../../utils/actions.js') - -const recivedFiles = 'public/recivedfiles' -const uloadFiles = 'public/f' -const dataFile = 'public/data.json' -const msgFile = 'stats/msgs' -const motdFile = 'public/motd' -const versionFile = 'public/version' -let donateURL = '' -try { - donateURL = utils.ReadFile('./data/donateURL') -} catch (e) { - logger.Log('Couldnt read donate URL file!', logger.GetColor('red')) -} app.set('view engine', 'ejs') app.set('views', [ './modules/qmining/views', './sharedViews' ]) -app.use(express.static('public')) +app.use(express.static('modules/qmining/public')) app.use(busboy({ limits: { fileSize: 10000 * 1024 * 1024 @@ -65,241 +48,13 @@ app.use(bodyParser.json({ limit: '5mb' })) -var data = actions.LoadJSON(dataFile) -var version = '' -var motd = '' - -function LoadVersion () { - version = utils.ReadFile(versionFile) -} - -function LoadMOTD () { - motd = utils.ReadFile(motdFile) -} - -function Load () { - utils.WatchFile(motdFile, (newData) => { - logger.Log(`Motd changed: ${newData.replace(/\/n/g, '')}`) - LoadMOTD() - }) - utils.WatchFile(versionFile, (newData) => { - logger.Log(`Version changed: ${newData.replace(/\/n/g, '')}`) - LoadVersion() - }) - - LoadVersion() - LoadMOTD() -} - -Load() - // -------------------------------------------------------------- app.get('/', function (req, res) { res.end('hai') -}) - -app.get('/manual', function (req, res) { - res.render('man') - res.end() logger.LogReq(req) }) -app.post('/postfeedback', function (req, res) { - logger.Log('New feedback message', logger.GetColor('bluebg'), true) - utils.AppendToFile('\n\n' + logger.GetDateString() + ': ' + req.body.message_field, msgFile) - res.redirect('back') - res.end() -}) - -app.get('/lred', function (req, res) { - res.redirect('/legacy') // TODO: redirect to react legacy - res.end() - logger.LogReq(req) -}) - -app.get('/menuClick', function (req, res) { - res.redirect('/') // TODO: redirect to react / - res.end() - logger.LogReq(req) -}) - -app.get('/install', function (req, res) { - res.redirect(url + '/moodle-test-userscript/stable.user.js?install') - res.end() - logger.LogReq(req) -}) - -app.get('/donate', function (req, res) { - res.redirect(donateURL) - res.end() - logger.LogReq(req) -}) - -app.get('/thanks', function (req, res) { - res.render('thanks', { // TODO: redirect to react thanks - siteurl: url - }) - res.end() - logger.LogReq(req) -}) - -app.get('/classesgit', function (req, res) { - res.redirect('https://gitlab.com/MrFry/question-classes') - res.end() - logger.LogReq(req) -}) - -app.get('/scriptgit', function (req, res) { - res.redirect('https://gitlab.com/MrFry/moodle-test-userscript') - res.end() - logger.LogReq(req) -}) - -app.get('/servergit', function (req, res) { - res.redirect('https://gitlab.com/MrFry/mrfrys-node-server') - res.end() - logger.LogReq(req) -}) - -function UploadFile (req, res, path, next) { - var fstream - req.pipe(req.busboy) - req.busboy.on('file', function (fieldname, file, filename) { - logger.Log('Uploading: ' + filename, logger.GetColor('blue')) - - utils.CreatePath(path, true) - let d = new Date() - let fn = d.getHours() + '' + d.getMinutes() + '' + d.getSeconds() + '_' + filename - - fstream = fs.createWriteStream(path + '/' + fn) - file.pipe(fstream) - fstream.on('close', function () { - logger.Log('Upload Finished of ' + path + '/' + fn, logger.GetColor('blue')) - next(fn) - }) - fstream.on('error', function (err) { - console.log(err) - res.end('something bad happened :s') - }) - }) -} - -app.route('/fosuploader').post(function (req, res, next) { - UploadFile(req, res, uloadFiles, (fn) => { - res.redirect('/f/' + fn) - }) -}) - -app.route('/badtestsender').post(function (req, res, next) { - UploadFile(req, res, recivedFiles, (fn) => { - res.render('uploaded') - }) - logger.LogReq(req) -}) - -// ------------------------------------------------------------------------------------------- -// API - -app.post('/isAdding', function (req, res) { - logger.LogReq(req) - - // automatically saves to dataFile every n write - let result = actions.ProcessIncomingRequest( - req.body.datatoadd, - data, - { motd, version } - ) - - res.json({ - success: result !== -1, - newQuestions: result - }) -}) - -app.get('/ask', function (req, res) { - logger.LogReq(req) - if (Object.keys(req.query).length === 0) { - res.json({ - message: `ask something! ?q=[question]&subj=[subject]&data=[question data]. 'subj' is optimal for faster result`, - result: [], - recievedData: JSON.stringify(req.query), - success: false - }) - } else { - if (req.query.q && req.query.data) { - let subj = req.query.subj || '' - let question = decodeURIComponent(req.query.q) - let recData = {} - try { - recData = JSON.parse(req.query.data) - } catch (e) { - logger.Log(`Unable to parse recieved question data! '${req.query.data}'`, logger.GetColor('redbg')) - } - let r = data.Search(question, subj, recData) - - res.json({ - result: r, - success: true - }) - } else { - res.json({ - message: `Invalid question :(`, - result: [], - recievedData: JSON.stringify(req.query), - success: false - }) - } - } -}) - -function getSimplreRes () { - return { - subjects: data.length, - questions: data.Subjects.reduce((acc, subj) => { - return acc + subj.length - }, 0) - } -} -function getDetailedRes () { - return data.Subjects.map((subj) => { - return { - name: subj.Name, - count: subj.length - } - }) -} - -app.get('/datacount', function (req, res) { - logger.LogReq(req) - if (req.query.detailed === 'all') { - res.json({ - detailed: getDetailedRes(), - simple: getSimplreRes() - }) - } else if (req.query.detailed) { - res.json(getDetailedRes()) - } else { - res.json(getSimplreRes()) - } -}) - -app.get('/infos', function (req, res) { - let result = {} - if (req.query.subjinfo) { - result.subjinfo = getSimplreRes() - } - if (req.query.version) { - result.version = version - } - if (req.query.motd) { - result.motd = motd - } - res.json(result) -}) - -// ------------------------------------------------------------------------------------------- - app.get('*', function (req, res) { res.status(404).render('404') }) @@ -313,4 +68,4 @@ exports.setup = (x) => { url = x.url } -logger.Log('Qmining module started', logger.GetColor('yellow')) +logger.Log('CV module started', logger.GetColor('yellow')) diff --git a/modules/qmining/views/man.ejs b/modules/qmining/views/man.ejs deleted file mode 100755 index db1a489..0000000 --- a/modules/qmining/views/man.ejs +++ /dev/null @@ -1,172 +0,0 @@ -
- Először is tölts le egy userscript futtató kiegészítőt a böngésződhöz. Én Tampermonkeyt használok, és ezzel van tesztelve a
- userscript is, ezért ez ajánlott. Más is működhet (violentmonkey, etc), de az nem garantált.
- Majd a weboldalról egy kattintással elvileg
- le tudod tölteni a scriptet, és elvileg kész is. Script majd udvariasan megkéri, hogy
- hagy beszélgessen a szerverrel, mert mással nem tud.
-
- Teszt közben még több dolog történhet:
-
-
|
-
- ![]() |
-