X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server.ts;h=8f280f6c2a07ee3c69b2d958d3a4db42b86a023f;hb=bc4c766aca72c2b09b555895452b9b3e25cd85fe;hp=2e9ed31d2c1454a225133a278d7ef7f539409637;hpb=3fd3ab2d34d512b160a5e6084d7609be7b4f4452;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server.ts b/server.ts index 2e9ed31d2..8f280f6c2 100644 --- a/server.ts +++ b/server.ts @@ -1,3 +1,6 @@ +// FIXME: https://github.com/nodejs/node/pull/16853 +require('tls').DEFAULT_ECDH_CURVE = 'auto' + import { isTestInstance } from './server/helpers/core-utils' if (isTestInstance()) { @@ -40,14 +43,23 @@ if (errorMessage !== null) { // ----------- Database ----------- // Do not use barrels because we don't want to load all modules here (we need to initialize database first) import { logger } from './server/helpers/logger' + // Initialize database and models -import { initDatabase } from './server/initializers/database' -initDatabase(false).then(() => onDatabaseInitDone()) +import { initDatabaseModels } from './server/initializers/database' +import { migrate } from './server/initializers/migrator' +migrate() + .then(() => initDatabaseModels(false)) + .then(() => onDatabaseInitDone()) // ----------- PeerTube modules ----------- -import { migrate, installApplication } from './server/initializers' -import { activitypubHttpJobScheduler, transcodingJobScheduler, VideosPreviewCache } from './server/lib' +import { installApplication } from './server/initializers' +import { Emailer } from './server/lib/emailer' +import { JobQueue } from './server/lib/job-queue' +import { VideosPreviewCache } from './server/lib/cache' import { apiRouter, clientsRouter, staticRouter, servicesRouter, webfingerRouter, activityPubRouter } from './server/controllers' +import { Redis } from './server/lib/redis' +import { BadActorFollowScheduler } from './server/lib/schedulers/bad-actor-follow-scheduler' +import { RemoveOldJobsScheduler } from './server/lib/schedulers/remove-old-jobs-scheduler' // ----------- Command line ----------- @@ -73,7 +85,7 @@ if (isTestInstance()) { // For the logger app.use(morgan('combined', { - stream: { write: logger.info } + stream: { write: logger.info.bind(logger) } })) // For body requests app.use(bodyParser.json({ @@ -104,6 +116,7 @@ const wss = new WebSocketServer({ server: server, path: '/tracker/socket' }) wss.on('connection', function (ws) { trackerServer.onWebSocketConnection(ws) }) +wss.on('error', err => logger.error('Error in websocket server.', err)) const onHttpRequest = trackerServer.onHttpRequest.bind(trackerServer) app.get('/tracker/announce', (req, res) => onHttpRequest(req, res, { action: 'announce' })) @@ -146,7 +159,7 @@ app.use(function (req, res, next) { }) app.use(function (err, req, res, next) { - logger.error(err) + logger.error(err, err) res.sendStatus(err.status || 500) }) @@ -154,15 +167,25 @@ app.use(function (err, req, res, next) { function onDatabaseInitDone () { const port = CONFIG.LISTEN.PORT - // Run the migration scripts if needed - migrate() - .then(() => installApplication()) + + installApplication() .then(() => { // ----------- Make the server listening ----------- server.listen(port, () => { + // Emailer initialization and then job queue initialization + Emailer.Instance.init() + Emailer.Instance.checkConnectionOrDie() + .then(() => JobQueue.Instance.init()) + + // Caches initializations VideosPreviewCache.Instance.init(CONFIG.CACHE.PREVIEWS.SIZE) - activitypubHttpJobScheduler.activate() - transcodingJobScheduler.activate() + + // Enable Schedulers + BadActorFollowScheduler.Instance.enable() + RemoveOldJobsScheduler.Instance.enable() + + // Redis initialization + Redis.Instance.init() logger.info('Server listening on port %d', port) logger.info('Web server: %s', CONFIG.WEBSERVER.URL)