mirror of
https://github.com/PretendoNetwork/BOSS.git
synced 2026-10-26 09:10:59 -05:00
Added basic CDN file serving
This commit is contained in:
56
src/server.js
Normal file
56
src/server.js
Normal file
@@ -0,0 +1,56 @@
|
||||
process.title = 'Pretendo - BOSS';
|
||||
|
||||
const express = require('express');
|
||||
const morgan = require('morgan');
|
||||
const logger = require('../logger');
|
||||
const config = require('../config.json');
|
||||
|
||||
const { http: { port } } = config;
|
||||
const app = express();
|
||||
|
||||
const nptsService = require('./services/npts');
|
||||
|
||||
// START APPLICATION
|
||||
app.set('etag', false);
|
||||
app.disable('x-powered-by');
|
||||
|
||||
// Create router
|
||||
logger.info('Setting up Middleware');
|
||||
app.use(morgan('dev'));
|
||||
app.use(express.json());
|
||||
app.use(express.urlencoded({
|
||||
extended: true
|
||||
}));
|
||||
|
||||
app.use(nptsService);
|
||||
|
||||
// 404 handler
|
||||
logger.info('Creating 404 status handler');
|
||||
app.use((request, response) => {
|
||||
response.status(404);
|
||||
response.json({
|
||||
app: 'api',
|
||||
status: 404,
|
||||
error: 'Route not found'
|
||||
});
|
||||
});
|
||||
|
||||
// non-404 error handler
|
||||
logger.info('Creating non-404 status handler');
|
||||
app.use((error, request, response) => {
|
||||
const status = error.status || 500;
|
||||
|
||||
response.status(status);
|
||||
response.json({
|
||||
app: 'api',
|
||||
status,
|
||||
error: error.message
|
||||
});
|
||||
});
|
||||
|
||||
// Starts the server
|
||||
logger.info('Starting server');
|
||||
|
||||
app.listen(port, () => {
|
||||
logger.success(`Server started on port ${port}`);
|
||||
});
|
||||
27
src/services/npts.js
Normal file
27
src/services/npts.js
Normal file
@@ -0,0 +1,27 @@
|
||||
const path = require('path');
|
||||
const fs = require('fs-extra');
|
||||
const express = require('express');
|
||||
const subdomain = require('express-subdomain');
|
||||
|
||||
// Router to handle the subdomain restriction
|
||||
const npts = express.Router();
|
||||
|
||||
// Setup routes
|
||||
npts.get('/p01/tasksheet/1/:id/:fileName', (request, response) => {
|
||||
const { id, fileName } = request.params;
|
||||
const tasksheetPath = path.normalize(`${__dirname}/../../cdn/tasksheet/${id}/${fileName}`);
|
||||
|
||||
if (fs.existsSync(tasksheetPath)) {
|
||||
response.sendFile(tasksheetPath);
|
||||
} else {
|
||||
response.sendStatus(404);
|
||||
}
|
||||
});
|
||||
|
||||
// Main router for endpoints
|
||||
const router = express.Router();
|
||||
|
||||
// Create subdomain
|
||||
router.use(subdomain('npts.app', npts));
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user