This commit is contained in:
Pitu 2019-02-19 00:06:38 +09:00
parent 63f327e49d
commit e33cf30449
3 changed files with 23 additions and 159 deletions

View File

@ -0,0 +1,22 @@
const Route = require('../structures/Route');
const config = require('../../../config');
class configGET extends Route {
constructor() {
super('/config', 'get', { bypassAuth: true });
}
run(req, res) {
return res.json({
version: process.env.npm_package_version,
URL: config.filesServeLocatio,
baseURL: config.backendLocation,
serviceName: config.serviceName,
maxFileSize: config.uploads.uploadMaxSize,
chunkSize: config.uploads.chunkSize,
maxLinksPerAlbum: config.albums.maxLinksPerAlbum
});
}
}
module.exports = configGET;

View File

@ -79,4 +79,4 @@ class Server {
}
}
module.exports = Server;
new Server().start();

View File

@ -1,158 +0,0 @@
const Backend = require('./api/structures/Server');
const express = require('express');
const compression = require('compression');
// const ream = require('ream');
const config = require('../config');
const path = require('path');
const log = require('./api/utils/Log');
const dev = process.env.NODE_ENV !== 'production';
const oneliner = require('one-liner');
const jetpack = require('fs-jetpack');
// const { Nuxt, Builder } = require('nuxt-edge');
// const nuxtConfig = require('./nuxt/nuxt.config.js');
function startProduction() {
startAPI();
// startSite();
// startNuxt();
}
function startAPI() {
writeFrontendConfig();
new Backend().start();
}
async function startNuxt() {
/*
Make sure the frontend has enough data to prepare the service
*/
writeFrontendConfig();
/*
Starting Nuxt's custom server powered by express
*/
const app = express();
/*
Instantiate Nuxt.js
*/
nuxtConfig.dev = true;
const nuxt = new Nuxt(nuxtConfig);
/*
Start the server or build it if we're on dev mode
*/
if (nuxtConfig.dev) {
try {
await new Builder(nuxt).build();
} catch (error) {
log.error(error);
process.exit(1);
}
}
/*
Render every route with Nuxt.js
*/
app.use(nuxt.render);
/*
Start the server and listen to the configured port
*/
app.listen(config.server.ports.frontend, '127.0.0.1');
log.info(`> Frontend ready and listening on port ${config.server.ports.frontend}`);
/*
Starting Nuxt's custom server powered by express
*/
/*
const app = express();
app.set('port', config.server.ports.frontend);
// Configure dev enviroment
nuxtConfig.dev = dev;
// Init Nuxt.js
const nuxt = new Nuxt(nuxtConfig);
// Build only in dev mode
if (nuxtConfig.dev) {
const builder = new Builder(nuxt);
await builder.build();
}
// Give nuxt middleware to express
app.use(nuxt.render);
if (config.serveFilesWithNode) {
app.use('/', express.static(`./${config.uploads.uploadFolder}`));
}
// Listen the server
app.listen(config.server.ports.frontend, '127.0.0.1');
app.on('renderer-ready', () => log.info(`> Frontend ready and listening on port ${config.server.ports.frontend}`));
// log.success(`> Frontend ready and listening on port ${config.server.ports.frontend}`);
// console.log(`Server listening on http://${host}:${port}`); // eslint-disable-line no-console
*/
}
function startSite() {
/*
Make sure the frontend has enough data to prepare the service
*/
writeFrontendConfig();
/*
Starting ream's custom server
*/
const server = express();
const app = ream({
dev,
entry: path.join(__dirname, 'site', 'index.js')
});
app.getRequestHandler().then(handler => {
server.use(compression());
/*
This option is mostly for development, since serving the files with nginx is better.
*/
if (config.serveFilesWithNode) {
server.use('/', express.static(`./${config.uploads.uploadFolder}`));
}
server.get('*', handler);
server.listen(config.server.ports.frontend, error => {
if (error) log.error(error);
});
});
app.on('renderer-ready', () => log.info(`> Frontend ready and listening on port ${config.server.ports.frontend}`));
}
function writeFrontendConfig() {
/*
Since ream can't execute getInitialData on non-routes we write a config file for it.
*/
const template = oneliner`
module.exports = {
version: '${process.env.npm_package_version}',
URL: '${config.filesServeLocation}',
baseURL: '${config.backendLocation}',
serviceName: '${config.serviceName}',
maxFileSize: '${config.uploads.uploadMaxSize}',
chunkSize: '${config.uploads.chunkSize}',
maxLinksPerAlbum: '${config.albums.maxLinksPerAlbum}'
}`;
jetpack.write(path.join(__dirname, 'site', 'config.js'), template);
log.success('Frontend config file generated successfully');
}
/*
Having multiple files for different scripts was mendokusai.
*/
const args = process.argv[2];
if (!args) startProduction();
else if (args === 'api') startAPI();
else if (args === 'site') startNuxt();
else process.exit(0);