Create rest of server
This commit is contained in:
parent
9cbae3b8a1
commit
1062c7bfa6
5 changed files with 47 additions and 2 deletions
|
@ -1,4 +1,5 @@
|
||||||
import express, { Request, Response } from 'express';
|
import express, { Request, Response } from 'express';
|
||||||
|
import serveIndex from 'serve-index';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
|
||||||
function isDirectory(url : string) : boolean {
|
function isDirectory(url : string) : boolean {
|
||||||
|
@ -12,7 +13,6 @@ export function indexHandle(request : Request, response : Response, next : Funct
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export function staticFileHandle(serveDir : string) {
|
export function staticFileHandle(serveDir : string) {
|
||||||
return express.static(serveDir, {
|
return express.static(serveDir, {
|
||||||
dotfiles: 'ignore',
|
dotfiles: 'ignore',
|
||||||
|
@ -20,3 +20,9 @@ export function staticFileHandle(serveDir : string) {
|
||||||
redirect: true
|
redirect: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function serveIndexHandle(serveDir : string) {
|
||||||
|
return serveIndex(serveDir, {
|
||||||
|
icons: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
@ -1,11 +1,24 @@
|
||||||
import express from 'express';
|
import express from 'express';
|
||||||
|
|
||||||
import AccessControl from 'express-ip-access-control';
|
import AccessControl from 'express-ip-access-control';
|
||||||
|
import compression from 'compression';
|
||||||
|
import helmet from 'helmet';
|
||||||
|
import opbeat from 'opbeat';
|
||||||
|
|
||||||
|
import logging from './middleware/logging';
|
||||||
|
import basicAuthHandler from './middleware/basic-auth';
|
||||||
|
import { serveIndexHandle, indexHandle, staticFileHandle } from './middleware/static-files';
|
||||||
|
import handle404 from './middleware/404';
|
||||||
|
|
||||||
import { Options } from './types';
|
import { Options } from './types';
|
||||||
|
|
||||||
export default function createServer(opts : Options) {
|
export default function createServer(opts : Options) {
|
||||||
const app = express();
|
const app = express();
|
||||||
|
const opbeatHandle = opbeat.start({
|
||||||
|
active: opts.opbeat
|
||||||
|
});
|
||||||
|
|
||||||
|
app.use(logging);
|
||||||
|
|
||||||
if (opts.allowed_ips) {
|
if (opts.allowed_ips) {
|
||||||
app.set('trust proxy', true);
|
app.set('trust proxy', true);
|
||||||
|
@ -16,5 +29,23 @@ export default function createServer(opts : Options) {
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opts.basicAuth) {
|
||||||
|
const credentials = opts.basicAuth.split(':');
|
||||||
|
app.use(basicAuthHandler(credentials[0], credentials[1]));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opts.dirList) {
|
||||||
|
app.use(serveIndexHandle(opts.serveDir));
|
||||||
|
} else {
|
||||||
|
app.use(indexHandle);
|
||||||
|
}
|
||||||
|
|
||||||
|
app.use(staticFileHandle(opts.serveDir));
|
||||||
|
app.use(handle404);
|
||||||
|
|
||||||
|
app.use(compression({ level: 9 }));
|
||||||
|
app.use(helmet());
|
||||||
|
app.use(opbeatHandle.middleware.express());
|
||||||
|
|
||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
|
|
1
src/types/fakes.d.ts
vendored
1
src/types/fakes.d.ts
vendored
|
@ -5,3 +5,4 @@ declare module 'connect-static-file';
|
||||||
declare module 'express-basic-auth';
|
declare module 'express-basic-auth';
|
||||||
declare module 'winston'; // doesnt like console transport
|
declare module 'winston'; // doesnt like console transport
|
||||||
declare module 'express-winston';
|
declare module 'express-winston';
|
||||||
|
declare module 'opbeat';
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
|
|
||||||
export interface Options {
|
export interface Options {
|
||||||
allowed_ips: string[];
|
allowed_ips: string[];
|
||||||
|
basicAuth: string;
|
||||||
|
dirList: boolean;
|
||||||
|
serveDir: string;
|
||||||
|
opbeat: boolean;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"compression": "registry:dt/compression#0.0.0+20160725212620",
|
||||||
"debug": "registry:npm/debug#2.0.0+20160723033700",
|
"debug": "registry:npm/debug#2.0.0+20160723033700",
|
||||||
"express": "registry:npm/express#4.14.0+20160925001530"
|
"express": "registry:npm/express#4.14.0+20160925001530",
|
||||||
|
"helmet": "registry:dt/helmet#0.0.0+20161005184000",
|
||||||
|
"serve-index": "registry:dt/serve-index#1.7.2+20160428043022"
|
||||||
},
|
},
|
||||||
"globalDependencies": {
|
"globalDependencies": {
|
||||||
"node": "registry:dt/node#7.0.0+20170204020307"
|
"node": "registry:dt/node#7.0.0+20170204020307"
|
||||||
|
|
Reference in a new issue