Server: move static/client routes in controllers/
This commit is contained in:
parent
8e124f999b
commit
79530164b6
33
server.js
33
server.js
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
// ----------- Node modules -----------
|
// ----------- Node modules -----------
|
||||||
const bodyParser = require('body-parser')
|
const bodyParser = require('body-parser')
|
||||||
const cors = require('cors')
|
|
||||||
const express = require('express')
|
const express = require('express')
|
||||||
const expressValidator = require('express-validator')
|
const expressValidator = require('express-validator')
|
||||||
const http = require('http')
|
const http = require('http')
|
||||||
|
@ -66,35 +65,17 @@ app.use(expressValidator({
|
||||||
|
|
||||||
// ----------- Views, routes and static files -----------
|
// ----------- Views, routes and static files -----------
|
||||||
|
|
||||||
// API routes
|
// API
|
||||||
const apiRoute = '/api/' + constants.API_VERSION
|
const apiRoute = '/api/' + constants.API_VERSION
|
||||||
app.use(apiRoute, routes.api)
|
app.use(apiRoute, routes.api)
|
||||||
|
|
||||||
|
// Client files
|
||||||
app.use('/', routes.client)
|
app.use('/', routes.client)
|
||||||
|
|
||||||
// Static client files
|
// Static files
|
||||||
// TODO: move in client
|
app.use('/', routes.static)
|
||||||
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
|
// Always serve index client page (the client is a single page application, let it handle routing)
|
||||||
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 }))
|
|
||||||
|
|
||||||
// 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 }))
|
|
||||||
|
|
||||||
// Always serve index client page
|
|
||||||
app.use('/*', function (req, res, next) {
|
app.use('/*', function (req, res, next) {
|
||||||
res.sendFile(path.join(__dirname, './client/dist/index.html'))
|
res.sendFile(path.join(__dirname, './client/dist/index.html'))
|
||||||
})
|
})
|
||||||
|
@ -136,6 +117,8 @@ app.use(function (err, req, res, next) {
|
||||||
res.sendStatus(err.status || 500)
|
res.sendStatus(err.status || 500)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// ----------- Run -----------
|
||||||
|
|
||||||
const port = constants.CONFIG.LISTEN.PORT
|
const port = constants.CONFIG.LISTEN.PORT
|
||||||
installer.installApplication(function (err) {
|
installer.installApplication(function (err) {
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
|
|
|
@ -13,8 +13,9 @@ const Video = mongoose.model('Video')
|
||||||
const router = express.Router()
|
const router = express.Router()
|
||||||
|
|
||||||
const opengraphComment = '<!-- opengraph tags -->'
|
const opengraphComment = '<!-- opengraph tags -->'
|
||||||
const embedPath = path.join(__dirname, '../../client/dist/standalone/videos/embed.html')
|
const distPath = path.join(__dirname, '../../client/dist')
|
||||||
const indexPath = path.join(__dirname, '../../client/dist/index.html')
|
const embedPath = path.join(distPath, 'standalone/videos/embed.html')
|
||||||
|
const indexPath = path.join(distPath, 'index.html')
|
||||||
|
|
||||||
// Special route that add OpenGraph tags
|
// Special route that add OpenGraph tags
|
||||||
// Do not use a template engine for a so little thing
|
// Do not use a template engine for a so little thing
|
||||||
|
@ -24,6 +25,14 @@ router.use('/videos/embed', function (req, res, next) {
|
||||||
res.sendFile(embedPath)
|
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
|
module.exports = router
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
const apiController = require('./api/')
|
const apiController = require('./api/')
|
||||||
const clientController = require('./client')
|
const clientController = require('./client')
|
||||||
|
const staticController = require('./static')
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
api: apiController,
|
api: apiController,
|
||||||
client: clientController
|
client: clientController,
|
||||||
|
static: staticController
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
'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
|
||||||
|
|
Loading…
Reference in New Issue