From da9c73b5ccc3ddf202a0cdbe88aff2ec3830d09f Mon Sep 17 00:00:00 2001 From: YourFriendlyNeighborhoodDealer Date: Wed, 14 Aug 2019 10:38:25 +0200 Subject: [PATCH] stuff module --- modules/main.js | 56 --------------------- modules/stuff.js | 124 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+), 56 deletions(-) create mode 100644 modules/stuff.js diff --git a/modules/main.js b/modules/main.js index 613c657..ff0aa85 100644 --- a/modules/main.js +++ b/modules/main.js @@ -21,7 +21,6 @@ const express = require('express') const bodyParser = require('body-parser') const busboy = require('connect-busboy') -const fs = require('fs') const app = express() const logger = require('../utils/logger.js') @@ -30,8 +29,6 @@ const logger = require('../utils/logger.js') const stat = require('../utils/stat.js') stat.Load() -const listedFiles = '../public/files' - app.set('view engine', 'ejs') app.use(function (req, res, next) { res.on('finish', function () { @@ -62,59 +59,6 @@ app.get('/', function (req, res) { res.end('henlo') }) -// ----------------------------------------------------------------------------------------------- - -app.get('/stuff*', function (req, res) { - let curr = listedFiles + '/' + req.url.substring('/stuff/'.length, req.url.length).split('?')[0] - let relPath = curr.substring('./public/files'.length, curr.length) - - if (relPath[relPath.length - 1] !== '/') { relPath += '/' } - - let t = relPath.split('/') - let prevDir = '' - for (let i = 0; i < t.length - 2; i++) { prevDir += t[i] + '/' } - - // curr = curr.replace(/\//g, "/"); - // relPath = relPath.replace(/\//g, "/"); - - logger.LogReq(req) - - if (fs.lstatSync(curr).isDirectory()) { - if (curr[curr.length - 1] !== '/') { curr += '/' } - - let f = [] - - fs.readdirSync(curr).forEach((item) => { - if (item[0] !== '.') { - let res = { name: item } - let stats = fs.statSync(curr + '/' + item) - - let fileSizeInBytes = stats['size'] - res.size = Math.round(fileSizeInBytes / 1000000) - - res.path = relPath - if (res.path[res.path.length - 1] !== '/') { res.path += '/' } - res.path += item - - res.mtime = stats['mtime'].toLocaleString() - - f.push(res) - } - }) - - res.render('folders', { - folders: f, - dirname: relPath, - prevDir - }) - } else { - let fileStream = fs.createReadStream(curr) - fileStream.pipe(res) - } -}) - -// ----------------------------------------------------------------------------------------------- - app.get('*', function (req, res) { res.render('404') res.status(404) diff --git a/modules/stuff.js b/modules/stuff.js new file mode 100644 index 0000000..e2ef269 --- /dev/null +++ b/modules/stuff.js @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------------- + + Question Server + GitLab: + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + ------------------------------------------------------------------------- */ + +const express = require('express') +const bodyParser = require('body-parser') +const busboy = require('connect-busboy') +const fs = require('fs') +const app = express() + +const logger = require('../utils/logger.js') +// const utils = require('../utils/utils.js') +// const actions = require('../utils/actions.js') +const stat = require('../utils/stat.js') +stat.Load() + +const listedFiles = '../public/files' + +app.set('view engine', 'ejs') +app.use(function (req, res, next) { + res.on('finish', function () { + logger.LogReq(req, true, res.statusCode) + if (res.statusCode !== 404) { stat.LogStat(req.url) } + }) + next() +}) +app.use(express.static('public')) +app.use(busboy({ + limits: { + fileSize: 10000 * 1024 * 1024 + } +})) +app.use(bodyParser.json()) +app.use(bodyParser.urlencoded({ + limit: '5mb', + extended: true +})) +app.use(bodyParser.json({ + limit: '5mb' +})) + +// -------------------------------------------------------------- + +app.get('/*', function (req, res) { + let curr = listedFiles + '/' + req.url.substring('/stuff/'.length, req.url.length).split('?')[0] + let relPath = curr.substring('./public/files'.length, curr.length) + + if (relPath[relPath.length - 1] !== '/') { relPath += '/' } + + let t = relPath.split('/') + let prevDir = '' + for (let i = 0; i < t.length - 2; i++) { prevDir += t[i] + '/' } + + // curr = curr.replace(/\//g, "/"); + // relPath = relPath.replace(/\//g, "/"); + + logger.LogReq(req) + + if (fs.lstatSync(curr).isDirectory()) { + if (curr[curr.length - 1] !== '/') { curr += '/' } + + let f = [] + + fs.readdirSync(curr).forEach((item) => { + if (item[0] !== '.') { + let res = { name: item } + let stats = fs.statSync(curr + '/' + item) + + let fileSizeInBytes = stats['size'] + res.size = Math.round(fileSizeInBytes / 1000000) + + res.path = relPath + if (res.path[res.path.length - 1] !== '/') { res.path += '/' } + res.path += item + + res.mtime = stats['mtime'].toLocaleString() + + f.push(res) + } + }) + + res.render('folders', { + folders: f, + dirname: relPath, + prevDir + }) + } else { + let fileStream = fs.createReadStream(curr) + fileStream.pipe(res) + } +}) + +// ----------------------------------------------------------------------------------------------- + +app.get('*', function (req, res) { + res.render('404') + res.status(404) + // utils.AppendToFile(logger.GetDateString() + ": " + "404 GET", logFile); +}) + +app.post('*', function (req, res) { + res.status(404) + // utils.AppendToFile(logger.GetDateString() + ": " + "404 POST", logFile); +}) + +exports.app = app + +logger.Log('Main module started', logger.GetColor('yellow'))