Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
import { match, RouterContext } from 'react-router';
import expressStaticGzip from 'express-static-gzip';
import device from 'express-device';
import createMemoryHistory from 'history/lib/createMemoryHistory';
import configureStore from './store';
import routes from './routes';
const server = Express();
const port = process.env.PORT || 3000;
server.use('/manifest.json', Express.static('./dist/manifest.json'));
server.use('/favicon.ico', Express.static('./dist/static/images/favicon.ico'));
server.use('/sw.js', Express.static('./dist/sw.js'));
server.use('/static', expressStaticGzip('./dist/static', {
'maxAge': 31536000,
setHeaders: function(res, path, stat) {
res.setHeader("Expires", new Date(Date.now() + 2592000000).toUTCString());
return res;
}
}));
/* At the top, with other redirect methods before other routes */
server.get('*',function(req,res,next){
if(req.headers['x-forwarded-proto']!='https')
res.redirect('https://' + req.hostname + req.url);
else
next(); /* Continue to other routes if we're not redirecting */
});
server.use(device.capture());
middlewares.push({
name: 'hmr',
use: wpHotMiddlware(compiler, {
reload: true,
}),
order: Enums.priority.high,
});
}
// serve the static files out of ./public or specified directory
const staticAssets =
process.env.PUBLIC_DIRECTORY || path.resolve(process.cwd(), 'public');
middlewares.push({
name: 'static',
use: staticGzip(staticAssets),
order: Enums.priority.neutral,
});
// default route handler
middlewares.push({
name: 'router',
use: router,
order: Enums.priority.neutral,
});
// Give app an opportunity to change middlewares
if (fs.existsSync(`${rootPath}/src/app/server/middleware.js`)) {
middlewares = require(`${rootPath}/src/app/server/middleware.js`)(
middlewares,
);
}
res: /* istanbul ignore next */ (res: ServerResponse) => ({
status: res.statusCode,
}),
},
}));
app.set('trust proxy', true);
app.use(cookieSession({
name: 'pazmin-session',
keys: [config.sessionSecret],
secure: !config.allowInsecureSession,
httpOnly: true,
}));
app.use('/assets', staticGzip('dist/assets', {immutable: true}));
app.use('/assets', staticGzip('node_modules/govuk-frontend/govuk', {immutable: true}));
app.use('/assets', staticGzip('node_modules/govuk-frontend/govuk/assets', {immutable: true}));
app.use('/assets', staticGzip('node_modules/d3/dist', {immutable: true}));
app.use('/assets', staticGzip('node_modules/d3-sankey/dist', {immutable: true}));
app.use(compression());
app.use(helmet());
app.use(helmet.contentSecurityPolicy(csp));
app.use(express.urlencoded({extended: true}));
app.use(csrf());
app.get('/healthcheck', (_req: express.Request, res: express.Response) => res.send({message: 'OK'}));
app.get('/forbidden', () => {
throw new NotAuthorisedError('Forbidden');
app.use('/resources', express.static(__dirname + '/../../resources'))
app.get('*', express.static(path.resolve(process.cwd(), './dist')))
} else {
if (process.env.SERVE_STATIC) {
app.use('/resources', express.static(__dirname + '/../../resources'))
}
app.use(gzip(path.resolve(process.cwd(), './dist'), {
enableBrotli: true
}))
app.get('*', gzip(path.resolve(process.cwd(), './dist'), {
enableBrotli: true
}))
}
/////////////////////////////////////////////////////////////////////
//
//
/////////////////////////////////////////////////////////////////////
const runServer = (app) => {
try {
process.on('exit', () => {
})
status: res.statusCode,
}),
},
}));
app.set('trust proxy', true);
app.use(cookieSession({
name: 'pazmin-session',
keys: [config.sessionSecret],
secure: !config.allowInsecureSession,
httpOnly: true,
}));
app.use('/assets', staticGzip('dist/assets', {immutable: true}));
app.use('/assets', staticGzip('node_modules/govuk-frontend/govuk', {immutable: true}));
app.use('/assets', staticGzip('node_modules/govuk-frontend/govuk/assets', {immutable: true}));
app.use('/assets', staticGzip('node_modules/d3/dist', {immutable: true}));
app.use('/assets', staticGzip('node_modules/d3-sankey/dist', {immutable: true}));
app.use(compression());
app.use(helmet());
app.use(helmet.contentSecurityPolicy(csp));
app.use(express.urlencoded({extended: true}));
app.use(csrf());
app.get('/healthcheck', (_req: express.Request, res: express.Response) => res.send({message: 'OK'}));
app.get('/forbidden', () => {
throw new NotAuthorisedError('Forbidden');
});
}),
},
}));
app.set('trust proxy', true);
app.use(cookieSession({
name: 'pazmin-session',
keys: [config.sessionSecret],
secure: !config.allowInsecureSession,
httpOnly: true,
}));
app.use('/assets', staticGzip('dist/assets', {immutable: true}));
app.use('/assets', staticGzip('node_modules/govuk-frontend', {immutable: true}));
app.use('/assets', staticGzip('node_modules/govuk-frontend/assets', {immutable: true}));
app.use('/assets', staticGzip('src/frontend/javascript', { immutable: true }));
app.use(compression());
app.use(helmet());
app.use(helmet.contentSecurityPolicy(csp));
app.use(express.urlencoded({extended: true}));
app.get('/healthcheck', (_req: express.Request, res: express.Response) => res.send({message: 'OK'}));
app.get('/calculator', (req: express.Request, res: express.Response, next: express.NextFunction) => {
const route = router.findByName('admin.home');
const ctx = initContext(req, router, route, config);
getCalculator(ctx, {...req.query, ...req.params, ...route.parser.match(req.path)})
.then((response: IResponse) => {
},
}));
app.set('trust proxy', true);
app.use(cookieSession({
name: 'pazmin-session',
keys: [config.sessionSecret],
secure: !config.allowInsecureSession,
httpOnly: true,
}));
app.use('/assets', staticGzip('dist/assets', {immutable: true}));
app.use('/assets', staticGzip('node_modules/govuk-frontend/govuk', {immutable: true}));
app.use('/assets', staticGzip('node_modules/govuk-frontend/govuk/assets', {immutable: true}));
app.use('/assets', staticGzip('node_modules/d3/dist', {immutable: true}));
app.use('/assets', staticGzip('node_modules/d3-sankey/dist', {immutable: true}));
app.use(compression());
app.use(helmet());
app.use(helmet.contentSecurityPolicy(csp));
app.use(express.urlencoded({extended: true}));
app.use(csrf());
app.get('/healthcheck', (_req: express.Request, res: express.Response) => res.send({message: 'OK'}));
app.get('/forbidden', () => {
throw new NotAuthorisedError('Forbidden');
});
app.get('/calculator', (req: express.Request, res: express.Response, next: express.NextFunction) => {
}))
app.use(webpackHotMiddleware(compiler))
app.use('/resources', express.static(__dirname + '/../../resources'))
app.get('*', express.static(path.resolve(process.cwd(), './dist')))
} else {
if (process.env.SERVE_STATIC) {
app.use('/resources', express.static(__dirname + '/../../resources'))
}
app.use(gzip(path.resolve(process.cwd(), './dist'), {
enableBrotli: true
}))
app.get('*', gzip(path.resolve(process.cwd(), './dist'), {
enableBrotli: true
}))
}
/////////////////////////////////////////////////////////////////////
//
//
/////////////////////////////////////////////////////////////////////
const runServer = (app) => {
try {
}));
app.set('trust proxy', true);
app.use(cookieSession({
name: 'pazmin-session',
keys: [config.sessionSecret],
secure: !config.allowInsecureSession,
httpOnly: true,
}));
app.use('/assets', staticGzip('dist/assets', {immutable: true}));
app.use('/assets', staticGzip('node_modules/govuk-frontend/govuk', {immutable: true}));
app.use('/assets', staticGzip('node_modules/govuk-frontend/govuk/assets', {immutable: true}));
app.use('/assets', staticGzip('node_modules/d3/dist', {immutable: true}));
app.use('/assets', staticGzip('node_modules/d3-sankey/dist', {immutable: true}));
app.use(compression());
app.use(helmet());
app.use(helmet.contentSecurityPolicy(csp));
app.use(express.urlencoded({extended: true}));
app.use(csrf());
app.get('/healthcheck', (_req: express.Request, res: express.Response) => res.send({message: 'OK'}));
app.get('/forbidden', () => {
throw new NotAuthorisedError('Forbidden');
});
app.get('/calculator', (req: express.Request, res: express.Response, next: express.NextFunction) => {
const route = router.findByName('admin.home');
const getPublicDirectory = () =>
process.env.NODE_ENV === 'production'
? process.env.RAZZLE_PUBLIC_DIR
: process.env.RAZZLE_PUBLIC_DIR_DEV;
const publicDirectory = getPublicDirectory();
const dataFolderToRender =
process.env.NODE_ENV === 'production' ? 'data/prod' : 'data/test';
const server = express();
server
.disable('x-powered-by')
.use(compression())
.use('/data', express.static(dataFolderToRender))
.use(
expressStaticGzip(publicDirectory, {
enableBrotli: true,
orderPreference: ['br'],
}),
)
.get('/status', (req, res) => {
res.sendStatus(200);
})
.get('/*', async ({ url }, res) => {
try {
const sheet = new ServerStyleSheet();
const data = await loadInitialData(url, routes);
const app = renderToString(
sheet.collectStyles(
,
),