X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server.js;h=3b899689c5544b494d579299513d0e22fa6afefc;hb=3bcb78b3aff565996ee0e2aa96bce7f1bdd6d66a;hp=bff7ddd57ac42e44da3eaa444867ca7931bf65ec;hpb=8c308c2bf7f658945d80be9d5880361238635f5b;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server.js b/server.js index bff7ddd57..3b899689c 100644 --- a/server.js +++ b/server.js @@ -2,15 +2,18 @@ '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 +25,62 @@ process.exit(0) } - checker.createDirectories() + checker.createDirectoriesIfNotExist() - // ----------- PeTube modules ----------- + // ----------- 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 logger = require('./src/logger') 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()) + // For POST file requests app.use(multer({ dest: uploads })) app.use(bodyParser.urlencoded({ extended: false })) + // Validate some params for the API + app.use(expressValidator()) // ----------- Views, routes and static files ----------- - if (process.env.NODE_ENV === 'production') { - // logger.log('Production : static files in dist/\n') + // Livereload + app.use(require('connect-livereload')({ + port: 35729 + })) - // GZip compression - compression = require('compression') - app.use(compression()) + // Catch sefaults + require('segfault-handler').registerHandler() - // A month - var maxAge = 86400000 * 30 + // Static files + app.use(express.static(path.join(__dirname, '/public'), { maxAge: 0 })) - // TODO - app.get(/^\/(index|(partials\/[a-z\/]+))?$/, function (req, res, next) { - if (req.url === '/') { - req.url = '/index' - } + // Jade template from ./views directory + app.set('views', path.join(__dirname, '/views')) + app.set('view engine', 'jade') - 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() + // API routes + var api_route = '/api/' + global.API_VERSION + app.use(api_route, routes.api) - 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') - - // Views routes - app.use('/', routes) - } - - // ----------- 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,6 +140,18 @@ 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 () { videos.seedAll(function () {