X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server.ts;h=97dffe7567e6a9758ca61f1c81dd4f83374248aa;hb=ff0497fee85db13e81c90224d75e491faea0d0e3;hp=f844c9564b5dacc37ac58cbb8f7d323816650891;hpb=12c1e38df2fde0efbf948fa80e2afc4e67f0e8c9;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server.ts b/server.ts index f844c9564..97dffe756 100644 --- a/server.ts +++ b/server.ts @@ -44,7 +44,7 @@ checkFFmpeg(CONFIG) checkNodeVersion() -import { checkConfig, checkActivityPubUrls } from './server/initializers/checker-after-init' +import { checkConfig, checkActivityPubUrls, checkFFmpegVersion } from './server/initializers/checker-after-init' const errorMessage = checkConfig() if (errorMessage !== null) { @@ -59,11 +59,11 @@ import { baseCSP } from './server/middlewares/csp' if (CONFIG.CSP.ENABLED) { app.use(baseCSP) - app.use(helmet({ - frameguard: { - action: 'deny' // we only allow it for /videos/embed, see server/controllers/client.ts - }, - hsts: false +} + +if (CONFIG.SECURITY.FRAMEGUARD.ENABLED) { + app.use(helmet.frameguard({ + action: 'deny' // we only allow it for /videos/embed, see server/controllers/client.ts })) } @@ -103,7 +103,8 @@ import { webfingerRouter, trackerRouter, createWebsocketTrackerServer, - botsRouter + botsRouter, + downloadRouter } from './server/controllers' import { advertiseDoNotTrack } from './server/middlewares/dnt' import { Redis } from './server/lib/redis' @@ -115,14 +116,17 @@ import { YoutubeDlUpdateScheduler } from './server/lib/schedulers/youtube-dl-upd import { VideosRedundancyScheduler } from './server/lib/schedulers/videos-redundancy-scheduler' import { RemoveOldHistoryScheduler } from './server/lib/schedulers/remove-old-history-scheduler' import { AutoFollowIndexInstances } from './server/lib/schedulers/auto-follow-index-instances' +import { RemoveDanglingResumableUploadsScheduler } from './server/lib/schedulers/remove-dangling-resumable-uploads-scheduler' import { isHTTPSignatureDigestValid } from './server/helpers/peertube-crypto' import { PeerTubeSocket } from './server/lib/peertube-socket' import { updateStreamingPlaylistsInfohashesIfNeeded } from './server/lib/hls' import { PluginsCheckScheduler } from './server/lib/schedulers/plugins-check-scheduler' +import { PeerTubeVersionCheckScheduler } from './server/lib/schedulers/peertube-version-check-scheduler' import { Hooks } from './server/lib/plugins/hooks' import { PluginManager } from './server/lib/plugins/plugin-manager' import { LiveManager } from './server/lib/live-manager' import { HttpStatusCode } from './shared/core-utils/miscs/http-error-codes' +import { VideosTorrentCache } from '@server/lib/files-cache/videos-torrent-cache' // ----------- Command line ----------- @@ -158,10 +162,10 @@ morgan.token('user-agent', (req: express.Request) => { return req.get('user-agent') }) app.use(morgan('combined', { - stream: { write: logger.info.bind(logger) }, - skip: function (req, res) { - return (req.path === '/api/v1/ping' && CONFIG.LOG.LOG_PING_REQUESTS === false) + stream: { + write: (str: string) => logger.info(str, { tags: [ 'http' ] }) }, + skip: req => CONFIG.LOG.LOG_PING_REQUESTS === false && req.originalUrl === '/api/v1/ping' })) // For body requests @@ -204,10 +208,12 @@ app.use('/', botsRouter) // Static files app.use('/', staticRouter) +app.use('/', downloadRouter) app.use('/', lazyStaticRouter) // Client files, last valid routes! -if (cli.client) app.use('/', clientsRouter) +const cliOptions = cli.opts() +if (cliOptions.client) app.use('/', clientsRouter) // ----------- Errors ----------- @@ -248,6 +254,9 @@ async function startApplication () { process.exit(-1) }) + checkFFmpegVersion() + .catch(err => logger.error('Cannot check ffmpeg version', { err })) + // Email initialization Emailer.Instance.init() @@ -259,6 +268,7 @@ async function startApplication () { // Caches initializations VideosPreviewCache.Instance.init(CONFIG.CACHE.PREVIEWS.SIZE, FILES_CACHE.PREVIEWS.MAX_AGE) VideosCaptionCache.Instance.init(CONFIG.CACHE.VIDEO_CAPTIONS.SIZE, FILES_CACHE.VIDEO_CAPTIONS.MAX_AGE) + VideosTorrentCache.Instance.init(CONFIG.CACHE.TORRENTS.SIZE, FILES_CACHE.TORRENTS.MAX_AGE) // Enable Schedulers ActorFollowScheduler.Instance.enable() @@ -269,7 +279,9 @@ async function startApplication () { RemoveOldHistoryScheduler.Instance.enable() RemoveOldViewsScheduler.Instance.enable() PluginsCheckScheduler.Instance.enable() + PeerTubeVersionCheckScheduler.Instance.enable() AutoFollowIndexInstances.Instance.enable() + RemoveDanglingResumableUploadsScheduler.Instance.enable() // Redis initialization Redis.Instance.init() @@ -279,7 +291,7 @@ async function startApplication () { updateStreamingPlaylistsInfohashesIfNeeded() .catch(err => logger.error('Cannot update streaming playlist infohashes.', { err })) - if (cli.plugins) await PluginManager.Instance.registerPluginsAndThemes() + if (cliOptions.plugins) await PluginManager.Instance.registerPluginsAndThemes() LiveManager.Instance.init() if (CONFIG.LIVE.ENABLED) LiveManager.Instance.run()