]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server.js
Make the network auto sufficient (eject bad pods with scores)
[github/Chocobozzz/PeerTube.git] / server.js
index d3718f8de31b59e99b6e9d98c2523376ab94ef44..3b899689c5544b494d579299513d0e22fa6afefc 100644 (file)
--- a/server.js
+++ b/server.js
@@ -1,19 +1,19 @@
 ;(function () {
   'use strict'
 
-  // ----------- Constantes -----------
-  global.API_VERSION = 'v1'
-
   // ----------- 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')
     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 logger = require('./src/logger')
   var routes = require('./routes')
-  var api = require('./routes/api/' + global.API_VERSION)
-  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')
-
-    // 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'
-      }
+  // Static files
+  app.use(express.static(path.join(__dirname, '/public'), { maxAge: 0 }))
 
-      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
-    }))
+  // Jade template from ./views directory
+  app.set('views', path.join(__dirname, '/views'))
+  app.set('view engine', 'jade')
 
-    require('segfault-handler').registerHandler()
-
-    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 -----------
+  // API routes
   var api_route = '/api/' + global.API_VERSION
-  app.use(api_route + '/videos', api.videos)
-  app.use(api_route + '/remotevideos', api.remoteVideos)
-  app.use(api_route + '/pods', api.pods)
+  app.use(api_route, routes.api)
+
+  // Views routes
+  app.use('/', routes.views)
 
   // ----------- Tracker -----------