import * as compression from 'compression'; import * as express from 'express'; import * as favicon from 'serve-favicon'; import * as helmet from 'helmet'; import * as http from 'http'; import * as https from 'https'; import * as path from 'path'; import * as socket from 'socket.io'; import { isUndefined } from 'lodash'; import * as morgan from 'morgan'; import logger from './logger'; import events from './emitter'; import { SSLBuffer, Server } from './interfaces'; const distDir = path.join(__dirname, 'client'); const trim = (str: string): string => str.replace(/\/*$/, ''); export default function createServer( { base, port, host, title, bypasshelmet }: Server, { key, cert }: SSLBuffer ): SocketIO.Server { const basePath = trim(base); events.emit( 'debug', `key: ${key}, cert: ${cert}, port: ${port}, base: ${base}, title: ${title}` ); const html = ( req: express.Request, res: express.Response ): express.Response => { const resourcePath = /^\/ssh\//.test(req.url) ? '../' : ''; res.send(`