Skip to content

Commit 0caf192

Browse files
authored
AB#77131 fix critical and high vulnerabilities (#149)
1 parent a1b30b5 commit 0caf192

File tree

4 files changed

+2292
-3132
lines changed

4 files changed

+2292
-3132
lines changed

package.json

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
},
3737
"homepage": "https://github.com/HSLdevcom/hsl-routemap-server#readme",
3838
"engines": {
39-
"node": ">=8.0.0"
39+
"node": ">=20.0.0"
4040
},
4141
"devDependencies": {
4242
"@babel/core": "^7.22.6",
@@ -66,44 +66,47 @@
6666
"react-hot-loader": "^4.13.1",
6767
"rimraf": "^2.6.2",
6868
"style-loader": "~2",
69-
"webpack": "~4",
70-
"webpack-cli": "~4",
71-
"webpack-dev-server": "~3",
69+
"webpack": "~5",
70+
"webpack-cli": "~5",
71+
"webpack-dev-server": "~5",
7272
"worker-loader": "^3.0.8"
7373
},
7474
"dependencies": {
7575
"@azure/storage-blob": "^10.5.0",
76-
"@koa/cors": "^2.2.1",
7776
"apollo-cache-inmemory": "^1.1.1",
7877
"apollo-client": "^2.0.3",
7978
"apollo-link-http": "^1.2.0",
8079
"bullmq": "^1.86.2",
8180
"dotenv": "^8.0.0",
82-
"forever": "^4.0.3",
81+
"pm2": "^6.0.14",
8382
"fs-extra": "^8.1.0",
8483
"graphql": "^0.11.7",
8584
"graphql-tag": "^2.5.0",
8685
"hsl-map-style": "hsldevcom/hsl-map-style#development",
8786
"ioredis": "^5.0.6",
8887
"knex": "^2.1.0",
89-
"koa": "^2.4.1",
88+
"koa": "^2.16.4",
9089
"koa-json-body": "^5.3.0",
9190
"koa-router": "7.3.0",
9291
"koa-session": "^5.10.1",
9392
"lodash": "^4.17.4",
94-
"node-fetch": "^1.7.3",
95-
"nodemon": "^1.12.1",
93+
"node-fetch": "^2.6.7",
94+
"nodemon": "^3.1.14",
9695
"pg": "^8.7.3",
9796
"prop-types": "^15.6.0",
98-
"puppeteer": "^15.4.1",
97+
"puppeteer": "^24.39.1",
9998
"react": "18.2.0",
10099
"react-apollo": "^2.0.1",
101100
"react-dom": "18.2.0",
102101
"recompose": "^0.30.0",
103102
"segseg": "^0.2.2",
104-
"serve": "^13.0.2",
103+
"serve": "^14.2.6",
105104
"uuid": "^3.1.0",
106-
"validator": "^13.15.0",
105+
"validator": "^13.15.22",
107106
"viewport-mercator-project": "^4.1.1"
107+
},
108+
"resolutions": {
109+
"node-fetch": "2.6.7",
110+
"flatted": "3.4.1"
108111
}
109112
}

scripts/server.js

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
const Koa = require('koa');
22
const Router = require('koa-router');
33
const session = require('koa-session');
4-
const cors = require('@koa/cors');
54
const jsonBody = require('koa-json-body');
65
const { get } = require('lodash');
76
const { Queue } = require('bullmq');
@@ -41,6 +40,49 @@ const queue = new Queue('generator', { connection: bullRedisConnection });
4140

4241
const cancelSignalRedis = new Redis(REDIS_CONNECTION_STRING); // New connection to make sure that pub/sub will work correctly.
4342

43+
const createCorsMiddleware = (options = {}) => {
44+
const {
45+
allowHeaders = [
46+
'Accept',
47+
'Accept-Language',
48+
'Content-Language',
49+
'Content-Type',
50+
'Authorization',
51+
'X-Requested-With',
52+
],
53+
allowMethods = ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
54+
credentials = false,
55+
} = options;
56+
57+
return async (ctx, next) => {
58+
const requestOrigin = ctx.get('Origin');
59+
if (requestOrigin) {
60+
ctx.set('Access-Control-Allow-Origin', requestOrigin);
61+
} else if (!credentials) {
62+
ctx.set('Access-Control-Allow-Origin', '*');
63+
}
64+
65+
if (credentials) {
66+
ctx.set('Access-Control-Allow-Credentials', 'true');
67+
}
68+
69+
ctx.set('Access-Control-Allow-Methods', allowMethods.join(', '));
70+
const requestedHeaders = ctx.get('Access-Control-Request-Headers');
71+
if (requestedHeaders) {
72+
ctx.set('Access-Control-Allow-Headers', requestedHeaders);
73+
} else {
74+
ctx.set('Access-Control-Allow-Headers', allowHeaders.join(', '));
75+
}
76+
77+
if (ctx.method === 'OPTIONS') {
78+
ctx.status = 204;
79+
return;
80+
}
81+
82+
await next();
83+
};
84+
};
85+
4486
async function generatePoster(buildId, props) {
4587
const { id } = await addPoster({ buildId, props });
4688

@@ -284,6 +326,7 @@ async function main() {
284326

285327
router.post('/login', async (ctx) => {
286328
const authResponse = await authEndpoints.authorize(ctx.request, ctx.response, ctx.session);
329+
console.log(JSON.stringify(authResponse.body));
287330
ctx.session = null;
288331
if (authResponse.modifiedSession) {
289332
ctx.session = authResponse.modifiedSession;
@@ -324,11 +367,7 @@ async function main() {
324367
app
325368
.use(errorHandler)
326369
.use(unAuthorizedRouter.routes())
327-
.use(
328-
cors({
329-
credentials: true,
330-
}),
331-
)
370+
.use(createCorsMiddleware({ credentials: true }))
332371
.use(authMiddleware)
333372
.use(jsonBody({ fallback: true, limit: '10mb' }))
334373
.use(router.routes())

server.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,15 @@ config.devtool = 'eval';
99
config.mode = 'development';
1010

1111
if (process.env.HMR === 'true') {
12-
config.entry = [
13-
`webpack-dev-server/client?http://localhost:${PORT}`,
14-
'webpack/hot/dev-server',
15-
...config.entry,
16-
];
1712
config.plugins = [new webpack.HotModuleReplacementPlugin(), ...config.plugins];
1813
}
1914

2015
const options = {
2116
hot: process.env.HMR === 'true',
2217
historyApiFallback: true,
23-
stats: { colors: true },
18+
port: PORT,
2419
};
2520

26-
const server = new WebpackDevServer(webpack(config), options);
21+
const server = new WebpackDevServer(options, webpack(config));
2722

28-
server.listen(PORT);
23+
server.start();

0 commit comments

Comments
 (0)