ohm
Version:
Node.js Session Manager
102 lines (88 loc) • 2.87 kB
JavaScript
;
// Allows for relative paths
require('./_include.js');
var nconf = require('nconf');
var PATH = require('path');
var defaultConfig = PATH.resolve(__dirname, 'config/default.json');
var production = process.env.NODE_ENV === 'production';
var winston = require('winston');
var expressWinston = require('express-winston');
var http = require('http');
var express = require('express');
var app = express();
var server = http.createServer(app);
var io = require('socket.io')(server);
var sessionManager = include('infra/session-manager');
var configManager = include('infra/config-manager');
var parseManager = include('infra/parse-manager');
var ghostManager = include('infra/ghost-manager');
var BaseController = include('controllers/BaseController.js');
var BaseSocketController = include('controllers/BaseSocketController.js');
var ViewerContext = include('models/ViewerContext.js');
nconf.argv().env().file({
file: defaultConfig
}).defaults({
"ENV": 'development',
"host": "localhost",
"port": "8888",
"MONGO_DB": "OHMTEST",
"MONGO_PORT": "27017",
"MONGO_HOST": "localhost",
"REDIS_PORT": "6379",
"REDIS_HOST": "localhost",
"PARSE_PATH": "/parse",
"PARSE_DASHBOARD": "/dashboard",
"PARSE_APPLICATION_ID": "OHMTEST",
"PARSE_JAVASCRIPT_KEY": "OHMTEST",
"PARSE_MASTER_KEY": "OHMTEST",
"PARSE_SERVER_URL": "http://localhost:8888/parse",
"AWS_ACCESS_KEY": "OHMTEST",
"AWS_SECRET_KEY": "OHMTEST",
"AWS_BUCKET_NAME": "OHMTEST",
"SOCKETIO_SESSION_SECRET": "OHMTEST",
"SESSION_KEY": "OHMTEST",
"PRIMARY_ACCOUNT_KEY": "OHMTEST",
"VIEWS_DIR": "/views",
"STATIC_DIR": "/dist"
});
function Ohm(config) {
Object.keys(config).map(function (key, index) {
nconf.set(key, config[key]);
});
if (nconf.get('STATIC_PATH') === undefined) {
nconf.set('STATIC_PATH', PATH.join(__dirname, nconf.get('STATIC_DIR')));
}
winston.info('Server starting on port ' + config.port + ' in ' + app.settings.env + ' mode');
app.config = config;
configManager.handle(nconf, app);
if (config.SESSION_KEY) {
sessionManager.handle(nconf, app, io);
}
if (config.PARSE_APPLICATION_ID) {
parseManager.handle(nconf, app);
}
if (config.GHOST_CONFIG_PATH) {
ghostManager.handle(nconf, app);
}
app.use(expressWinston.logger({
transports: [new winston.transports.File({
filename: 'logs/ohm.debug.log',
level: 'debug'
})]
}));
if (config.SOCKETS) {
require(config.SOCKETS)(io, app);
}
require(config.ROUTES)(app);
app.use(expressWinston.errorLogger({
transports: [new winston.transports.File({
filename: 'logs/ohm.error.log'
})]
}));
server.listen(config.port);
return server;
}
exports = module.exports = Ohm;
exports.BaseController = BaseController;
exports.BaseSocketController = BaseSocketController;
exports.ViewerContext = ViewerContext;