diff --git a/src/definitions/custom/modepress.d.ts b/src/definitions/custom/modepress.d.ts index 4b5ef062..3d372c06 100644 --- a/src/definitions/custom/modepress.d.ts +++ b/src/definitions/custom/modepress.d.ts @@ -454,6 +454,11 @@ */ debug: boolean; + /** + * If false, the server config controllers will not be included + */ + includePluginControllers: boolean; + /** * Settings related to sending emails */ diff --git a/src/definitions/generated/modepress.d.ts b/src/definitions/generated/modepress.d.ts index b159af6e..af390603 100644 --- a/src/definitions/generated/modepress.d.ts +++ b/src/definitions/generated/modepress.d.ts @@ -454,6 +454,11 @@ declare namespace Modepress { */ debug: boolean; + /** + * If false, the server config controllers will not be included + */ + includePluginControllers: boolean; + /** * Settings related to sending emails */ diff --git a/src/dist-src/example-config.json b/src/dist-src/example-config.json index d0866807..ccb5c518 100644 --- a/src/dist-src/example-config.json +++ b/src/dist-src/example-config.json @@ -10,6 +10,7 @@ "usersSocketOrigin": "webinate.net", "usersSocketApiKey": "my-secret-key", "debug": true, + "includePluginControllers": true, "adminUser": { "username": "root", "email": "root_email@host.com", diff --git a/src/logger.ts b/src/logger.ts index a6a2c50c..40f6ce42 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -1,6 +1,8 @@ import * as winston from 'winston'; import * as yargs from 'yargs'; +let showLogs: boolean = false; + function assignMeta( meta?: any ) { if ( meta ) return Object.assign( meta, { process: process.pid } ); @@ -16,6 +18,12 @@ export function initializeLogger() { // Add the console colours winston.addColors( { debug: 'green', info: 'cyan', silly: 'magenta', warn: 'yellow', error: 'red' } ); + + + + if ( args.logging === undefined || args.logging === 'true' ) + showLogs = true; + winston.remove( winston.transports.Console ); winston.add( winston.transports.Console, { level: 'debug', colorize: true } ); @@ -31,6 +39,9 @@ export function initializeLogger() { */ export function warn( message: string, meta?: any ) { return new Promise( function( resolve, reject ) { + if ( !showLogs ) + return resolve(); + winston.warn( message, assignMeta( meta ), function( err ) { if ( err ) reject( err ) @@ -40,6 +51,13 @@ export function warn( message: string, meta?: any ) { } ); } +/** + * Returns if logging is enabled + */ +export function enabled() { + return showLogs; +} + /** * Logs an info message * @param message The message to log @@ -47,6 +65,9 @@ export function warn( message: string, meta?: any ) { */ export function info( message: string, meta?: any ) { return new Promise( function( resolve, reject ) { + if ( !showLogs ) + return resolve(); + winston.info( message, assignMeta( meta ), function( err ) { if ( err ) reject( err ) @@ -63,6 +84,9 @@ export function info( message: string, meta?: any ) { */ export function error( message: string, meta?: any ) { return new Promise( function( resolve, reject ) { + if ( !showLogs ) + return resolve(); + winston.error( message, assignMeta( meta ), function( err ) { if ( err ) reject( err ) diff --git a/src/server.ts b/src/server.ts index be090a90..b253406b 100644 --- a/src/server.ts +++ b/src/server.ts @@ -4,7 +4,7 @@ import * as mongodb from 'mongodb'; import * as http from 'http'; import * as https from 'https'; import * as fs from 'fs'; -import { error, info } from './logger'; +import { error, info, enabled as loggingEnabled } from './logger'; import * as compression from 'compression'; import { Controller } from './controllers/controller' import PageRenderer from './controllers/page-renderer' @@ -20,7 +20,6 @@ import { AdminController } from './controllers/admin-controller'; import { ErrorController } from './controllers/error-controller'; import { CommsController } from './socket-api/comms-controller'; - export class Server { private _config: Modepress.IConfig; private _server: Modepress.IServer; @@ -53,7 +52,8 @@ export class Server { app.set( 'view engine', 'jade' ); // log every request to the console - app.use( morgan( 'dev' ) ); + if ( loggingEnabled() ) + app.use( morgan( 'dev' ) ); // Create each of your controllers here const controllerPromises: Array> = []; @@ -76,12 +76,14 @@ export class Server { controllers.push( new StatsController( app, config! ) ); - // Load the controllers + // Load the optional controllers try { - for ( let i = 0, l: number = server.controllers.length; i < l; i++ ) { - lastAddedController = server.controllers[ i ].path; - const func = require( server.controllers[ i ].path ); - controllers.push( new func.default( server, config, app ) ); + if ( config.includePluginControllers ) { + for ( let i = 0, l: number = server.controllers.length; i < l; i++ ) { + lastAddedController = server.controllers[ i ].path; + const func = require( server.controllers[ i ].path ); + controllers.push( new func.default( server, config, app ) ); + } } } catch ( err ) {