X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=server.js;h=4b93a7adf939e0ca7245d407051b450e7ff2becf;hb=207fbab44d04ec92d748b6a32ec9a237029f820b;hp=fe0cb237addeb15951ed196ec40afcd8242e91e5;hpb=d148f3b9b180f43d63de84383938de0c9f51b583;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server.js b/server.js index fe0cb237a..4b93a7adf 100644 --- a/server.js +++ b/server.js @@ -2,15 +2,17 @@ 'use strict' // ----------- Node modules ----------- + var bodyParser = require('body-parser') var express = require('express') - var path = require('path') + var expressValidator = require('express-validator') + var http = require('http') var morgan = require('morgan') - var bodyParser = require('body-parser') - var multer = require('multer') + var path = require('path') var TrackerServer = require('bittorrent-tracker').Server var WebSocketServer = require('ws').Server + + // Create our main app var app = express() - var http = require('http') // ----------- Checker ----------- var checker = require('./src/checker') @@ -22,75 +24,63 @@ process.exit(0) } - checker.createDirectories() + checker.createDirectoriesIfNotExist() + + // ----------- Constants ----------- + var utils = require('./src/utils') + + global.API_VERSION = 'v1' + global.FRIEND_BASE_SCORE = utils.isTestInstance() ? 20 : 100 // ----------- PeerTube modules ----------- var config = require('config') + var customValidators = require('./src/customValidators') var logger = require('./src/logger') + var poolRequests = require('./src/poolRequests') var routes = require('./routes') - var api = require('./routes/api') - var utils = require('./src/utils') var videos = require('./src/videos') var webtorrent = require('./src/webTorrentNode') - var compression + // Get configurations var port = config.get('listen.port') - var uploads = config.get('storage.uploads') // ----------- Command line ----------- // ----------- App ----------- + + // For the logger app.use(morgan('combined', { stream: logger.stream })) + // For body requests app.use(bodyParser.json()) - app.use(multer({ dest: uploads })) app.use(bodyParser.urlencoded({ extended: false })) + // Validate some params for the API + app.use(expressValidator({ + customValidators: customValidators + })) // ----------- Views, routes and static files ----------- - if (process.env.NODE_ENV === 'production') { - // logger.log('Production : static files in dist/\n') - - // GZip compression - compression = require('compression') - app.use(compression()) + // Livereload + app.use(require('connect-livereload')({ + port: 35729 + })) - // A month - var maxAge = 86400000 * 30 + // Catch sefaults + require('segfault-handler').registerHandler() - // TODO - app.get(/^\/(index|(partials\/[a-z\/]+))?$/, function (req, res, next) { - if (req.url === '/') { - req.url = '/index' - } - - req.url += '.html' - next() - }) - - app.use(express.static(path.join(__dirname, '/dist/public'), { maxAge: maxAge })) - app.use(express.static(path.join(__dirname, '/dist/views'), { maxAge: maxAge })) - } else { - // Livereload - app.use(require('connect-livereload')({ - port: 35729 - })) - - require('segfault-handler').registerHandler() - - app.use(express.static(path.join(__dirname, '/public'), { maxAge: 0 })) + // Static files + app.use(express.static(path.join(__dirname, '/public'), { maxAge: 0 })) - // Jade template from ./views directory - app.set('views', path.join(__dirname, '/views')) - app.set('view engine', 'jade') + // Jade template from ./views directory + app.set('views', path.join(__dirname, '/views')) + app.set('view engine', 'jade') - // Views routes - app.use('/', routes) - } + // API routes + var api_route = '/api/' + global.API_VERSION + app.use(api_route, routes.api) - // ----------- Routes ----------- - app.use('/api/videos', api.videos) - app.use('/api/remotevideos', api.remoteVideos) - app.use('/api/pods', api.pods) + // Views routes + app.use('/', routes.views) // ----------- Tracker ----------- @@ -150,8 +140,23 @@ if (err) throw err // Create/activate the webtorrent module webtorrent.create(function () { + function cleanForExit () { + utils.cleanForExit(webtorrent.app) + } + + function exitGracefullyOnSignal () { + process.exit() + } + + process.on('exit', cleanForExit) + process.on('SIGINT', exitGracefullyOnSignal) + process.on('SIGTERM', exitGracefullyOnSignal) + // ----------- Make the server listening ----------- server.listen(port, function () { + // Activate the pool requests + poolRequests.activate() + videos.seedAll(function () { logger.info('Seeded all the videos') logger.info('Server listening on port %d', port)