summaryrefslogtreecommitdiffstats
path: root/server/api/registration.js
diff options
context:
space:
mode:
authorJannik Schönartz2018-08-20 19:01:46 +0200
committerJannik Schönartz2018-08-20 19:01:46 +0200
commit243384edd87ec58828901a2d1424548d8b94b34c (patch)
treefe854ee38c10fe112720597faa18eb20849b85d7 /server/api/registration.js
parentmerge (diff)
downloadbas-243384edd87ec58828901a2d1424548d8b94b34c.tar.gz
bas-243384edd87ec58828901a2d1424548d8b94b34c.tar.xz
bas-243384edd87ec58828901a2d1424548d8b94b34c.zip
[tftp] Remove tftp
Remove tftp server because an external tftp is used. Adding client from registrationscript is now working.
Diffstat (limited to 'server/api/registration.js')
-rw-r--r--server/api/registration.js117
1 files changed, 89 insertions, 28 deletions
diff --git a/server/api/registration.js b/server/api/registration.js
index c87431c..a5c1b6f 100644
--- a/server/api/registration.js
+++ b/server/api/registration.js
@@ -5,6 +5,7 @@ var express = require('express')
var router = express.Router()
var noAuthRouter = express.Router()
var db = require(path.join(__appdir, 'lib', 'sequelize'))
+var dhcp = require(path.join(__appdir, 'config', 'config')).dhcp
// GET requests.
@@ -16,10 +17,33 @@ router.get('/', (req, res) => {
ip: 'dhcp.uni-freiburg.de',
apiVersion: '1.7.1'
})
- ipam.login('js1456', 'Test12345!').then(function (r) {
+ ipam.login(dhcp.user, dhcp.password).then(function (r) {
if (r) {
- ipam.getIpsFromSubnet('10.21.9.0/24').then(function (response) {
- console.log(response)
+ // Get the network from the ip.
+ // ipam.getHost('10.21.9.78').then(function (response) {
+ ipam.getNetworkFromIp('10.21.9.78').then(function (response) {
+ // ipam.getIpsFromSubnet('10.21.9.0/24').then(function (response) {
+ // ipam.list('record:host').then(function (response) {
+ // ipam.getDomain().then(function (response) {
+ response = JSON.parse(response)
+ // ipam.getNext(response[0]._ref, 1).then(r => {
+ res.send(response)
+ // })
+ // res.send(JSON.parse(response))
+ })
+ }
+ // res.status(200).send({ status: 'work in progress ...' })
+ })
+})
+
+router.get('/setdhcptest', (req, res) => {
+ var ipam = new Infoblox({
+ ip: 'dhcp.uni-freiburg.de',
+ apiVersion: '1.7.1'
+ })
+ ipam.login('js603', 'Iwjp!DFhk4').then(function (r) {
+ if (r) {
+ ipam.create('record:host?_return_fields%2B=na13me,ipv4addrs&_return_as_object=1', {'name': 'wapiTest.lp.privat', 'ipv4addrs': [{'ipv4addr': '10.21.9.141', 'mac': 'aa:bb:cc:11:22:21'}]}).then(function (response) {
res.send(response)
})
}
@@ -38,13 +62,14 @@ module.exports.router = router
* @return:
*/
noAuthRouter.post('/client', (req, res) => {
- const mac = req.body.mac
- const uuid = req.body.uuid
- const ip = req.body.ip
- const name = req.body.name
- console.log(name.concat(' ', ip, ' ', mac, ' ', uuid))
+ // const mac = req.body.mac
+ // const uuid = req.body.uuid
+ // const ip = req.body.ip
+ // const name = req.body.name
+ // console.log(name.concat(' ', ip, ' ', mac, ' ', uuid))
var script = '#!ipxe\r\n'
+ script.concat(`console --picture \${img} --x 800 --y 600 || shell\r\n`)
db.group.findAll({ where: { '$parents.id$': null }, include: ['parents'] }).then(groups => {
groups.forEach(g => {
script = script.concat('echo', ' [', g.id, '] ', g.name, '\r\n')
@@ -52,9 +77,7 @@ noAuthRouter.post('/client', (req, res) => {
script = script.concat('read group\r\n')
script = script.concat('params\r\n')
- /*eslint-disable */
- script = script.concat('param id ${group}\r\n')
- /* eslint-enable */
+ script = script.concat(`param id \${group}\r\n`)
script = script.concat('chain https://bas.stfu-kthx.net:8888/api/registration/group##params\r\n')
res.status(200).send(script)
})
@@ -62,25 +85,63 @@ noAuthRouter.post('/client', (req, res) => {
noAuthRouter.post('/group', (req, res) => {
const id = req.body.id
+ console.log(id)
+ if (id === '0') {
+ db.group.findAll({ where: { '$parents.id$': null }, include: ['parents'] }).then(groups => {
+ if (groups) {
+ res.send(buildIpxeMenu(id, 'Root', groups))
+ } else {
+ res.status(404).end()
+ }
+ })
+ } else {
+ db.group.findOne({ where: { id: id }, include: ['parents', 'subgroups', 'clients'] }).then(group => {
+ if (group) {
+ res.send(buildIpxeMenu(id, group.name, group.subgroups))
+ } else {
+ res.status(404).end()
+ }
+ })
+ }
+})
- var script = '#!ipxe\r\n'
- db.group.findOne({ where: { id: id }, include: ['parents', 'subgroups', 'clients'] }).then(group => {
- if (group) {
- group.subgroups.forEach(subgroup => {
- script = script.concat('echo', ' [', subgroup.id, '] ', subgroup.name, '\r\n')
- })
-
- script = script.concat('read group\r\n')
- script = script.concat('params\r\n')
- /*eslint-disable */
- script = script.concat('param id ${group}\r\n')
- /* eslint-enable */
- script = script.concat('chain https://bas.stfu-kthx.net:8888/api/registration/group##params\r\n')
- res.send(script)
- } else {
- res.status(404).end()
- }
+noAuthRouter.post('/add', (req, res) => {
+ const mac = req.body.mac
+ const uuid = req.body.uuid
+ const ip = req.body.ip
+ const name = req.body.name
+ const parentId = req.body.id
+ db.client.create({ name: name, ip: ip, mac: mac, uuid: uuid }).then(client => {
+ client.addGroup(parentId)
+ res.send('#ipxe\r\nshell')
})
+ console.log(name.concat(' ', ip, ' ', mac, ' ', uuid))
})
module.exports.noAuthRouter = noAuthRouter
+
+function buildIpxeMenu (id, name, groups) {
+ var script = '#!ipxe\r\n'
+ script.concat(`console --picture \${img} --x 800 --y 600 || shell\r\n`)
+ var menuscript = ''
+ script = script.concat(':start\r\n')
+ script = script.concat('menu Choose the group you want the client to be saved in\r\n')
+ var counter = '1'
+ groups.forEach(group => {
+ // script = script.concat('echo', ' [', subgroup.id, '] ', subgroup.name, '\r\n')
+ script = script.concat('item --key ', counter, ' ', counter, ' [', group.id, '] ', group.name, '\r\n')
+ menuscript = menuscript.concat(':', counter, '\r\n', 'params\r\nparam id ', group.id, '\r\nchain https://bas.stfu-kthx.net:8888/api/registration/group##params\r\n\r\n')
+ counter++
+ })
+ script = script.concat('item select Add client to ', name, '\r\n')
+ menuscript = menuscript.concat(`:select\r\necho Enter client name\r\nread clientname\r\nparams\r\nparam name \${clientname}\r\n`)
+ menuscript = menuscript.concat('param id ', id, `\r\nparam mac \${net0/mac}\r\nparam uuid \${uuid}\r\nparam ip \${net0/ip}\r\n`)
+ menuscript = menuscript.concat('chain https://bas.stfu-kthx.net:8888/api/registration/add##params\r\n\r\n')
+ if (id !== '0') {
+ script = script.concat('item reset Go to start\r\n')
+ menuscript = menuscript.concat(':reset\r\nparams\r\nparam id ', 0, '\r\nchain --replace https://bas.stfu-kthx.net:8888/api/registration/group##params\r\n\r\n')
+ }
+ script = script.concat(`choose target && goto \${target}\r\n\r\n`)
+ script = script.concat(menuscript)
+ return script
+}