diff --git a/src/controllers/admin.js b/src/controllers/admin.js index 10c852a74d..8f007c7783 100644 --- a/src/controllers/admin.js +++ b/src/controllers/admin.js @@ -28,6 +28,7 @@ var adminController = { widgets: {} }, events: {}, + logs: {}, database: {}, plugins: {}, languages: {}, @@ -172,6 +173,19 @@ adminController.events.get = function(req, res, next) { }); }; +adminController.logs.get = function(req, res, next) { + var logPath = path.join('logs', path.sep, 'output.log'); + fs.readFile(logPath, function(err, data) { + if (err || !data) { + data = ''; + } + + res.render('admin/advanced/log', { + data: data.toString() + }); + }); +}; + adminController.plugins.get = function(req, res, next) { plugins.getAll(function(err, plugins) { if (err || !Array.isArray(plugins)) { diff --git a/src/database/mongo.js b/src/database/mongo.js index bed8f542b7..253fd78fbe 100644 --- a/src/database/mongo.js +++ b/src/database/mongo.js @@ -53,7 +53,13 @@ winston.error('Unable to initialize MongoDB! Is MongoDB installed? Error :' + err.message); process.exit(); } - var connString = 'mongodb://'+ nconf.get('mongo:host') + ':' + nconf.get('mongo:port') + '/' + nconf.get('mongo:database'); + + var usernamePassword = ''; + if (nconf.get('mongo:username') && nconf.get('mongo:password')) { + usernamePassword = nconf.get('mongo:username') + ':' + nconf.get('mongo:password') + '@'; + } + + var connString = 'mongodb://' + usernamePassword + nconf.get('mongo:host') + ':' + nconf.get('mongo:port') + '/' + nconf.get('mongo:database'); var connOptions = { server: { poolSize: nconf.get('mongo:poolSize') || 10 diff --git a/src/middleware/middleware.js b/src/middleware/middleware.js index 93080ea221..ee24f032ae 100644 --- a/src/middleware/middleware.js +++ b/src/middleware/middleware.js @@ -355,7 +355,7 @@ middleware.renderHeader = function(req, res, callback) { templateValues.user = results.user; templateValues.customCSS = results.customCSS; templateValues.customJS = results.customJS; - templateValues.maintenanceHeader = meta.config.maintenanceMode === '1' ^ !!results.isAdmin + templateValues.maintenanceHeader = meta.config.maintenanceMode === '1' && !results.isAdmin app.render('header', templateValues, callback); }); diff --git a/src/routes/admin.js b/src/routes/admin.js index 104f6c40f3..ab2d3c14b1 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -64,6 +64,7 @@ function addRoutes(router, middleware, controllers) { router.get('/advanced/database', controllers.admin.database.get); router.get('/advanced/events', controllers.admin.events.get); + router.get('/advanced/logs', controllers.admin.logs.get); router.get('/development/logger', controllers.admin.logger.get); } diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js index 17bc3d0e20..108356465b 100644 --- a/src/socket.io/admin.js +++ b/src/socket.io/admin.js @@ -1,6 +1,12 @@ "use strict"; -var groups = require('../groups'), +var async = require('async'), + winston = require('winston'), + cluster = require('cluster'), + fs = require('fs'), + path = require('path'), + + groups = require('../groups'), meta = require('../meta'), plugins = require('../plugins'), widgets = require('../widgets'), @@ -11,10 +17,8 @@ var groups = require('../groups'), events = require('../events'), emailer = require('../emailer'), db = require('../database'), - async = require('async'), - winston = require('winston'), index = require('./index'), - cluster = require('cluster'), + SocketAdmin = { user: require('./admin/user'), @@ -232,4 +236,9 @@ function getHourlyStatsForSet(set, hours, callback) { }); } +SocketAdmin.clearLog = function(socket, data, callback) { + var logPath = path.join('logs', path.sep, 'output.log'); + fs.truncate(logPath, callback); +}; + module.exports = SocketAdmin; diff --git a/src/views/admin/advanced/log.tpl b/src/views/admin/advanced/log.tpl new file mode 100644 index 0000000000..7b396e003d --- /dev/null +++ b/src/views/admin/advanced/log.tpl @@ -0,0 +1,30 @@ +
{data}+