79 lines
1.8 KiB
JavaScript
79 lines
1.8 KiB
JavaScript
const fs = require('fs')
|
|
const http = require('http')
|
|
const https = require('https')
|
|
const express = require('express')
|
|
const loop = require('reoccur')
|
|
|
|
const routes = require('./routes')
|
|
const plugins = require('./plugins')
|
|
const logger = require('./logger')
|
|
var argv = require('minimist')(process.argv.slice(2))
|
|
|
|
const settingsLoader = require('./settings-loader')
|
|
const options = require('./options')
|
|
|
|
const devMode = argv.dev || argv.http || options.http
|
|
|
|
function run () {
|
|
let count = 0
|
|
return loop((recur, resolve, reject) => {
|
|
return runOnce()
|
|
.then(resolve)
|
|
.catch(err => {
|
|
count += 1
|
|
logger.debug(err)
|
|
logger.debug('[%d] Retrying in 10s...', count)
|
|
setTimeout(recur, 10000)
|
|
})
|
|
})
|
|
}
|
|
|
|
function runOnce () {
|
|
const app = express()
|
|
const localApp = express()
|
|
|
|
const seedPath = options.seedPath || './seeds/seed.txt'
|
|
plugins.init(seedPath)
|
|
|
|
return settingsLoader.settings()
|
|
.then(settings => {
|
|
plugins.startPolling()
|
|
plugins.startCheckingNotification(settings.config)
|
|
|
|
const httpsServerOptions = {
|
|
key: fs.readFileSync(options.keyPath),
|
|
cert: fs.readFileSync(options.certPath),
|
|
requestCert: true
|
|
}
|
|
|
|
const server = devMode
|
|
? http.createServer(app)
|
|
: https.createServer(httpsServerOptions, app)
|
|
|
|
const port = 3000
|
|
const localPort = 3030
|
|
const localServer = http.createServer(localApp)
|
|
|
|
if (options.devMode) logger.info('In dev mode')
|
|
|
|
const opts = {
|
|
app,
|
|
localApp,
|
|
devMode,
|
|
plugins
|
|
}
|
|
|
|
routes.init(opts)
|
|
|
|
server.listen(port, () => {
|
|
console.log('lamassu-server listening on port ' +
|
|
port + ' ' + (devMode ? '(http)' : '(https)'))
|
|
})
|
|
|
|
localServer.listen(localPort, 'localhost', () => {
|
|
console.log('lamassu-server listening on local port ' + localPort)
|
|
})
|
|
})
|
|
}
|
|
|
|
module.exports = {run}
|