From 36f542b2206542d9ecfd5a376f3a8399dd0e3eef Mon Sep 17 00:00:00 2001 From: OldHawk Date: Sun, 2 Apr 2017 11:25:07 +0800 Subject: [PATCH] check the uploaded torrent file info_has already exists? --- .../controllers/torrents.server.controller.js | 44 +++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/modules/torrents/server/controllers/torrents.server.controller.js b/modules/torrents/server/controllers/torrents.server.controller.js index 18abc638..b8dfba0f 100644 --- a/modules/torrents/server/controllers/torrents.server.controller.js +++ b/modules/torrents/server/controllers/torrents.server.controller.js @@ -9,10 +9,11 @@ var path = require('path'), errorHandler = require(path.resolve('./modules/core/server/controllers/errors.server.controller')), multer = require('multer'), User = mongoose.model('User'), + Torrent = mongoose.model('Torrent'), fs = require('fs'), nt = require('nt'), validator = require('validator'), - tmdb = require('moviedb')('7888f0042a366f63289ff571b68b7ce0'); + tmdb = require('moviedb')(config.tmdb_api.key); /** * Create an article @@ -59,6 +60,7 @@ exports.upload = function (req, res) { if (user) { uploadFile() .then(checkAnnounce) + .then(checkHash) .then(function () { res.status(200).send(info_hash); }) @@ -103,12 +105,12 @@ exports.upload = function (req, res) { if (!config.announce.open_tracker) { if (torrent.metadata.announce !== config.announce.url) { console.log(torrent.metadata.announce); - message = 'The private tracker announce url must be: ' + config.announce.url; + message = 'ANNOUNCE_URL_ERROR'; fs.unlink(newfile, function (unlinkError) { if (unlinkError) { console.log(unlinkError); - message = 'Error occurred while deleting old profile picture'; + message = 'Error occurred while deleting torrent file'; reject(message); } }); @@ -122,5 +124,41 @@ exports.upload = function (req, res) { }); } + function checkHash() { + return new Promise(function (resolve, reject) { + var newfile = config.uploads.torrent.file.dest + req.file.filename; + var message = ''; + + if (info_hash === '') { + message = 'INFO_HASH_IS_EMPTY'; + reject(message); + } else { + Torrent.findOne({ + info_hash: info_hash + }).exec(function (err, torr) { + if (err) { + reject(err); + } else { + if (torr) { + message = 'INFO_HASH_ALREADY_EXISTS'; + + fs.unlink(newfile, function (unlinkError) { + if (unlinkError) { + console.log(unlinkError); + message = 'Error occurred while deleting torrent file'; + reject(message); + } + }); + + reject(message); + } else { + resolve(); + } + } + }); + } + }); + } + };