forked from Qortal/qortal-ui
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
4.1 KiB
141 lines
4.1 KiB
const path = require('path') |
|
|
|
const createCommonRoutes = require('./createCommonRoutes.js') |
|
|
|
const createPrimaryRoutes = (config, plugins) => { |
|
const routes = createCommonRoutes(config) |
|
|
|
let myPlugins = plugins |
|
|
|
const pluginFolders = {} |
|
|
|
const routesOptions = { |
|
security: { |
|
hsts: { |
|
maxAge: 15768000, |
|
includeSubDomains: true, |
|
preload: true |
|
}, |
|
xframe: 'sameorigin' |
|
} |
|
} |
|
|
|
plugins.reduce((obj, plugin) => { |
|
obj[plugin.name] = plugin.folder |
|
return obj |
|
}, pluginFolders) |
|
|
|
|
|
routes.push( |
|
{ |
|
method: 'GET', |
|
path: '/', |
|
handler: (request, reply) => { |
|
return reply.redirect('/app') |
|
}, |
|
options: routesOptions |
|
}, |
|
{ |
|
method: 'GET', |
|
path: '/{path*}', |
|
handler: (request, h) => { |
|
const filePath = path.join(__dirname, '../../public/index.html') |
|
const response = h.file(filePath, { |
|
confine: true |
|
}) |
|
response.header('Access-Control-Allow-Origin', request.info.host) |
|
return response |
|
}, |
|
options: routesOptions |
|
}, |
|
{ |
|
method: 'GET', |
|
path: '/getPlugins', |
|
handler: (request, h) => { |
|
return { plugins: myPlugins.map(p => p.name) } |
|
}, |
|
options: routesOptions |
|
}, |
|
{ |
|
method: 'GET', |
|
path: '/build/{param*}', |
|
handler: { |
|
directory: { |
|
path: config.build.options.outputDir, |
|
redirectToSlash: true, |
|
index: true |
|
} |
|
}, |
|
options: routesOptions |
|
}, |
|
{ |
|
method: 'GET', |
|
path: '/src/{param*}', |
|
handler: { |
|
directory: { |
|
path: path.join(__dirname, '../../src'), |
|
redirectToSlash: true, |
|
index: true |
|
} |
|
}, |
|
options: routesOptions |
|
}, |
|
{ |
|
method: 'GET', |
|
path: '/plugin/{path*}', |
|
handler: (request, h) => { |
|
|
|
const plugin = request.params.path.split('/')[0] |
|
const filePath = path.join(pluginFolders[plugin], '../', request.params.path) |
|
|
|
const response = h.file(filePath, { |
|
confine: false |
|
}) |
|
response.header('Access-Control-Allow-Origin', request.info.host) |
|
return response |
|
}, |
|
options: routesOptions |
|
}, |
|
{ |
|
method: 'GET', |
|
path: '/plugin/404', |
|
handler: (request, h) => { |
|
const response = h.file(path.join(config.server.primary.page404)) |
|
response.header('Access-Control-Allow-Origin', request.info.host) |
|
return response |
|
}, |
|
options: routesOptions |
|
}, |
|
{ |
|
method: 'GET', |
|
path: '/qortal-components/plugin-mainjs-loader.html', |
|
handler: (request, h) => { |
|
const response = h.file(path.join(__dirname, '../../src/plugins/plugin-mainjs-loader.html'), { |
|
confine: false |
|
}) |
|
response.header('Access-Control-Allow-Origin', request.info.host) |
|
return response |
|
}, |
|
options: routesOptions |
|
}, |
|
{ |
|
method: 'GET', |
|
path: '/qortal-components/plugin-mainjs-loader.js', |
|
handler: (request, h) => { |
|
const file = path.join(config.build.options.outputDir, '/plugins/plugin-mainjs-loader.js') |
|
|
|
const response = h.file(file, { |
|
confine: false |
|
}) |
|
response.header('Access-Control-Allow-Origin', request.info.host) |
|
return response |
|
}, |
|
options: routesOptions |
|
}, |
|
|
|
) |
|
|
|
return routes |
|
} |
|
|
|
module.exports = createPrimaryRoutes
|
|
|