Server: add port when making friends if it is not specified
authorChocobozzz <florian.bigard@gmail.com>
Sat, 1 Oct 2016 12:23:50 +0000 (14:23 +0200)
committerChocobozzz <florian.bigard@gmail.com>
Sat, 1 Oct 2016 12:23:50 +0000 (14:23 +0200)
server/controllers/api/v1/pods.js
server/middlewares/index.js
server/middlewares/pods.js [new file with mode: 0644]

index d509db9647fd23e201cfb249fc4a4e0596a8ac13..8ffade578505a269ea64701b69a6156e03ced539 100644 (file)
@@ -10,6 +10,7 @@ const friends = require('../../../lib/friends')
 const middlewares = require('../../../middlewares')
 const admin = middlewares.admin
 const oAuth = middlewares.oauth
+const podsMiddleware = middlewares.pods
 const checkSignature = middlewares.secure.checkSignature
 const validators = middlewares.validators.pods
 const signatureValidator = middlewares.validators.remote.signature
@@ -19,11 +20,16 @@ const Pod = mongoose.model('Pod')
 const Video = mongoose.model('Video')
 
 router.get('/', listPods)
-router.post('/', validators.podsAdd, addPods)
+router.post('/',
+  validators.podsAdd,
+  podsMiddleware.setBodyUrlPort,
+  addPods
+)
 router.post('/makefriends',
   oAuth.authenticate,
   admin.ensureIsAdmin,
   validators.makeFriends,
+  podsMiddleware.setBodyUrlsPort,
   makeFriends
 )
 router.get('/quitfriends',
index 1e294de5f219f111c3ce23199923ce30d5a13501..3f253e31bec9d3a94d67df5f55125db463884d8c 100644 (file)
@@ -3,6 +3,7 @@
 const adminMiddleware = require('./admin')
 const oauthMiddleware = require('./oauth')
 const paginationMiddleware = require('./pagination')
+const podsMiddleware = require('./pods')
 const validatorsMiddleware = require('./validators')
 const searchMiddleware = require('./search')
 const sortMiddleware = require('./sort')
@@ -12,6 +13,7 @@ const middlewares = {
   admin: adminMiddleware,
   oauth: oauthMiddleware,
   pagination: paginationMiddleware,
+  pods: podsMiddleware,
   search: searchMiddleware,
   secure: secureMiddleware,
   sort: sortMiddleware,
diff --git a/server/middlewares/pods.js b/server/middlewares/pods.js
new file mode 100644 (file)
index 0000000..116b02b
--- /dev/null
@@ -0,0 +1,62 @@
+'use strict'
+
+const urlModule = require('url')
+
+const logger = require('../helpers/logger')
+
+const podsMiddleware = {
+  setBodyUrlsPort: setBodyUrlsPort,
+  setBodyUrlPort: setBodyUrlPort
+}
+
+function setBodyUrlsPort (req, res, next) {
+  for (let i = 0; i < req.body.urls.length; i++) {
+    const urlWithPort = getUrlWithPort(req.body.urls[i])
+
+    // Problem with the url parsing?
+    if (urlWithPort === null) {
+      return res.sendStatus(500)
+    }
+
+    req.body.urls[i] = urlWithPort
+  }
+
+  return next()
+}
+
+function setBodyUrlPort (req, res, next) {
+  const urlWithPort = getUrlWithPort(req.body.url)
+
+  // Problem with the url parsing?
+  if (urlWithPort === null) {
+    return res.sendStatus(500)
+  }
+
+  req.body.url = urlWithPort
+
+  return next()
+}
+
+// ---------------------------------------------------------------------------
+
+module.exports = podsMiddleware
+
+// ---------------------------------------------------------------------------
+
+function getUrlWithPort (url) {
+  const urlObj = urlModule.parse(url)
+
+  // Add the port if it is not specified
+  if (urlObj.port === null) {
+    if (urlObj.protocol === 'http:') {
+      return url + ':80'
+    } else if (urlObj.protocol === 'https:') {
+      return url + ':443'
+    } else {
+      logger.error('Unknown url protocol: ' + urlObj.protocol)
+      return null
+    }
+  }
+
+  return url
+}