// ----------- Node modules -----------
const bodyParser = require('body-parser')
-const cors = require('cors')
const express = require('express')
const expressValidator = require('express-validator')
const http = require('http')
// ----------- Views, routes and static files -----------
-// API routes
+// API
const apiRoute = '/api/' + constants.API_VERSION
app.use(apiRoute, routes.api)
-app.use('/', routes.client)
-
-// Static client files
-// TODO: move in client
-app.use('/client', express.static(path.join(__dirname, '/client/dist'), { maxAge: constants.STATIC_MAX_AGE }))
-// 404 for static files not found
-app.use('/client/*', function (req, res, next) {
- res.sendStatus(404)
-})
-
-const torrentsPhysicalPath = constants.CONFIG.STORAGE.TORRENTS_DIR
-app.use(constants.STATIC_PATHS.TORRENTS, cors(), express.static(torrentsPhysicalPath, { maxAge: constants.STATIC_MAX_AGE }))
-// Videos path for webseeding
-const videosPhysicalPath = constants.CONFIG.STORAGE.VIDEOS_DIR
-app.use(constants.STATIC_PATHS.WEBSEED, cors(), express.static(videosPhysicalPath, { maxAge: constants.STATIC_MAX_AGE }))
-
-// Thumbnails path for express
-const thumbnailsPhysicalPath = constants.CONFIG.STORAGE.THUMBNAILS_DIR
-app.use(constants.STATIC_PATHS.THUMBNAILS, express.static(thumbnailsPhysicalPath, { maxAge: constants.STATIC_MAX_AGE }))
+// Client files
+app.use('/', routes.client)
-// Video previews path for express
-const previewsPhysicalPath = constants.CONFIG.STORAGE.PREVIEWS_DIR
-app.use(constants.STATIC_PATHS.PREVIEWS, express.static(previewsPhysicalPath, { maxAge: constants.STATIC_MAX_AGE }))
+// Static files
+app.use('/', routes.static)
-// Always serve index client page
+// Always serve index client page (the client is a single page application, let it handle routing)
app.use('/*', function (req, res, next) {
res.sendFile(path.join(__dirname, './client/dist/index.html'))
})
res.sendStatus(err.status || 500)
})
+// ----------- Run -----------
+
const port = constants.CONFIG.LISTEN.PORT
installer.installApplication(function (err) {
if (err) throw err
const router = express.Router()
const opengraphComment = '<!-- opengraph tags -->'
-const embedPath = path.join(__dirname, '../../client/dist/standalone/videos/embed.html')
-const indexPath = path.join(__dirname, '../../client/dist/index.html')
+const distPath = path.join(__dirname, '../../client/dist')
+const embedPath = path.join(distPath, 'standalone/videos/embed.html')
+const indexPath = path.join(distPath, 'index.html')
// Special route that add OpenGraph tags
// Do not use a template engine for a so little thing
res.sendFile(embedPath)
})
+// Static HTML/CSS/JS client files
+router.use('/client', express.static(distPath, { maxAge: constants.STATIC_MAX_AGE }))
+
+// 404 for static files not found
+router.use('/client/*', function (req, res, next) {
+ res.sendStatus(404)
+})
+
// ---------------------------------------------------------------------------
module.exports = router
const apiController = require('./api/')
const clientController = require('./client')
+const staticController = require('./static')
module.exports = {
api: apiController,
- client: clientController
+ client: clientController,
+ static: staticController
}
--- /dev/null
+'use strict'
+
+const express = require('express')
+const cors = require('cors')
+
+const constants = require('../initializers/constants')
+
+const router = express.Router()
+
+/*
+ Cors is very important to let other pods access torrent and video files
+*/
+
+const torrentsPhysicalPath = constants.CONFIG.STORAGE.TORRENTS_DIR
+router.use(
+ constants.STATIC_PATHS.TORRENTS,
+ cors(),
+ express.static(torrentsPhysicalPath, { maxAge: constants.STATIC_MAX_AGE })
+)
+
+// Videos path for webseeding
+const videosPhysicalPath = constants.CONFIG.STORAGE.VIDEOS_DIR
+router.use(
+ constants.STATIC_PATHS.WEBSEED,
+ cors(),
+ express.static(videosPhysicalPath, { maxAge: constants.STATIC_MAX_AGE })
+)
+
+// Thumbnails path for express
+const thumbnailsPhysicalPath = constants.CONFIG.STORAGE.THUMBNAILS_DIR
+router.use(
+ constants.STATIC_PATHS.THUMBNAILS,
+ express.static(thumbnailsPhysicalPath, { maxAge: constants.STATIC_MAX_AGE })
+)
+
+// Video previews path for express
+const previewsPhysicalPath = constants.CONFIG.STORAGE.PREVIEWS_DIR
+router.use(
+ constants.STATIC_PATHS.PREVIEWS,
+ express.static(previewsPhysicalPath, { maxAge: constants.STATIC_MAX_AGE })
+)
+
+// ---------------------------------------------------------------------------
+
+module.exports = router
+