Lotsa typescript bullshit

This commit is contained in:
mrfry 2020-11-24 10:47:04 +01:00
parent b7ac485689
commit b927988017
65 changed files with 801 additions and 8447 deletions

View file

@ -22,17 +22,20 @@
import express from 'express'
import bodyParser from 'body-parser'
import busboy from 'connect-busboy'
import { uuidv4 } from 'uuid'
import { v4 as uuidv4 } from 'uuid'
import fs from 'fs'
// other requires
import logger from '../../utils/logger.js'
import utils from '../../utils/utils.js'
import logger from '../../utils/logger'
import utils from '../../utils/utils'
import actions from '../../utils/actions'
import dbtools from '../../utils/dbtools.js'
import auth from '../../middlewares/auth.middleware.js'
import { dataToString, searchData } from '../../utils/classes.js'
import dbtools from '../../utils/dbtools'
import auth from '../../middlewares/auth.middleware'
import { dataToString, searchData } from '../../utils/classes'
import { SetupData } from '../../server'
import { ModuleType, User } from '../../types/basicTypes'
// files
const msgFile = 'stats/msgs'
@ -64,7 +67,7 @@ export interface DataFile {
name: string
}
function GetApp() {
function GetApp(): ModuleType {
const app = express()
const publicDir = publicdirs[0]
@ -79,6 +82,7 @@ function GetApp() {
{ path: `${publicDir}oldData.json`, name: 'oldData' },
{ path: `${publicDir}data.json`, name: 'newData' },
]
const data: any = {} // TODO: remove
const motdFile = publicDir + 'motd'
const userSpecificMotdFile = publicDir + 'userSpecificMotd.json'
const versionFile = publicDir + 'version'
@ -124,10 +128,11 @@ function GetApp() {
)
const questionDbs = actions.LoadJSON(dataFiles)
const version = ''
const motd = ''
const userSpecificMotd = {}
const testUsers = []
let version = ''
let motd = ''
let userSpecificMotd = {}
// FIXME: check type from file
let testUsers: any = []
function mergeObjSum(a, b) {
const res = { ...b }
@ -226,7 +231,7 @@ function GetApp() {
// -------------------------------------------------------------
app.get('/updateTodo', (req, res) => {
app.get('/updateTodo', (req: any, res: any) => {
const userId = req.session.user.id
const id = req.query.id
const todos = utils.ReadJSON(todosFile)
@ -265,7 +270,7 @@ function GetApp() {
})
})
app.get('/todos', (req, res) => {
app.get('/todos', (req: any, res: any) => {
logger.LogReq(req)
const userId = req.session.user.id
const todos = utils.ReadJSON(todosFile)
@ -277,18 +282,18 @@ function GetApp() {
})
})
app.get('/ranklist', (req, res) => {
app.get('/ranklist', (req: any, res: any) => {
logger.LogReq(req)
let result
let since = req.query.since
const user = req.session.user
const user: User = req.session.user
if (!since) {
result = utils.ReadJSON(idStatFile)
} else {
try {
since = new Date(since)
if (!(since instanceof Date) || isNaN(since)) {
if (!(since instanceof Date) || isNaN(since.getTime())) {
throw new Error('Not a date')
}
const data = utils.ReadJSON(idvStatFile)
@ -354,10 +359,10 @@ function GetApp() {
})
})
app.get('/quickvote', (req, res) => {
app.get('/quickvote', (req: any, res: any) => {
const key = req.query.key
const val = req.query.val
const user = req.session.user
const user: User = req.session.user
if (!key || !val) {
res.render('votethank', {
@ -367,7 +372,8 @@ function GetApp() {
return
}
let votes = {}
// FIXME: check vote type in file
let votes: any = {}
if (utils.FileExists(quickVotes)) {
votes = utils.ReadJSON(quickVotes)
} else {
@ -429,10 +435,10 @@ function GetApp() {
utils.WriteFile(JSON.stringify(voteData), voteFile)
})
app.get('/avaiblePWS', (req, res) => {
app.get('/avaiblePWS', (req: any, res: any) => {
logger.LogReq(req)
const user = req.session.user
const user: User = req.session.user
res.json({
result: 'success',
@ -447,7 +453,7 @@ function GetApp() {
})
})
app.post('/getpw', function(req, res) {
app.post('/getpw', function(req: any, res: any) {
logger.LogReq(req)
const requestingUser = req.session.user
@ -497,7 +503,7 @@ function GetApp() {
})
})
app.post('/getveteranpw', function(req, res) {
app.post('/getveteranpw', function(req: any, res: any) {
logger.LogReq(req)
const ip = req.headers['cf-connecting-ip'] || req.connection.remoteAddress
const tries = dbtools.Select(userDB, 'veteranPWRequests', {
@ -546,7 +552,7 @@ function GetApp() {
return
}
const user = dbtools.Select(userDB, 'users', {
const user: User = dbtools.Select(userDB, 'users', {
oldCID: oldUserID,
})[0]
@ -593,7 +599,7 @@ function GetApp() {
}
})
app.post('/login', (req, res) => {
app.post('/login', (req: any, res: any) => {
logger.LogReq(req)
const pw = req.body.pw
? req.body.pw
@ -604,7 +610,7 @@ function GetApp() {
const cid = req.body.cid
const isScript = req.body.script
const ip = req.headers['cf-connecting-ip'] || req.connection.remoteAddress
const user = dbtools.Select(userDB, 'users', {
const user: User = dbtools.Select(userDB, 'users', {
pw: pw,
})[0]
@ -695,7 +701,7 @@ function GetApp() {
}
})
app.post('/logout', (req, res) => {
app.post('/logout', (req: any, res: any) => {
logger.LogReq(req)
const sessionID = req.cookies.sessionID
@ -711,38 +717,36 @@ function GetApp() {
// --------------------------------------------------------------
app.get('/', function(req, res) {
app.get('/', function(req: any, res: any) {
logger.LogReq(req)
res.redirect('https://www.youtube.com/watch?v=ieqGJgqiXFk')
})
app.post('/postfeedbackfile', function(req, res) {
app.post('/postfeedbackfile', function(req: any, res: any) {
UploadFile(req, res, uloadFiles, () => {
res.json({ success: true })
})
logger.LogReq(req)
logger.Log('New feedback file', logger.GetColor('bluebg'), true)
logger.Log('New feedback file', logger.GetColor('bluebg'))
})
app.post('/postfeedback', function(req, res) {
app.post('/postfeedback', function(req: any, res: any) {
logger.LogReq(req)
if (req.body.fromLogin) {
logger.Log(
'New feedback message from Login page',
logger.GetColor('bluebg'),
true
logger.GetColor('bluebg')
)
} else {
logger.Log(
'New feedback message from feedback page',
logger.GetColor('bluebg'),
true
logger.GetColor('bluebg')
)
}
const ip = req.headers['cf-connecting-ip'] || req.connection.remoteAddress
const user = req.session.user
const user: User = req.session.user
utils.AppendToFile(
utils.GetDateString() +
@ -757,9 +761,8 @@ function GetApp() {
res.json({ success: true })
})
function UploadFile(req, res, path, next) {
function UploadFile(req: any, res: any, path, next) {
try {
const fstream
req.pipe(req.busboy)
req.busboy.on('file', function(fieldname, file, filename) {
logger.Log('Uploading: ' + filename, logger.GetColor('blue'))
@ -775,7 +778,7 @@ function GetApp() {
'_' +
filename
fstream = fs.createWriteStream(path + '/' + fn)
const fstream = fs.createWriteStream(path + '/' + fn)
file.pipe(fstream)
fstream.on('close', function() {
logger.Log(
@ -795,20 +798,20 @@ function GetApp() {
}
}
app.route('/fosuploader').post(function(req, res) {
app.route('/fosuploader').post(function(req: any, res: any) {
UploadFile(req, res, uloadFiles, (fn) => {
res.redirect('/f/' + fn)
})
})
app.route('/badtestsender').post(function(req, res) {
app.route('/badtestsender').post(function(req: any, res: any) {
UploadFile(req, res, recivedFiles, () => {
res.redirect('back')
})
logger.LogReq(req)
})
app.get('/allqr.txt', function(req, res) {
app.get('/allqr.txt', function(req: any, res: any) {
res.set('Content-Type', 'text/plain')
const stringifiedData = questionDbs.map((qdb) => {
return dataToString(qdb.data)
@ -822,7 +825,7 @@ function GetApp() {
// -------------------------------------------------------------------------------------------
// API
app.post('/uploaddata', (req, res) => {
app.post('/uploaddata', (req: any, res: any) => {
// body: JSON.stringify({
// newData: data,
// count: getCount(data),
@ -848,11 +851,12 @@ function GetApp() {
try {
// finding user
const pwds = JSON.parse(utils.ReadFile(passwordFile))
let user = Object.keys(pwds).find((key) => {
const user = pwds[key]
return user.password === password
const userKey = Object.keys(pwds).find((key) => {
const userKey = pwds[key]
return userKey.password === password
})
user = pwds[user]
// FIXME: check user type in dataeditorPW-s json
const user: any = pwds[userKey]
// logging and stuff
logger.Log(`Data upload`, logger.GetColor('bluebg'))
@ -928,10 +932,10 @@ function GetApp() {
}
})
app.post('/isAdding', function(req, res) {
app.post('/isAdding', function(req: any, res: any) {
logger.LogReq(req)
const user = req.session.user
const user: User = req.session.user
const dryRun = testUsers.includes(user.id)
@ -944,10 +948,10 @@ function GetApp() {
dryRun,
user
)
.then((result) => {
.then((resultArray) => {
res.json({
success: result !== -1,
newQuestions: result,
success: resultArray.length > 0, // TODO check for -1s
newQuestions: resultArray,
})
})
.catch((err) => {
@ -959,7 +963,7 @@ function GetApp() {
})
})
app.get('/ask', function(req, res) {
app.get('/ask', function(req: any, res) {
if (Object.keys(req.query).length === 0) {
logger.DebugLog(`No query params`, 'ask', 1)
res.json({
@ -972,7 +976,7 @@ function GetApp() {
if (req.query.q && req.query.data) {
const subj = req.query.subj || ''
const question = req.query.q
let recData = {}
let recData: any = {}
try {
recData = JSON.parse(req.query.data)
} catch (error) {
@ -1035,7 +1039,7 @@ function GetApp() {
})
}
app.get('/datacount', function(req, res) {
app.get('/datacount', function(req: any, res: any) {
logger.LogReq(req)
if (req.query.detailed === 'all') {
res.json({
@ -1049,10 +1053,10 @@ function GetApp() {
}
})
app.get('/infos', function(req, res) {
const user = req.session.user
app.get('/infos', function(req: any, res) {
const user: User = req.session.user
const result = {
const result: any = {
result: 'success',
uid: user.id,
}
@ -1074,11 +1078,11 @@ function GetApp() {
// -------------------------------------------------------------------------------------------
app.get('*', function(req, res) {
app.get('*', function(req: any, res: any) {
res.status(404).render('404')
})
app.post('*', function(req, res) {
app.post('*', function(req: any, res: any) {
res.status(404).render('404')
})
@ -1116,14 +1120,14 @@ function GetApp() {
}
function getDayDiff(dateString) {
const msdiff = new Date() - new Date(dateString)
const msdiff = new Date().getTime() - new Date(dateString).getTime()
return Math.floor(msdiff / (1000 * 3600 * 24))
}
function IncrementAvaiblePWs() {
// FIXME: check this if this is legit and works
logger.Log('Incrementing avaible PW-s ...')
const users = dbtools.SelectAll(userDB, 'users')
const users: Array<User> = dbtools.SelectAll(userDB, 'users')
users.forEach((user) => {
if (user.avaiblePWRequests >= maxPWCount) {
@ -1173,10 +1177,12 @@ function GetApp() {
}
}
exports.name = 'API'
exports.getApp = GetApp
exports.setup = (data) => {
userDB = data.userDB
url = data.url // eslint-disable-line
publicdirs = data.publicdirs
export default {
name: 'API',
getApp: GetApp,
setup: (data: SetupData): void => {
userDB = data.userDB
url = data.url // eslint-disable-line
publicdirs = data.publicdirs
},
}