| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | 'use strict';process.env.NODE_CONFIG_DIR = `${__dirname}/config`;const async = require('async');const fs = require('fs');const db = require('./logic/db');const app = require('./logic/app');const mail = require('./logic/mail');const api = require('./logic/api');const io = require('./logic/io');const stations = require('./logic/stations');const songs = require('./logic/songs');const playlists = require('./logic/playlists');const cache = require('./logic/cache');const notifications = require('./logic/notifications');const logger = require('./logic/logger');const tasks = require('./logic/tasks');const config = require('config');process.on('uncaughtException', err => {	//console.log(`ERROR: ${err.message}`);	console.log(`ERROR: ${err.stack}`);});async.waterfall([	// setup our Redis cache	(next) => {		cache.init(config.get('redis').url, () => {			next();		});	},	// setup our MongoDB database	(next) => db.init(config.get("mongo").url, next),	// setup the express server	(next) => app.init(next),	// setup the mail	(next) => mail.init(next),	// setup the socket.io server (all client / server communication is done over this)	(next) => io.init(next),	// setup the notifications	(next) => notifications.init(config.get('redis').url, next),	// setup the stations	(next) => stations.init(next),	// setup the songs	(next) => songs.init(next),	// setup the playlists	(next) => playlists.init(next),	// setup the API	(next) => api.init(next),	// setup the logger	(next) => logger.init(next),	// setup the tasks system	(next) => tasks.init(next),	// setup the frontend for local setups	(next) => {		if (!config.get("isDocker")) {			const express = require('express');			const app = express();			app.listen(80);			const rootDir = __dirname.substr(0, __dirname.lastIndexOf("backend")) + "frontend\\build\\";			app.get("/*", (req, res) => {				const path = req.path;				fs.access(rootDir + path, function(err) {					if (!err) {						res.sendFile(rootDir + path);					} else {						res.sendFile(rootDir + "index.html");					}				});			});		}		next();	}], (err) => {	if (err && err !== true) {		console.error('An error occurred while initializing the backend server');		console.error(err);		process.exit();	} else {		console.info('Backend server has been successfully started');	}});
 |