From 2c6474fcb77c0c2e138b36026500515d128ec9a6 Mon Sep 17 00:00:00 2001 From: OldHawk Date: Sat, 15 Jul 2017 00:06:53 +0800 Subject: [PATCH] feat(torrent): encodeURI & decodeURI downloaded file name --- config/env/torrents.js | 2 +- .../forums/server/controllers/forums.server.controller.js | 2 +- .../controllers/admin/announce-edit.client.controller.js | 2 +- .../client/services/torrent-download.client.service.js | 2 +- .../server/controllers/subtitles.server.controller.js | 2 +- .../server/controllers/torrents.server.controller.js | 5 +++-- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/config/env/torrents.js b/config/env/torrents.js index c78ae45d..15463ee9 100644 --- a/config/env/torrents.js +++ b/config/env/torrents.js @@ -18,7 +18,7 @@ module.exports = { admin: 'admin@chd.im', base_url: 'http://chd.im:3000', client_black_list_url: 'http://chd.im:3000/client_black_list', - private_torrent_cms: true + private_torrent_cms: false }, sign: { open_signin: true, diff --git a/modules/forums/server/controllers/forums.server.controller.js b/modules/forums/server/controllers/forums.server.controller.js index 9d21e024..c23d7531 100644 --- a/modules/forums/server/controllers/forums.server.controller.js +++ b/modules/forums/server/controllers/forums.server.controller.js @@ -654,7 +654,7 @@ exports.attachDownload = function (req, res) { try { //res.set('Content-Type', 'application/x-bittorrent'); - res.set('Content-Disposition', 'attachment; filename=' + req.params.filename); + res.set('Content-Disposition', 'attachment; filename=' + encodeURI(req.params.filename)); res.set('Content-Length', stat.size); fs.createReadStream(filePath).pipe(res); diff --git a/modules/torrents/client/controllers/admin/announce-edit.client.controller.js b/modules/torrents/client/controllers/admin/announce-edit.client.controller.js index a39d40d4..5b3c011e 100644 --- a/modules/torrents/client/controllers/admin/announce-edit.client.controller.js +++ b/modules/torrents/client/controllers/admin/announce-edit.client.controller.js @@ -60,7 +60,7 @@ vm.tFile = undefined; var contentDisposition = res.headers('Content-Disposition'); - var fileName = contentDisposition.substr(contentDisposition.indexOf('filename=') + 9); + var fileName = decodeURI(contentDisposition.substr(contentDisposition.indexOf('filename=') + 9)); FileSaver.saveAs(res.data, fileName); } diff --git a/modules/torrents/client/services/torrent-download.client.service.js b/modules/torrents/client/services/torrent-download.client.service.js index 5c257887..b49da845 100644 --- a/modules/torrents/client/services/torrent-download.client.service.js +++ b/modules/torrents/client/services/torrent-download.client.service.js @@ -21,7 +21,7 @@ responseType: 'blob' }).then(function successCallback(response) { var contentDisposition = response.headers('Content-Disposition'); - var fileName = contentDisposition.substr(contentDisposition.indexOf('filename=') + 9); + var fileName = decodeURI(contentDisposition.substr(contentDisposition.indexOf('filename=') + 9)); FileSaver.saveAs(response.data, fileName); successcb(response.status); diff --git a/modules/torrents/server/controllers/subtitles.server.controller.js b/modules/torrents/server/controllers/subtitles.server.controller.js index aa69d271..cafb938e 100644 --- a/modules/torrents/server/controllers/subtitles.server.controller.js +++ b/modules/torrents/server/controllers/subtitles.server.controller.js @@ -156,7 +156,7 @@ exports.download = function (req, res) { try { //res.set('Content-Type', 'application/x-bittorrent'); - res.set('Content-Disposition', 'attachment; filename=' + r.subtitle_filename); + res.set('Content-Disposition', 'attachment; filename=' + encodeURI(r.subtitle_filename)); res.set('Content-Length', stat.size); fs.createReadStream(filePath).pipe(res); diff --git a/modules/torrents/server/controllers/torrents.server.controller.js b/modules/torrents/server/controllers/torrents.server.controller.js index 44908bce..d0df05e6 100644 --- a/modules/torrents/server/controllers/torrents.server.controller.js +++ b/modules/torrents/server/controllers/torrents.server.controller.js @@ -221,7 +221,7 @@ exports.announceEdit = function (req, res) { getTorrentFileData(filePath) .then(function () { res.set('Content-Type', 'application/x-bittorrent'); - res.set('Content-Disposition', 'attachment; filename=' + req.file.filename); + res.set('Content-Disposition', 'attachment; filename=' + encodeURI(req.file.filename)); res.set('Content-Length', stat.size); res.send(benc.encode(torrent_data)); @@ -308,12 +308,13 @@ exports.download = function (req, res) { getTorrentFileData(filePath) .then(function () { res.set('Content-Type', 'application/x-bittorrent'); - res.set('Content-Disposition', 'attachment; filename=' + config.meanTorrentConfig.announce.announce_prefix + req.torrent.torrent_filename); + res.set('Content-Disposition', 'attachment; filename=' + config.meanTorrentConfig.announce.announce_prefix + encodeURI(req.torrent.torrent_filename)); res.set('Content-Length', stat.size); res.send(benc.encode(torrent_data)); }) .catch(function (err) { + console.log(err); res.status(422).send(err); }); } else {