Server: paths refractoring
authorChocobozzz <florian.bigard@gmail.com>
Tue, 17 Jan 2017 20:42:47 +0000 (21:42 +0100)
committerChocobozzz <florian.bigard@gmail.com>
Tue, 17 Jan 2017 20:42:47 +0000 (21:42 +0100)
server/controllers/api/pods.js
server/controllers/client.js
server/helpers/peertube-crypto.js
server/initializers/constants.js
server/lib/friends.js
server/models/video.js
server/tests/api/single-pod.js
server/tests/utils/servers.js

index 38702face2c9a0db53354394e438f2909b91c245..e1fe6fb5d0cc052172174ffc899f770af9094cb9 100644 (file)
@@ -5,6 +5,7 @@ const waterfall = require('async/waterfall')
 
 const db = require('../../initializers/database')
 const logger = require('../../helpers/logger')
+const peertubeCrypto = require('../../helpers/peertube-crypto')
 const utils = require('../../helpers/utils')
 const friends = require('../../lib/friends')
 const middlewares = require('../../middlewares')
@@ -67,7 +68,7 @@ function addPods (req, res, next) {
     },
 
     function fetchMyCertificate (callback) {
-      friends.getMyCertificate(function (err, cert) {
+      peertubeCrypto.getMyPublicCert(function (err, cert) {
         if (err) {
           logger.error('Cannot read cert file.')
           return callback(err)
index 8c242af07890d0b80188b2d5065d3429219cd018..83243a4f74b9a5d89d7dd5a58d2202484887dbae 100644 (file)
@@ -12,7 +12,7 @@ const db = require('../initializers/database')
 const router = express.Router()
 
 const opengraphComment = '<!-- opengraph tags -->'
-const distPath = path.join(__dirname, '../../client/dist')
+const distPath = path.join(__dirname, '..', '..', 'client/dist')
 const embedPath = path.join(distPath, 'standalone/videos/embed.html')
 const indexPath = path.join(distPath, 'index.html')
 
index 0f1e02ad6babb6f6364cedcba89fbe6853ffcd4c..ef6808d5ce1edf4dc54e89535babebe622dda8a2 100644 (file)
@@ -4,6 +4,7 @@ const crypto = require('crypto')
 const bcrypt = require('bcrypt')
 const fs = require('fs')
 const openssl = require('openssl-wrapper')
+const pathUtils = require('path')
 
 const constants = require('../initializers/constants')
 const logger = require('./logger')
@@ -13,6 +14,8 @@ const peertubeCrypto = {
   comparePassword,
   createCertsIfNotExist,
   cryptPassword,
+  getMyPrivateCert,
+  getMyPublicCert,
   sign
 }
 
@@ -55,7 +58,8 @@ function sign (data) {
   sign.update(dataString, 'utf8')
 
   // TODO: make async
-  const myKey = fs.readFileSync(constants.CONFIG.STORAGE.CERT_DIR + 'peertube.key.pem')
+  const certPath = pathUtils.join(constants.CONFIG.STORAGE.CERT_DIR, constants.PRIVATE_CERT_NAME)
+  const myKey = fs.readFileSync(certPath)
   const signature = sign.sign(myKey, constants.SIGNATURE_ENCODING)
 
   return signature
@@ -91,6 +95,16 @@ function cryptPassword (password, callback) {
   })
 }
 
+function getMyPrivateCert (callback) {
+  const certPath = pathUtils.join(constants.CONFIG.STORAGE.CERT_DIR, constants.PRIVATE_CERT_NAME)
+  fs.readFile(certPath, 'utf8', callback)
+}
+
+function getMyPublicCert (callback) {
+  const certPath = pathUtils.join(constants.CONFIG.STORAGE.CERT_DIR, constants.PUBLIC_CERT_NAME)
+  fs.readFile(certPath, 'utf8', callback)
+}
+
 // ---------------------------------------------------------------------------
 
 module.exports = peertubeCrypto
@@ -98,7 +112,8 @@ module.exports = peertubeCrypto
 // ---------------------------------------------------------------------------
 
 function certsExist (callback) {
-  fs.exists(constants.CONFIG.STORAGE.CERT_DIR + 'peertube.key.pem', function (exists) {
+  const certPath = pathUtils.join(constants.CONFIG.STORAGE.CERT_DIR, constants.PRIVATE_CERT_NAME)
+  fs.exists(certPath, function (exists) {
     return callback(exists)
   })
 }
@@ -113,24 +128,27 @@ function createCerts (callback) {
 
     logger.info('Generating a RSA key...')
 
-    let options = {
-      'out': constants.CONFIG.STORAGE.CERT_DIR + 'peertube.key.pem',
+    const privateCertPath = pathUtils.join(constants.CONFIG.STORAGE.CERT_DIR, constants.PRIVATE_CERT_NAME)
+    const genRsaOptions = {
+      'out': privateCertPath,
       '2048': false
     }
-    openssl.exec('genrsa', options, function (err) {
+    openssl.exec('genrsa', genRsaOptions, function (err) {
       if (err) {
         logger.error('Cannot create private key on this pod.')
         return callback(err)
       }
+
       logger.info('RSA key generated.')
+      logger.info('Managing public key...')
 
-      options = {
-        'in': constants.CONFIG.STORAGE.CERT_DIR + 'peertube.key.pem',
+      const publicCertPath = pathUtils.join(constants.CONFIG.STORAGE.CERT_DIR, 'peertube.pub')
+      const rsaOptions = {
+        'in': privateCertPath,
         'pubout': true,
-        'out': constants.CONFIG.STORAGE.CERT_DIR + 'peertube.pub'
+        'out': publicCertPath
       }
-      logger.info('Manage public key...')
-      openssl.exec('rsa', options, function (err) {
+      openssl.exec('rsa', rsaOptions, function (err) {
         if (err) {
           logger.error('Cannot create public key on this pod.')
           return callback(err)
index 0c080ccd2c6713bdf97b832801f3a75ea978c707..90adbf406269db8e219e935ff1993d299e723bd1 100644 (file)
@@ -134,6 +134,8 @@ const REMOTE_SCHEME = {
 
 // ---------------------------------------------------------------------------
 
+const PRIVATE_CERT_NAME = 'peertube.key.pem'
+const PUBLIC_CERT_NAME = 'peertube.pub'
 const SIGNATURE_ALGORITHM = 'RSA-SHA256'
 const SIGNATURE_ENCODING = 'hex'
 
@@ -189,13 +191,15 @@ module.exports = {
   PAGINATION_COUNT_DEFAULT,
   PODS_SCORE,
   PREVIEWS_SIZE,
+  PRIVATE_CERT_NAME,
+  PUBLIC_CERT_NAME,
   REMOTE_SCHEME,
-  REQUEST_ENDPOINTS,
   REQUEST_ENDPOINT_ACTIONS,
+  REQUEST_ENDPOINTS,
   REQUESTS_IN_PARALLEL,
   REQUESTS_INTERVAL,
-  REQUESTS_LIMIT_PODS,
   REQUESTS_LIMIT_PER_POD,
+  REQUESTS_LIMIT_PODS,
   RETRY_REQUESTS,
   SEARCHABLE_COLUMNS,
   SIGNATURE_ALGORITHM,
index 1e8037c3748652ea1435a6bf833a2dc7b09de00b..2ea837c9997b5463b5eda6807d0f1ca86b2194bb 100644 (file)
@@ -3,13 +3,13 @@
 const each = require('async/each')
 const eachLimit = require('async/eachLimit')
 const eachSeries = require('async/eachSeries')
-const fs = require('fs')
 const request = require('request')
 const waterfall = require('async/waterfall')
 
 const constants = require('../initializers/constants')
 const db = require('../initializers/database')
 const logger = require('../helpers/logger')
+const peertubeCrypto = require('../helpers/peertube-crypto')
 const requests = require('../helpers/requests')
 
 const ENDPOINT_ACTIONS = constants.REQUEST_ENDPOINT_ACTIONS[constants.REQUEST_ENDPOINTS.VIDEOS]
@@ -19,7 +19,6 @@ const friends = {
   updateVideoToFriends,
   reportAbuseVideoToFriend,
   hasFriends,
-  getMyCertificate,
   makeFriends,
   quitFriends,
   removeVideoToFriends,
@@ -74,15 +73,11 @@ function hasFriends (callback) {
   })
 }
 
-function getMyCertificate (callback) {
-  fs.readFile(constants.CONFIG.STORAGE.CERT_DIR + 'peertube.pub', 'utf8', callback)
-}
-
 function makeFriends (hosts, callback) {
   const podsScore = {}
 
   logger.info('Make friends!')
-  getMyCertificate(function (err, cert) {
+  peertubeCrypto.getMyPublicCert(function (err, cert) {
     if (err) {
       logger.error('Cannot read public cert.')
       return callback(err)
index 17eff64288ab1d4916fcd7105bf1c267b4389003..742150d69e3f59fd58f996978f715c7c2c6ca882 100644 (file)
@@ -157,8 +157,7 @@ function beforeCreate (video, options, next) {
     const videoPath = pathUtils.join(constants.CONFIG.STORAGE.VIDEOS_DIR, video.getVideoFilename())
 
     tasks.push(
-      // TODO: refractoring
-      function (callback) {
+      function createVideoTorrent (callback) {
         const options = {
           announceList: [
             [ constants.CONFIG.WEBSERVER.WS + '://' + constants.CONFIG.WEBSERVER.HOSTNAME + ':' + constants.CONFIG.WEBSERVER.PORT + '/tracker/socket' ]
@@ -171,7 +170,8 @@ function beforeCreate (video, options, next) {
         createTorrent(videoPath, options, function (err, torrent) {
           if (err) return callback(err)
 
-          fs.writeFile(constants.CONFIG.STORAGE.TORRENTS_DIR + video.getTorrentName(), torrent, function (err) {
+          const filePath = pathUtils.join(constants.CONFIG.STORAGE.TORRENTS_DIR, video.getTorrentName())
+          fs.writeFile(filePath, torrent, function (err) {
             if (err) return callback(err)
 
             const parsedTorrent = parseTorrent(torrent)
@@ -180,10 +180,12 @@ function beforeCreate (video, options, next) {
           })
         })
       },
-      function (callback) {
+
+      function createVideoThumbnail (callback) {
         createThumbnail(video, videoPath, callback)
       },
-      function (callback) {
+
+      function createVIdeoPreview (callback) {
         createPreview(video, videoPath, callback)
       }
     )
@@ -205,19 +207,19 @@ function afterDestroy (video, options, next) {
 
   if (video.isOwned()) {
     tasks.push(
-      function (callback) {
+      function removeVideoFile (callback) {
         removeFile(video, callback)
       },
 
-      function (callback) {
+      function removeVideoTorrent (callback) {
         removeTorrent(video, callback)
       },
 
-      function (callback) {
+      function removeVideoPreview (callback) {
         removePreview(video, callback)
       },
 
-      function (callback) {
+      function removeVideoToFriends (callback) {
         const params = {
           remoteId: video.id
         }
@@ -395,7 +397,7 @@ function generateThumbnailFromData (video, thumbnailData, callback) {
   // Creating the thumbnail for a remote video
 
   const thumbnailName = video.getThumbnailName()
-  const thumbnailPath = constants.CONFIG.STORAGE.THUMBNAILS_DIR + thumbnailName
+  const thumbnailPath = pathUtils.join(constants.CONFIG.STORAGE.THUMBNAILS_DIR, thumbnailName)
   fs.writeFile(thumbnailPath, Buffer.from(thumbnailData, 'binary'), function (err) {
     if (err) return callback(err)
 
@@ -596,15 +598,18 @@ function searchAndPopulateAuthorAndPodAndTags (value, field, start, count, sort,
 // ---------------------------------------------------------------------------
 
 function removeThumbnail (video, callback) {
-  fs.unlink(constants.CONFIG.STORAGE.THUMBNAILS_DIR + video.getThumbnailName(), callback)
+  const thumbnailPath = pathUtils.join(constants.CONFIG.STORAGE.THUMBNAILS_DIR, video.getThumbnailName())
+  fs.unlink(thumbnailPath, callback)
 }
 
 function removeFile (video, callback) {
-  fs.unlink(constants.CONFIG.STORAGE.VIDEOS_DIR + video.getVideoFilename(), callback)
+  const filePath = pathUtils.join(constants.CONFIG.STORAGE.VIDEOS_DIR, video.getVideoFilename())
+  fs.unlink(filePath, callback)
 }
 
 function removeTorrent (video, callback) {
-  fs.unlink(constants.CONFIG.STORAGE.TORRENTS_DIR + video.getTorrentName(), callback)
+  const torrenPath = pathUtils.join(constants.CONFIG.STORAGE.TORRENTS_DIR, video.getTorrentName())
+  fs.unlink(torrenPath, callback)
 }
 
 function removePreview (video, callback) {
index 2db60448f0affdf66b4aaa2fcc2d195d1c62c4a7..83a2b44112ed06d6e46fe48b9cf7e058a2ef6e2e 100644 (file)
@@ -251,12 +251,12 @@ describe('Test a single pod', function () {
     videosUtils.removeVideo(server.url, server.accessToken, videoId, function (err) {
       if (err) throw err
 
-      fs.readdir(pathUtils.join(__dirname, '../../../test1/videos/'), function (err, files) {
+      fs.readdir(pathUtils.join(__dirname, '..', '..', '..', 'test1/videos/'), function (err, files) {
         if (err) throw err
 
         expect(files.length).to.equal(0)
 
-        fs.readdir(pathUtils.join(__dirname, '../../../test1/thumbnails/'), function (err, files) {
+        fs.readdir(pathUtils.join(__dirname, '..', '..', '..', 'test1/thumbnails/'), function (err, files) {
           if (err) throw err
 
           expect(files.length).to.equal(0)
index 1946ef49a6304a5399f4845dfd3de7aaf522a69f..c07db4c40825bed6e4bf2b99081ad9cc16ee2095 100644 (file)
@@ -81,7 +81,7 @@ function runServer (number, callback) {
     detached: true
   }
 
-  server.app = fork(pathUtils.join(__dirname, '../../../server.js'), [], options)
+  server.app = fork(pathUtils.join(__dirname, '..', '..', '..', 'server.js'), [], options)
   server.app.stdout.on('data', function onStdout (data) {
     let dontContinue = false