diff options
Diffstat (limited to 'server/controllers/download.ts')
-rw-r--r-- | server/controllers/download.ts | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/server/controllers/download.ts b/server/controllers/download.ts index 9a8194c5c..4293a32e2 100644 --- a/server/controllers/download.ts +++ b/server/controllers/download.ts | |||
@@ -41,7 +41,12 @@ export { | |||
41 | 41 | ||
42 | async function downloadTorrent (req: express.Request, res: express.Response) { | 42 | async function downloadTorrent (req: express.Request, res: express.Response) { |
43 | const result = await VideosTorrentCache.Instance.getFilePath(req.params.filename) | 43 | const result = await VideosTorrentCache.Instance.getFilePath(req.params.filename) |
44 | if (!result) return res.sendStatus(HttpStatusCode.NOT_FOUND_404) | 44 | if (!result) { |
45 | return res.fail({ | ||
46 | status: HttpStatusCode.NOT_FOUND_404, | ||
47 | message: 'Torrent file not found' | ||
48 | }) | ||
49 | } | ||
45 | 50 | ||
46 | const allowParameters = { torrentPath: result.path, downloadName: result.downloadName } | 51 | const allowParameters = { torrentPath: result.path, downloadName: result.downloadName } |
47 | 52 | ||
@@ -60,7 +65,12 @@ async function downloadVideoFile (req: express.Request, res: express.Response) { | |||
60 | const video = res.locals.videoAll | 65 | const video = res.locals.videoAll |
61 | 66 | ||
62 | const videoFile = getVideoFile(req, video.VideoFiles) | 67 | const videoFile = getVideoFile(req, video.VideoFiles) |
63 | if (!videoFile) return res.status(HttpStatusCode.NOT_FOUND_404).end() | 68 | if (!videoFile) { |
69 | return res.fail({ | ||
70 | status: HttpStatusCode.NOT_FOUND_404, | ||
71 | message: 'Video file not found' | ||
72 | }) | ||
73 | } | ||
64 | 74 | ||
65 | const allowParameters = { video, videoFile } | 75 | const allowParameters = { video, videoFile } |
66 | 76 | ||
@@ -81,7 +91,12 @@ async function downloadHLSVideoFile (req: express.Request, res: express.Response | |||
81 | if (!streamingPlaylist) return res.status(HttpStatusCode.NOT_FOUND_404).end | 91 | if (!streamingPlaylist) return res.status(HttpStatusCode.NOT_FOUND_404).end |
82 | 92 | ||
83 | const videoFile = getVideoFile(req, streamingPlaylist.VideoFiles) | 93 | const videoFile = getVideoFile(req, streamingPlaylist.VideoFiles) |
84 | if (!videoFile) return res.status(HttpStatusCode.NOT_FOUND_404).end() | 94 | if (!videoFile) { |
95 | return res.fail({ | ||
96 | status: HttpStatusCode.NOT_FOUND_404, | ||
97 | message: 'Video file not found' | ||
98 | }) | ||
99 | } | ||
85 | 100 | ||
86 | const allowParameters = { video, streamingPlaylist, videoFile } | 101 | const allowParameters = { video, streamingPlaylist, videoFile } |
87 | 102 | ||
@@ -131,9 +146,11 @@ function isVideoDownloadAllowed (_object: { | |||
131 | function checkAllowResult (res: express.Response, allowParameters: any, result?: AllowedResult) { | 146 | function checkAllowResult (res: express.Response, allowParameters: any, result?: AllowedResult) { |
132 | if (!result || result.allowed !== true) { | 147 | if (!result || result.allowed !== true) { |
133 | logger.info('Download is not allowed.', { result, allowParameters }) | 148 | logger.info('Download is not allowed.', { result, allowParameters }) |
134 | res.status(HttpStatusCode.FORBIDDEN_403) | ||
135 | .json({ error: result?.errorMessage || 'Refused download' }) | ||
136 | 149 | ||
150 | res.fail({ | ||
151 | status: HttpStatusCode.FORBIDDEN_403, | ||
152 | message: result?.errorMessage || 'Refused download' | ||
153 | }) | ||
137 | return false | 154 | return false |
138 | } | 155 | } |
139 | 156 | ||