mirror of
https://gitlab.com/MrFry/mrfrys-node-server
synced 2025-04-01 20:24:18 +02:00
Lotsa typescript bullshit
This commit is contained in:
parent
b7ac485689
commit
b927988017
65 changed files with 801 additions and 8447 deletions
|
@ -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
|
||||
},
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue