Skip to content

Commit ee75e45

Browse files
Merge pull request #81 from VKCOM/di/fix-websocket-auth-crash/QA-16055
Add try catch to cookie parser
2 parents 33a51ea + 995ccc9 commit ee75e45

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

bin/stf.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/usr/bin/env -S node --import ./lib/util/instrument.mjs
2-
console.log('Starting stf')
2+
console.log('Starting DeviceHub')
33
import '../lib/cli/index.js'

lib/units/websocket/index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ const request = Promise.promisifyAll(postmanRequest)
2929
export default (function(options) {
3030
var log = logger.createLogger('websocket')
3131
var server = http.createServer()
32-
console.log(options)
3332
// eslint-disable-next-line camelcase
3433
const io_options = {
3534
serveClient: false
Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,45 @@
11
import * as dbapi from '../../../db/api.js'
22
import * as jwtutil from '../../../util/jwtutil.js'
33
import * as cookie from 'cookie'
4+
import logger from '../../../util/logger.js'
5+
46

57
export default (function(options) {
8+
const log = logger.createLogger('websocket')
69
return function(socket, next) {
710
let req = socket.request
8-
let token
9-
const cookies = cookie.parse(req.headers.cookie)
11+
let token, cookies
12+
try {
13+
cookies = cookie.parse(req.headers.cookie)
14+
}
15+
catch (e) {
16+
return next(new Error('Missing authorization token'))
17+
}
1018
if (cookies.token) {
1119
token = jwtutil.decode(cookies.token, options.secret)
1220
req.internalJwt = cookies.token
1321
}
1422
else {
15-
next(new Error('Missing authorization token'))
23+
return next(new Error('Missing authorization token'))
1624
}
1725
if (token) {
1826
return dbapi.loadUser(token.email)
1927
.then(function(user) {
2028
if (user) {
2129
req.user = user
22-
next()
30+
return next()
2331
}
2432
else {
25-
next(new Error('Invalid user'))
33+
return next(new Error('Invalid user'))
2634
}
2735
})
28-
.catch(next)
36+
.catch((e) => {
37+
log.error(e)
38+
return next(new Error('Unknown error'))
39+
})
2940
}
3041
else {
31-
next(new Error('Missing authorization token'))
42+
return next(new Error('Missing authorization token'))
3243
}
3344
}
3445
})

0 commit comments

Comments
 (0)