X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fstatic.ts;h=a7b28704ca4c2569bb33c31980276bb1db3e72d7;hb=454c20fa7cdb05eba7f1be3c83389b54807af0b3;hp=271b788f6688885301e972ba94b2937e09c072cc;hpb=2ad9dcda240ee843c5e4a5b98cc94f7b2aab2c89;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/static.ts b/server/controllers/static.ts index 271b788f6..a7b28704c 100644 --- a/server/controllers/static.ts +++ b/server/controllers/static.ts @@ -19,13 +19,16 @@ import { VideoCommentModel } from '../models/video/video-comment' import { HttpNodeinfoDiasporaSoftwareNsSchema20 } from '../../shared/models/nodeinfo' import { join } from 'path' import { root } from '../helpers/core-utils' +import { getEnabledResolutions } from '../lib/video-transcoding' import { CONFIG, isEmailEnabled } from '../initializers/config' import { getPreview, getVideoCaption } from './lazy-static' import { VideoStreamingPlaylistType } from '@shared/models/videos/video-streaming-playlist.type' -import { MVideoFile, MVideoFullLight } from '@server/typings/models' +import { MVideoFile, MVideoFullLight } from '@server/types/models' import { getTorrentFilePath, getVideoFilePath } from '@server/lib/video-paths' import { getThemeOrDefault } from '../lib/plugins/theme-utils' -import { getEnabledResolutions, getRegisteredPlugins, getRegisteredThemes } from '@server/controllers/api/config' +import { getRegisteredPlugins, getRegisteredThemes } from '@server/controllers/api/config' +import { HttpStatusCode } from '@shared/core-utils/miscs/http-error-codes' +import { serveIndexHTML } from '@server/lib/client-html' const staticRouter = express.Router() @@ -118,10 +121,15 @@ staticRouter.get('/robots.txt', } ) +staticRouter.all('/teapot', + getCup, + asyncMiddleware(serveIndexHTML) +) + // security.txt service staticRouter.get('/security.txt', (_, res: express.Response) => { - return res.redirect(301, '/.well-known/security.txt') + return res.redirect(HttpStatusCode.MOVED_PERMANENTLY_301, '/.well-known/security.txt') } ) @@ -199,7 +207,7 @@ export { async function generateNodeinfo (req: express.Request, res: express.Response) { const { totalVideos } = await VideoModel.getStats() const { totalLocalVideoComments } = await VideoCommentModel.getStats() - const { totalUsers } = await UserModel.getStats() + const { totalUsers, totalMonthlyActiveUsers, totalHalfYearActiveUsers } = await UserModel.getStats() let json = {} if (req.params.version && (req.params.version === '2.0')) { @@ -222,7 +230,9 @@ async function generateNodeinfo (req: express.Request, res: express.Response) { openRegistrations: CONFIG.SIGNUP.ENABLED, usage: { users: { - total: totalUsers + total: totalUsers, + activeMonth: totalMonthlyActiveUsers, + activeHalfyear: totalHalfYearActiveUsers }, localPosts: totalVideos, localComments: totalLocalVideoComments @@ -260,7 +270,14 @@ async function generateNodeinfo (req: express.Request, res: express.Response) { webtorrent: { enabled: CONFIG.TRANSCODING.WEBTORRENT.ENABLED }, - enabledResolutions: getEnabledResolutions() + enabledResolutions: getEnabledResolutions('vod') + }, + live: { + enabled: CONFIG.LIVE.ENABLED, + transcoding: { + enabled: CONFIG.LIVE.TRANSCODING.ENABLED, + enabledResolutions: getEnabledResolutions('live') + } }, import: { videos: { @@ -324,7 +341,7 @@ async function generateNodeinfo (req: express.Request, res: express.Response) { res.contentType('application/json; profile="http://nodeinfo.diaspora.software/ns/schema/2.0#"') } else { json = { error: 'Nodeinfo schema version not handled' } - res.status(404) + res.status(HttpStatusCode.NOT_FOUND_404) } return res.send(json).end() @@ -334,7 +351,7 @@ function downloadTorrent (req: express.Request, res: express.Response) { const video = res.locals.videoAll const videoFile = getVideoFile(req, video.VideoFiles) - if (!videoFile) return res.status(404).end() + if (!videoFile) return res.status(HttpStatusCode.NOT_FOUND_404).end() return res.download(getTorrentFilePath(video, videoFile), `${video.name}-${videoFile.resolution}p.torrent`) } @@ -343,10 +360,10 @@ function downloadHLSVideoFileTorrent (req: express.Request, res: express.Respons const video = res.locals.videoAll const playlist = getHLSPlaylist(video) - if (!playlist) return res.status(404).end + if (!playlist) return res.status(HttpStatusCode.NOT_FOUND_404).end const videoFile = getVideoFile(req, playlist.VideoFiles) - if (!videoFile) return res.status(404).end() + if (!videoFile) return res.status(HttpStatusCode.NOT_FOUND_404).end() return res.download(getTorrentFilePath(playlist, videoFile), `${video.name}-${videoFile.resolution}p-hls.torrent`) } @@ -355,7 +372,7 @@ function downloadVideoFile (req: express.Request, res: express.Response) { const video = res.locals.videoAll const videoFile = getVideoFile(req, video.VideoFiles) - if (!videoFile) return res.status(404).end() + if (!videoFile) return res.status(HttpStatusCode.NOT_FOUND_404).end() return res.download(getVideoFilePath(video, videoFile), `${video.name}-${videoFile.resolution}p${videoFile.extname}`) } @@ -363,10 +380,10 @@ function downloadVideoFile (req: express.Request, res: express.Response) { function downloadHLSVideoFile (req: express.Request, res: express.Response) { const video = res.locals.videoAll const playlist = getHLSPlaylist(video) - if (!playlist) return res.status(404).end + if (!playlist) return res.status(HttpStatusCode.NOT_FOUND_404).end const videoFile = getVideoFile(req, playlist.VideoFiles) - if (!videoFile) return res.status(404).end() + if (!videoFile) return res.status(HttpStatusCode.NOT_FOUND_404).end() const filename = `${video.name}-${videoFile.resolution}p-${playlist.getStringType()}${videoFile.extname}` return res.download(getVideoFilePath(playlist, videoFile), filename) @@ -383,3 +400,11 @@ function getHLSPlaylist (video: MVideoFullLight) { return Object.assign(playlist, { Video: video }) } + +function getCup (req: express.Request, res: express.Response, next: express.NextFunction) { + res.status(HttpStatusCode.I_AM_A_TEAPOT_418) + res.setHeader('Accept-Additions', 'Non-Dairy;1,Sugar;1') + res.setHeader('Safe', 'if-sepia-awake') + + return next() +}