mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-05-07 18:06:07 +02:00
organize middlewares
removed app.locals.middleware middlewares can be required anywhere, ie in controllers
This commit is contained in:
109
src/webserver.js
109
src/webserver.js
@@ -1,25 +1,35 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
var path = require('path'),
|
||||
fs = require('fs'),
|
||||
nconf = require('nconf'),
|
||||
express = require('express'),
|
||||
app = express(),
|
||||
server,
|
||||
winston = require('winston'),
|
||||
async = require('async'),
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var nconf = require('nconf');
|
||||
var express = require('express');
|
||||
var app = express();
|
||||
var server;
|
||||
var winston = require('winston');
|
||||
var async = require('async');
|
||||
var flash = require('connect-flash');
|
||||
var compression = require('compression');
|
||||
var bodyParser = require('body-parser');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var session = require('express-session');
|
||||
var useragent = require('express-useragent');
|
||||
|
||||
emailer = require('./emailer'),
|
||||
meta = require('./meta'),
|
||||
languages = require('./languages'),
|
||||
logger = require('./logger'),
|
||||
plugins = require('./plugins'),
|
||||
middleware = require('./middleware'),
|
||||
routes = require('./routes'),
|
||||
emitter = require('./emitter'),
|
||||
var db = require('./database');
|
||||
var file = require('./file');
|
||||
var emailer = require('./emailer');
|
||||
var meta = require('./meta');
|
||||
var languages = require('./languages');
|
||||
var logger = require('./logger');
|
||||
var plugins = require('./plugins');
|
||||
var middleware = require('./middleware');
|
||||
var routes = require('./routes');
|
||||
var auth = require('./routes/authentication');
|
||||
var emitter = require('./emitter');
|
||||
var templates = require('templates.js');
|
||||
|
||||
helpers = require('../public/src/modules/helpers');
|
||||
var helpers = require('../public/src/modules/helpers');
|
||||
|
||||
if (nconf.get('ssl')) {
|
||||
server = require('https').createServer({
|
||||
@@ -46,7 +56,7 @@ server.on('error', function(err) {
|
||||
module.exports.listen = function() {
|
||||
emailer.registerApp(app);
|
||||
|
||||
app.locals.middleware = middleware = middleware(app);
|
||||
setupExpressApp(app);
|
||||
|
||||
helpers.register();
|
||||
|
||||
@@ -71,6 +81,69 @@ module.exports.listen = function() {
|
||||
});
|
||||
};
|
||||
|
||||
function setupExpressApp(app) {
|
||||
var relativePath = nconf.get('relative_path');
|
||||
|
||||
app.engine('tpl', templates.__express);
|
||||
app.set('view engine', 'tpl');
|
||||
app.set('views', nconf.get('views_dir'));
|
||||
app.set('json spaces', process.env.NODE_ENV === 'development' ? 4 : 0);
|
||||
app.use(flash());
|
||||
|
||||
app.enable('view cache');
|
||||
|
||||
app.use(compression());
|
||||
|
||||
setupFavicon(app);
|
||||
|
||||
app.use(relativePath + '/apple-touch-icon', middleware.routeTouchIcon);
|
||||
|
||||
app.use(bodyParser.urlencoded({extended: true}));
|
||||
app.use(bodyParser.json());
|
||||
app.use(cookieParser());
|
||||
app.use(useragent.express());
|
||||
|
||||
var cookie = {
|
||||
maxAge: 1000 * 60 * 60 * 24 * (parseInt(meta.config.loginDays, 10) || 14)
|
||||
};
|
||||
|
||||
if (meta.config.cookieDomain) {
|
||||
cookie.domain = meta.config.cookieDomain;
|
||||
}
|
||||
|
||||
if (nconf.get('secure')) {
|
||||
cookie.secure = true;
|
||||
}
|
||||
|
||||
if (relativePath !== '') {
|
||||
cookie.path = relativePath;
|
||||
}
|
||||
|
||||
app.use(session({
|
||||
store: db.sessionStore,
|
||||
secret: nconf.get('secret'),
|
||||
key: 'express.sid',
|
||||
cookie: cookie,
|
||||
resave: true,
|
||||
saveUninitialized: true
|
||||
}));
|
||||
|
||||
app.use(middleware.addHeaders);
|
||||
app.use(middleware.processRender);
|
||||
auth.initialize(app, middleware);
|
||||
|
||||
var toobusy = require('toobusy-js');
|
||||
toobusy.maxLag(parseInt(meta.config.eventLoopLagThreshold, 10) || 100);
|
||||
toobusy.interval(parseInt(meta.config.eventLoopInterval, 10) || 500);
|
||||
}
|
||||
|
||||
function setupFavicon(app) {
|
||||
var faviconPath = path.join(__dirname, '../../', 'public', meta.config['brand:favicon'] ? meta.config['brand:favicon'] : 'favicon.ico');
|
||||
if (file.existsSync(faviconPath)) {
|
||||
app.use(nconf.get('relative_path'), favicon(faviconPath));
|
||||
}
|
||||
}
|
||||
|
||||
function initializeNodeBB(callback) {
|
||||
var skipJS, skipLess, fromFile = nconf.get('from-file') || '';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user