1 import cors from 'cors'
2 import express from 'express'
3 import { OBJECT_STORAGE_PROXY_PATHS } from '@server/initializers/constants'
4 import { proxifyHLS, proxifyWebTorrentFile } from '@server/lib/object-storage'
7 ensureCanAccessPrivateVideoHLSFiles,
8 ensureCanAccessVideoPrivateWebTorrentFiles,
9 ensurePrivateObjectStorageProxyIsEnabled,
11 } from '@server/middlewares'
12 import { doReinjectVideoFileToken } from './shared/m3u8-playlist'
14 const objectStorageProxyRouter = express.Router()
16 objectStorageProxyRouter.use(cors())
18 objectStorageProxyRouter.get(OBJECT_STORAGE_PROXY_PATHS.PRIVATE_WEBSEED + ':filename',
19 ensurePrivateObjectStorageProxyIsEnabled,
21 asyncMiddleware(ensureCanAccessVideoPrivateWebTorrentFiles),
22 asyncMiddleware(proxifyWebTorrentController)
25 objectStorageProxyRouter.get(OBJECT_STORAGE_PROXY_PATHS.STREAMING_PLAYLISTS.PRIVATE_HLS + ':videoUUID/:filename',
26 ensurePrivateObjectStorageProxyIsEnabled,
28 asyncMiddleware(ensureCanAccessPrivateVideoHLSFiles),
29 asyncMiddleware(proxifyHLSController)
32 // ---------------------------------------------------------------------------
35 objectStorageProxyRouter
38 function proxifyWebTorrentController (req: express.Request, res: express.Response) {
39 const filename = req.params.filename
41 return proxifyWebTorrentFile({ req, res, filename })
44 function proxifyHLSController (req: express.Request, res: express.Response) {
45 const playlist = res.locals.videoStreamingPlaylist
46 const video = res.locals.onlyVideo
47 const filename = req.params.filename
49 const reinjectVideoFileToken = filename.endsWith('.m3u8') && doReinjectVideoFileToken(req)
57 reinjectVideoFileToken