Exemple #1
0
function onAuth (message) {
  var socket = this.socket
  debug('message:', message)

  var res = jsonrpc.parse(message)
  if (res.type !== 'request') {
    return socket.end(Resp.encodeError(new Error(`Receive a unhandle message: ${message}`)))
  }

  if (res.payload.method !== 'auth') {
    res = jsonrpc.error(res.payload.id, new jsonrpc.JsonRpcError('Unauthorized: ' + message, 401))
    return socket.end(Resp.encodeBulk(JSON.stringify(res)))
  }

  // params: [tokenxxx]
  try {
    socket.token = jwt.verifyToken(res.payload.params[0])
    // Producer token should have producerId to be different from consumer auth.
    if (!validString(socket.token.producerId)) throw new Error('invalid signature')
    socket.id = tools.md5(res.payload.params[0])
    socket.producerId = socket.token.producerId
    res = jsonrpc.success(res.payload.id, {id: socket.id})
    socket.write(Resp.encodeBulk(JSON.stringify(res)))
  } catch (err) {
    res = jsonrpc.error(res.payload.id, new jsonrpc.JsonRpcError(err.message, 400))
    return socket.end(Resp.encodeBulk(JSON.stringify(res)))
  }
  // Socket is ready to listen.
  socket.invalidRequestCount = 0
  server.clients[socket.id] = socket
  this.on('data', onData)
}
Exemple #2
0
 thunk(handleRPC(socket, req.payload))(function (err, res) {
   debug('response:', req.payload.id, err, res)
   var data = null
   if (err) {
     if (!(err instanceof jsonrpc.JsonRpcError)) {
       err = new jsonrpc.JsonRpcError(String(err), 500)
     }
     data = jsonrpc.error(req.payload.id, err)
   } else {
     data = jsonrpc.success(req.payload.id, res == null ? 'OK' : res)
   }
   socket.write(Resp.encodeBulk(JSON.stringify(data)))
 })