Seperated api module to submodules

This commit is contained in:
mrfry
2021-03-30 16:59:37 +02:00
parent 2a0926aa7e
commit c64c189ce3
11 changed files with 2072 additions and 1895 deletions
+102
View File
@@ -0,0 +1,102 @@
import fs from 'fs'
import logger from '../../../utils/logger'
import utils from '../../../utils/utils'
import { Request, SubmoduleData, User } from '../../../types/basicTypes'
const msgFile = 'stats/msgs'
const uloadFiles = 'data/f'
function setup(data: SubmoduleData): void {
const { app /* userDB, url, publicdirs, moduleSpecificData */ } = data
app.post('/postfeedbackfile', function(req: Request, res: any) {
UploadFile(req, res, uloadFiles, () => {
res.json({ success: true })
})
logger.LogReq(req)
logger.Log('New feedback file', logger.GetColor('bluebg'))
})
app.post('/postfeedback', function(req: Request, res: any) {
logger.LogReq(req)
if (req.body.fromLogin) {
logger.Log(
'New feedback message from Login page',
logger.GetColor('bluebg')
)
} else {
logger.Log(
'New feedback message from feedback page',
logger.GetColor('bluebg')
)
}
const ip = req.headers['cf-connecting-ip'] || req.connection.remoteAddress
const user: User = req.session.user
utils.AppendToFile(
utils.GetDateString() +
':\n' +
JSON.stringify(
{
...req.body,
userID: user ? user.id : 'no user',
ip: ip,
},
null,
2
),
msgFile
)
res.json({ success: true })
})
function UploadFile(req: Request, res: any, path: string, next) {
try {
req.pipe(req.busboy)
req.busboy.on('file', function(fieldname, file, filename) {
logger.Log('Uploading: ' + filename, logger.GetColor('blue'))
utils.CreatePath(path, true)
const date = new Date()
const fn =
date.getHours() +
'' +
date.getMinutes() +
'' +
date.getSeconds() +
'_' +
filename
const 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.error(err)
res.end('something bad happened :s')
})
})
} catch (err) {
logger.Log(`Unable to upload file!`, logger.GetColor('redbg'))
console.error(err)
}
}
app.route('/fosuploader').post(function(req: Request, res: any) {
UploadFile(req, res, uloadFiles, (fn) => {
res.redirect('/f/' + fn)
})
})
}
export default {
setup: setup,
}