diff options
Diffstat (limited to 'server.js')
-rw-r--r-- | server.js | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/server.js b/server.js deleted file mode 100644 index b2487b767..000000000 --- a/server.js +++ /dev/null | |||
@@ -1,154 +0,0 @@ | |||
1 | 'use strict' | ||
2 | |||
3 | // ----------- Node modules ----------- | ||
4 | const bodyParser = require('body-parser') | ||
5 | const express = require('express') | ||
6 | const expressValidator = require('express-validator') | ||
7 | const http = require('http') | ||
8 | const morgan = require('morgan') | ||
9 | const path = require('path') | ||
10 | const TrackerServer = require('bittorrent-tracker').Server | ||
11 | const WebSocketServer = require('ws').Server | ||
12 | |||
13 | process.title = 'peertube' | ||
14 | |||
15 | // Create our main app | ||
16 | const app = express() | ||
17 | |||
18 | // ----------- Database ----------- | ||
19 | const constants = require('./server/initializers/constants') | ||
20 | const logger = require('./server/helpers/logger') | ||
21 | // Initialize database and models | ||
22 | const db = require('./server/initializers/database') | ||
23 | db.init(onDatabaseInitDone) | ||
24 | |||
25 | // ----------- Checker ----------- | ||
26 | const checker = require('./server/initializers/checker') | ||
27 | |||
28 | const missed = checker.checkMissedConfig() | ||
29 | if (missed.length !== 0) { | ||
30 | throw new Error('Miss some configurations keys : ' + missed) | ||
31 | } | ||
32 | checker.checkFFmpeg(function (err) { | ||
33 | if (err) { | ||
34 | throw err | ||
35 | } | ||
36 | }) | ||
37 | |||
38 | const errorMessage = checker.checkConfig() | ||
39 | if (errorMessage !== null) { | ||
40 | throw new Error(errorMessage) | ||
41 | } | ||
42 | |||
43 | // ----------- PeerTube modules ----------- | ||
44 | const customValidators = require('./server/helpers/custom-validators') | ||
45 | const friends = require('./server/lib/friends') | ||
46 | const installer = require('./server/initializers/installer') | ||
47 | const migrator = require('./server/initializers/migrator') | ||
48 | const jobScheduler = require('./server/lib/jobs/job-scheduler') | ||
49 | const routes = require('./server/controllers') | ||
50 | |||
51 | // ----------- Command line ----------- | ||
52 | |||
53 | // ----------- App ----------- | ||
54 | |||
55 | // For the logger | ||
56 | app.use(morgan('combined', { stream: logger.stream })) | ||
57 | // For body requests | ||
58 | app.use(bodyParser.json({ limit: '500kb' })) | ||
59 | app.use(bodyParser.urlencoded({ extended: false })) | ||
60 | // Validate some params for the API | ||
61 | app.use(expressValidator({ | ||
62 | customValidators: Object.assign( | ||
63 | {}, | ||
64 | customValidators.misc, | ||
65 | customValidators.pods, | ||
66 | customValidators.users, | ||
67 | customValidators.videos, | ||
68 | customValidators.remote.videos | ||
69 | ) | ||
70 | })) | ||
71 | |||
72 | // ----------- Views, routes and static files ----------- | ||
73 | |||
74 | // API | ||
75 | const apiRoute = '/api/' + constants.API_VERSION | ||
76 | app.use(apiRoute, routes.api) | ||
77 | |||
78 | // Client files | ||
79 | app.use('/', routes.client) | ||
80 | |||
81 | // Static files | ||
82 | app.use('/', routes.static) | ||
83 | |||
84 | // Always serve index client page (the client is a single page application, let it handle routing) | ||
85 | app.use('/*', function (req, res, next) { | ||
86 | res.sendFile(path.join(__dirname, './client/dist/index.html')) | ||
87 | }) | ||
88 | |||
89 | // ----------- Tracker ----------- | ||
90 | |||
91 | const trackerServer = new TrackerServer({ | ||
92 | http: false, | ||
93 | udp: false, | ||
94 | ws: false, | ||
95 | dht: false | ||
96 | }) | ||
97 | |||
98 | trackerServer.on('error', function (err) { | ||
99 | logger.error(err) | ||
100 | }) | ||
101 | |||
102 | trackerServer.on('warning', function (err) { | ||
103 | logger.error(err) | ||
104 | }) | ||
105 | |||
106 | const server = http.createServer(app) | ||
107 | const wss = new WebSocketServer({server: server, path: '/tracker/socket'}) | ||
108 | wss.on('connection', function (ws) { | ||
109 | trackerServer.onWebSocketConnection(ws) | ||
110 | }) | ||
111 | |||
112 | // ----------- Errors ----------- | ||
113 | |||
114 | // Catch 404 and forward to error handler | ||
115 | app.use(function (req, res, next) { | ||
116 | const err = new Error('Not Found') | ||
117 | err.status = 404 | ||
118 | next(err) | ||
119 | }) | ||
120 | |||
121 | app.use(function (err, req, res, next) { | ||
122 | logger.error(err) | ||
123 | res.sendStatus(err.status || 500) | ||
124 | }) | ||
125 | |||
126 | // ----------- Run ----------- | ||
127 | |||
128 | function onDatabaseInitDone () { | ||
129 | const port = constants.CONFIG.LISTEN.PORT | ||
130 | // Run the migration scripts if needed | ||
131 | migrator.migrate(function (err) { | ||
132 | if (err) throw err | ||
133 | |||
134 | installer.installApplication(function (err) { | ||
135 | if (err) throw err | ||
136 | |||
137 | // ----------- Make the server listening ----------- | ||
138 | server.listen(port, function () { | ||
139 | // Activate the communication with friends | ||
140 | friends.activate() | ||
141 | |||
142 | // Activate job scheduler | ||
143 | jobScheduler.activate() | ||
144 | |||
145 | logger.info('Server listening on port %d', port) | ||
146 | logger.info('Webserver: %s', constants.CONFIG.WEBSERVER.URL) | ||
147 | |||
148 | app.emit('ready') | ||
149 | }) | ||
150 | }) | ||
151 | }) | ||
152 | } | ||
153 | |||
154 | module.exports = app | ||