Recv/index.js

84 lines
2.0 KiB
JavaScript
Raw Normal View History

2018-03-19 06:48:05 +00:00
'use strict'
const config = require('./config');
2018-03-20 16:22:56 +00:00
const Repository = require('./lib/repository');
2018-03-19 06:48:05 +00:00
const _ = require('lodash');
const fs = require('fs');
2018-03-19 06:48:05 +00:00
const express = require('express');
const bodyParser = require('body-parser');
const tus = require('tus-node-server');
const jwt = require('jsonwebtoken');
const path = require('path');
const webpack = require('webpack');
const webpackDevMiddleware = require('webpack-dev-middleware');
const webpackHotMiddleware = require('webpack-hot-middleware');
const webpackConfig = require('./webpack.config.js');
(async function()
{
const isDevelopment = process.env.NODE_ENV !== 'production';
2018-03-20 16:22:56 +00:00
const repository = new Repository(config.database);
await repository.load()
.catch((err) =>
{
console.log(err);
});
2018-03-20 16:22:56 +00:00
2018-03-19 06:48:05 +00:00
const tusServer = new tus.Server();
tusServer.datastore = new tus.FileStore({
2018-03-20 16:22:56 +00:00
path: config.fileUpload.url,
directory: config.fileUpload.path
2018-03-19 06:48:05 +00:00
});
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
const registerAPI = (name) => { require('./lib/api/' + name)(app, repository) }
2018-03-19 06:48:05 +00:00
fs.readdir('./lib/api', (err, files) =>
2018-03-19 06:48:05 +00:00
{
if (err)
2018-03-19 06:48:05 +00:00
{
console.log(err);
2018-03-19 06:48:05 +00:00
return;
}
_.forEach(files, (fileName) =>
2018-03-19 06:48:05 +00:00
{
console.log('Loading API ' + fileName + '...');
registerAPI(fileName);
2018-03-19 06:48:05 +00:00
});
});
// Frontend
if (isDevelopment)
{
const compiler = webpack(webpackConfig);
app.use(webpackDevMiddleware(compiler, {
publicPath: webpackConfig.output.publicPath
}));
app.use(webpackHotMiddleware(compiler));
}
app.use(express.static(path.join(__dirname, 'public', 'dist')));
// Redirects to make Vue-router URLs less quirky
app.get('/c/:code', (req, res) => { res.redirect(301, '/#/c/' + req.params.code) });
app.get('/admin', (req, res) => { res.redirect(301, '/#/admin/') });
2018-03-19 06:48:05 +00:00
var server = app.listen(config.port, () => console.log('Recv running on port ' + server.address().port));
})();