X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmiddlewares%2Fsecure.js;h=ee836beed45059ce362f30e104db46bb13c054a3;hb=38d78e5b82a30d1318e3cc2532b7ea22b8e163fa;hp=bfd28316a3b1551c38508cd09b59510596fb80c6;hpb=b9a3e09ad5a7673f64556d1dba122ed4c4fac980;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/middlewares/secure.js b/server/middlewares/secure.js index bfd28316a..ee836beed 100644 --- a/server/middlewares/secure.js +++ b/server/middlewares/secure.js @@ -1,46 +1,38 @@ 'use strict' -var logger = require('../helpers/logger') -var peertubeCrypto = require('../helpers/peertubeCrypto') -var Pods = require('../models/pods') +const logger = require('../helpers/logger') +const mongoose = require('mongoose') +const peertubeCrypto = require('../helpers/peertube-crypto') -var secureMiddleware = { - decryptBody: decryptBody +const Pod = mongoose.model('Pod') + +const secureMiddleware = { + checkSignature } -function decryptBody (req, res, next) { - var url = req.body.signature.url - Pods.findByUrl(url, function (err, pod) { +function checkSignature (req, res, next) { + const host = req.body.signature.host + Pod.loadByHost(host, function (err, pod) { if (err) { - logger.error('Cannot get signed url in decryptBody.', { error: err }) + logger.error('Cannot get signed host in body.', { error: err }) return res.sendStatus(500) } if (pod === null) { - logger.error('Unknown pod %s.', url) + logger.error('Unknown pod %s.', host) return res.sendStatus(403) } - logger.debug('Decrypting body from %s.', url) - - var signature_ok = peertubeCrypto.checkSignature(pod.publicKey, url, req.body.signature.signature) - - if (signature_ok === true) { - peertubeCrypto.decrypt(req.body.key, req.body.data, function (err, decrypted) { - if (err) { - logger.error('Cannot decrypt data.', { error: err }) - return res.sendStatus(500) - } + logger.debug('Checking signature from %s.', host) - req.body.data = JSON.parse(decrypted) - delete req.body.key + const signatureOk = peertubeCrypto.checkSignature(pod.publicKey, host, req.body.signature.signature) - next() - }) - } else { - logger.error('Signature is not okay in decryptBody for %s.', req.body.signature.url) - return res.sendStatus(403) + if (signatureOk === true) { + return next() } + + logger.error('Signature is not okay in body for %s.', req.body.signature.host) + return res.sendStatus(403) }) }