X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server.ts;h=62219f7df22d0a5a8c21dc094164d1cad6ac2bed;hb=8e10cf1a5a438a00e5f7e0691cb830769867cffc;hp=72bb11e747bc8ccf35e3cf4d2511852af0bb46d5;hpb=d8755eed1e452d2efbfc983af0e9d228d152bf6b;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server.ts b/server.ts index 72bb11e74..62219f7df 100644 --- a/server.ts +++ b/server.ts @@ -46,8 +46,8 @@ db.init(false).then(() => onDatabaseInitDone()) // ----------- PeerTube modules ----------- import { migrate, installApplication } from './server/initializers' -import { JobScheduler, activateSchedulers, VideosPreviewCache } from './server/lib' -import { apiRouter, clientsRouter, staticRouter, servicesRouter } from './server/controllers' +import { httpRequestJobScheduler, transcodingJobScheduler, VideosPreviewCache } from './server/lib' +import { apiRouter, clientsRouter, staticRouter, servicesRouter, webfingerRouter, activityPubRouter } from './server/controllers' // ----------- Command line ----------- @@ -79,26 +79,6 @@ app.use(morgan('combined', { app.use(bodyParser.json({ limit: '500kb' })) app.use(bodyParser.urlencoded({ extended: false })) -// ----------- Views, routes and static files ----------- - -// API -const apiRoute = '/api/' + API_VERSION -app.use(apiRoute, apiRouter) - -// Services (oembed...) -app.use('/services', servicesRouter) - -// Client files -app.use('/', clientsRouter) - -// Static files -app.use('/', staticRouter) - -// Always serve index client page (the client is a single page application, let it handle routing) -app.use('/*', function (req, res, next) { - res.sendFile(path.join(__dirname, '../client/dist/index.html')) -}) - // ----------- Tracker ----------- const trackerServer = new TrackerServer({ @@ -122,6 +102,33 @@ wss.on('connection', function (ws) { trackerServer.onWebSocketConnection(ws) }) +const onHttpRequest = trackerServer.onHttpRequest.bind(trackerServer) +app.get('/tracker/announce', (req, res) => onHttpRequest(req, res, { action: 'announce' })) +app.get('/tracker/scrape', (req, res) => onHttpRequest(req, res, { action: 'scrape' })) + +// ----------- Views, routes and static files ----------- + +// API +const apiRoute = '/api/' + API_VERSION +app.use(apiRoute, apiRouter) + +// Services (oembed...) +app.use('/services', servicesRouter) + +app.use('/', webfingerRouter) +app.use('/', activityPubRouter) + +// Client files +app.use('/', clientsRouter) + +// Static files +app.use('/', staticRouter) + +// Always serve index client page (the client is a single page application, let it handle routing) +app.use('/*', function (req, res) { + res.sendFile(path.join(__dirname, '../client/dist/index.html')) +}) + // ----------- Errors ----------- // Catch 404 and forward to error handler @@ -142,19 +149,13 @@ function onDatabaseInitDone () { const port = CONFIG.LISTEN.PORT // Run the migration scripts if needed migrate() - .then(() => { - return installApplication() - }) + .then(() => installApplication()) .then(() => { // ----------- Make the server listening ----------- - server.listen(port, function () { - // Activate the communication with friends - activateSchedulers() - - // Activate job scheduler - JobScheduler.Instance.activate() - + server.listen(port, () => { VideosPreviewCache.Instance.init(CONFIG.CACHE.PREVIEWS.SIZE) + httpRequestJobScheduler.activate() + transcodingJobScheduler.activate() logger.info('Server listening on port %d', port) logger.info('Web server: %s', CONFIG.WEBSERVER.URL)