Old ngn4 website
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.2 KiB

var fs = require('fs');
var path = require('path');
var express = require('express');
var morgan = require('morgan')
var ngn4 = require('ngn4');
var config = {port: 8080}
var util = require('./util.js');
var scriptMethods = {};
var app = express();
var accessLogStream = fs.createWriteStream(__dirname + '/access.log', {flags: 'a'});
try {
config = require("./config.json");
} catch(err) {
console.error("Couldn't load config, using defaults.");
console.error(JSON.stringify(config, ' ', 4));
}
app.use(require('compression')());
app.use(require('cookie-parser')());
app.use(morgan('combined', {stream: accessLogStream}));
// Load data
var set = new ngn4.NameGeneratorSet();
var dir = path.join(__dirname, 'data');
fs.readdirSync(dir).forEach(function(file) {
console.log('Loading ' + file + '...');
set.import(require('./data/' + file), true);
});
// Prepare merged data file for client to use.
var data = set.export();
var indexFile = null;
// Get index.html
fs.readFile(path.join(__dirname + '/www-root/index.html'), 'utf8', function (err, data) {
if (err) {
throw err;
}
indexFile = data;
});
// Load scripts
dir = path.join(__dirname, 'scripts');
fs.readdirSync(dir).forEach(function(file) {
console.log('Running ' + file + '...');
require('./scripts/' + file)(set, app, data, scriptMethods);
});
// Prepare static directories
app.use('/js', express.static('www-root/js'));
app.use('/css', express.static('www-root/css'));
app.use('/img/', express.static('www-root/img'));
// Set up index
function sendIndexHtml(req, res) {
res.header("Content-Type", "text/html; charset=utf-8");
res.end(util.formatTemplate(indexFile, {
generatorStyle: scriptMethods.getBackgroundFromCookie(req.cookies),
inited: true,
initData: scriptMethods.getInitDataFromCookie(req.cookies),
genList: scriptMethods.getGeneratorListJsonData()
}));
}
app.get('/index.html', sendIndexHtml);
app.get('/', sendIndexHtml);
var server = app.listen(config.port, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Server listening at http://%s:%s', host, port);
});
process.on("SIGINT", () => process.exit(0));
process.on("SIGTERM", () => process.exit(0));