summaryrefslogtreecommitdiffstats
path: root/server/api
diff options
context:
space:
mode:
authorJannik Schönartz2019-05-05 22:58:34 +0200
committerJannik Schönartz2019-05-05 22:58:34 +0200
commitc6141d8aba461e2ff7851087c5801fa2cd156265 (patch)
tree5a4e68ff879431f6c9c42ea02c0b9a9f837a2649 /server/api
parent[webapp] very small ui changes (diff)
downloadbas-c6141d8aba461e2ff7851087c5801fa2cd156265.tar.gz
bas-c6141d8aba461e2ff7851087c5801fa2cd156265.tar.xz
bas-c6141d8aba461e2ff7851087c5801fa2cd156265.zip
[ipxe builder] Merge efi and bios ipxe builder to one tab & add parameters ui
[server] Remove all req, res from the shell.js library Add ipxe config for the build parameters & parameter list Add api getter/setter methods for the ipxe config [webapp] Add ui for repository, branch and build targets Output: All of the scroll to bottom is now clickable
Diffstat (limited to 'server/api')
-rw-r--r--server/api/ipxe.js83
1 files changed, 52 insertions, 31 deletions
diff --git a/server/api/ipxe.js b/server/api/ipxe.js
index 2e89e32..7b5ad85 100644
--- a/server/api/ipxe.js
+++ b/server/api/ipxe.js
@@ -7,30 +7,30 @@ var router = express.Router()
var noAuthRouter = express.Router()
// GET requests.
-router.get('/:version/script', (req, res) => {
+router.get('/script', (req, res) => {
res.setHeader('content-type', 'text/plain')
- res.sendFile(path.join(__appdir, 'ipxe', 'embedded_' + req.params.version + '.ipxe'))
+ res.sendFile(path.join(__appdir, 'ipxe', 'embedded.ipxe'))
})
-router.get('/:version/certificate', (req, res) => {
+router.get('/certificate', (req, res) => {
res.setHeader('content-type', 'text/plain')
res.sendFile(path.join(__appdir, 'bin', 'fullchain.pem'))
})
-router.get('/:version/general', (req, res) => {
+router.get('/general', (req, res) => {
res.setHeader('content-type', 'text/plain')
- res.sendFile(path.join(__appdir, 'ipxe', 'general_' + req.params.version + '.h'))
+ res.sendFile(path.join(__appdir, 'ipxe', 'general.h'))
})
-router.get('/:version/console', (req, res) => {
+router.get('/console', (req, res) => {
res.setHeader('content-type', 'text/plain')
- res.sendFile(path.join(__appdir, 'ipxe', 'console_' + req.params.version + '.h'))
+ res.sendFile(path.join(__appdir, 'ipxe', 'console.h'))
})
-router.get('/:version/log', async (req, res) => {
+router.get('/log', async (req, res) => {
const max = req.query.max ? req.query.max : -1
res.setHeader('content-type', 'text/plain')
- const filepath = path.join(__appdir, 'ipxe', 'log_' + req.params.version + '.txt')
+ const filepath = path.join(__appdir, 'ipxe', 'ipxelog.txt')
fs.readFile(filepath, 'utf-8', function (err, content) {
if (err) res.end()
@@ -42,13 +42,41 @@ router.get('/:version/log', async (req, res) => {
})
})
-router.put('/:version/:filename', (req, res) => {
+router.get('/config', (req, res) => {
+ delete require.cache[require.resolve(path.join(__appdir, 'config', 'ipxe'))]
+ var config = require(path.join(__appdir, 'config', 'ipxe'))
+ res.send(config)
+})
+
+router.post('/config', (req, res) => {
+ let buildTargets = req.body.buildTargets
+ const targetList = req.body.targetList
+ const branch = req.body.branch
+ const repository = req.body.repository
+ var config = require(path.join(__appdir, 'config', 'ipxe'))
+
+ if (repository) config.repository = repository
+ if (branch) config.branch = branch
+ if (targetList && config.targets.custom) config.targets.list = targetList
+
+ if (buildTargets) {
+ if (!config.targets.custom) buildTargets = buildTargets.filter(target => config.targets.list.indexOf(target) >= 0)
+ config.targets.build = buildTargets
+ }
+
+ fs.writeFile(path.join(__appdir, 'config', 'ipxe.json'), JSON.stringify(config, null, 4), {}, (err) => {
+ if (err) res.status(500).end()
+ else res.send()
+ })
+})
+
+router.put('/:filename', (req, res) => {
var filepath = null
// Set the file path
if (req.params.filename === 'script') {
- filepath = path.join(__appdir, 'ipxe', 'embedded_' + req.params.version + '.ipxe')
+ filepath = path.join(__appdir, 'ipxe', 'embedded.ipxe')
} else if (req.params.filename === 'console' || req.params.filename === 'general') {
- filepath = path.join(__appdir, 'ipxe', req.params.filename + '_' + req.params.version + '.h')
+ filepath = path.join(__appdir, 'ipxe', req.params.filename + '.h')
} else if (req.params.filename === 'certificate') {
filepath = path.join(__appdir, 'bin', 'fullchain.pem')
} else {
@@ -66,31 +94,24 @@ router.put('/:version/:filename', (req, res) => {
/*
* @return: Rebuild the ipxe.
*/
-router.get('/:version/build', async (req, res) => {
- if (req.params.version === 'efi' || req.params.version === 'bios') {
- shell.buildIpxe(req, res)
- } else {
- res.status(400).send({ status: 'error', msg: 'Unknown ipxe version (' + req.params.version + ')' })
- }
+router.get('/build', async (req, res) => {
+ delete require.cache[require.resolve(path.join(__appdir, 'config', 'ipxe'))]
+ const config = require(path.join(__appdir, 'config', 'ipxe'))
+ const build = await shell.buildIpxe(config.targets.build.join(' '), config.repository, config.branch)
+ res.send(build)
})
-router.get('/:version/cancel', async (req, res) => {
- if (req.params.version === 'efi' || req.params.version === 'bios') {
- shell.cancelBuilding(req, res)
- } else {
- res.status(400).send({ status: 'error', msg: 'Unknown ipxe version (' + req.params.version + ')' })
- }
+router.get('/cancel', async (req, res) => {
+ const result = await shell.cancelBuilding(req, res)
+ res.send(result)
})
-router.get('/:version/clean', (req, res) => {
- if (req.params.version === 'efi' || req.params.version === 'bios') {
- shell.clean(req, res)
- } else {
- res.status(400).send({ status: 'error', msg: 'Unknown ipxe version (' + req.params.version + ')' })
- }
+router.get('/clean', async (req, res) => {
+ const result = await shell.clean()
+ res.send(result)
})
-router.get('/:version/status', (req, res) => {
+router.get('/status', (req, res) => {
res.send({ status: 'SUCCESS', data: shell.status(req.params.version) })
})