summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/api/ipxe.js62
-rw-r--r--server/api/registration.js86
-rw-r--r--server/ipxe/exitTestScript.ipxe57
-rw-r--r--server/ipxe/general.h2
-rw-r--r--server/ipxe/main.ipxe8
-rw-r--r--server/ipxe/registration.ipxe52
-rw-r--r--server/package-lock.json307
-rw-r--r--server/package.json1
-rw-r--r--server/router.js7
9 files changed, 528 insertions, 54 deletions
diff --git a/server/api/ipxe.js b/server/api/ipxe.js
index 2d776bf..bed61a1 100644
--- a/server/api/ipxe.js
+++ b/server/api/ipxe.js
@@ -1,8 +1,10 @@
/* global __appdir */
var path = require('path')
+const fs = require('fs')
var shell = require(path.join(__appdir, 'lib', 'shell'))
var express = require('express')
var router = express.Router()
+var noAuthRouter = express.Router()
// GET requests.
@@ -15,50 +17,20 @@ router.get('/build', (req, res) => {
module.exports.router = router
-module.exports.get = {
- loadScript: function (req, res) {
- res.setHeader('content-type', 'text/plain')
- res.status(200).send(`#!ipxe
-dhcp
-
-:start
-menu Please choose a webserver to load the ipxe menu:
-item pxelnx PxeLinux
-item c32boot C32Boot
-item exit Exit
-item exit0 Exit0
-item exit1 Exit1
-item sh [Shell]
-choose target && goto \${target}
+noAuthRouter.get('/load/script', (req, res) => {
+ res.setHeader('content-type', 'text/plain')
+ fs.readFile(path.join(__appdir, 'ipxe', 'exitTestScript.ipxe'), 'utf-8', function (err, content) {
+ if (err) res.end()
+ res.send(content)
+ })
+})
-:exit
-exit
-:exit0
-exit 0
-:exit1
-exit 1
-:pxelnx
-# set 210:string https://bas.stfu-kthx.net:8888/
-# chain \${210:string}pxelinux.0 || goto start
-# chain https://bas.stfu-kthx.net:8888/pxelinux.0
-# set next-server bas-stfu-kthx.net:8888
-# set 209:string https://bas.stfu-kthx.net:8888/pxelinux.cfg
-# imgload pxelinux.0
-set net0/next-server 192.52.3.91 ||
-set netX/next-server 192.52.3.91 ||
-set next-server 192.52.3.91 ||
-# set 209:string pxelinux.cfg/default
-# set 210:string bas.stfu-kthx.net
-# shell ||
-boot tftp://bas.stfu-kthx.net/pxelinux.0 || goto start
-:c32boot
-set net0/next-server 192.52.3.91 ||
-set netX/next-server 192.52.3.91 ||
-set next-server 192.52.3.91 ||
-boot tftp://bas.stfu-kthx.net/chain.c32 || goto start
+noAuthRouter.get('/load/registration', (req, res) => {
+ res.setHeader('content-type', 'text/plain')
+ fs.readFile(path.join(__appdir, 'ipxe', 'registration.ipxe'), 'utf-8', function (err, content) {
+ if (err) res.end()
+ res.send(content)
+ })
+})
-:sh
-shell
-goto start`)
- }
-}
+module.exports.noAuthRouter = noAuthRouter
diff --git a/server/api/registration.js b/server/api/registration.js
new file mode 100644
index 0000000..c87431c
--- /dev/null
+++ b/server/api/registration.js
@@ -0,0 +1,86 @@
+/* global __appdir */
+var path = require('path')
+const Infoblox = require('infoblox')
+var express = require('express')
+var router = express.Router()
+var noAuthRouter = express.Router()
+var db = require(path.join(__appdir, 'lib', 'sequelize'))
+
+// GET requests.
+
+/*
+ * @return:
+ */
+router.get('/', (req, res) => {
+ var ipam = new Infoblox({
+ ip: 'dhcp.uni-freiburg.de',
+ apiVersion: '1.7.1'
+ })
+ ipam.login('js1456', 'Test12345!').then(function (r) {
+ if (r) {
+ ipam.getIpsFromSubnet('10.21.9.0/24').then(function (response) {
+ console.log(response)
+ res.send(response)
+ })
+ }
+ // res.status(200).send({ status: 'work in progress ...' })
+ })
+})
+
+module.exports.router = router
+
+// GET requests.
+
+// POST requests.
+
+/*
+ *
+ * @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))
+
+ var script = '#!ipxe\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')
+ })
+
+ 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.status(200).send(script)
+ })
+})
+
+noAuthRouter.post('/group', (req, res) => {
+ const id = req.body.id
+
+ 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()
+ }
+ })
+})
+
+module.exports.noAuthRouter = noAuthRouter
diff --git a/server/ipxe/exitTestScript.ipxe b/server/ipxe/exitTestScript.ipxe
new file mode 100644
index 0000000..7bf1df6
--- /dev/null
+++ b/server/ipxe/exitTestScript.ipxe
@@ -0,0 +1,57 @@
+#!ipxe
+dhcp
+
+:start
+menu Please choose a webserver to load the ipxe menu:
+item reg Registration
+item pxelnx PxeLinux
+item c32boot C32Boot
+item exit Exit
+item exit0 Exit0
+item exit1 Exit1
+item sh [Shell]
+choose target && goto ${target}
+
+:reg
+set crosscert http://ca.ipxe.org/auto/
+chain --replace https://bas.stfu-kthx.net:8888/api/ipxe/load/registration ||
+goto start
+
+:exit
+exit ||
+goto start
+
+:exit0
+exit 0 ||
+goto start
+
+:exit1
+exit 1 ||
+goto start
+
+:pxelnx
+# set 210:string https://bas.stfu-kthx.net:8888/
+# chain \${210:string}pxelinux.0 || goto start
+# chain https://bas.stfu-kthx.net:8888/pxelinux.0
+# set next-server bas-stfu-kthx.net:8888
+# set 209:string https://bas.stfu-kthx.net:8888/pxelinux.cfg
+# imgload pxelinux.0
+set net0/next-server 192.52.3.91 ||
+set netX/next-server 192.52.3.91 ||
+set next-server 192.52.3.91 ||
+# set 209:string pxelinux.cfg/default
+# set 210:string bas.stfu-kthx.net
+# shell ||
+boot tftp://bas.stfu-kthx.net/pxelinux.0 ||
+goto start
+
+:c32boot
+set net0/next-server 192.52.3.91 ||
+set netX/next-server 192.52.3.91 ||
+set next-server 192.52.3.91 ||
+boot tftp://bas.stfu-kthx.net/chain.c32 ||
+goto start
+
+:sh
+shell ||
+goto start \ No newline at end of file
diff --git a/server/ipxe/general.h b/server/ipxe/general.h
index 8c8687e..5ee8d0e 100644
--- a/server/ipxe/general.h
+++ b/server/ipxe/general.h
@@ -146,7 +146,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define POWEROFF_CMD /* Power off command */
//#define IMAGE_TRUST_CMD /* Image trust management commands */
//#define PCI_CMD /* PCI commands */
-//#define PARAM_CMD /* Form parameter commands */
+#define PARAM_CMD /* Form parameter commands */
//#define NEIGHBOUR_CMD /* Neighbour management commands */
//#define PING_CMD /* Ping command */
#define CONSOLE_CMD /* Console command */
diff --git a/server/ipxe/main.ipxe b/server/ipxe/main.ipxe
index 763725a..f77e58d 100644
--- a/server/ipxe/main.ipxe
+++ b/server/ipxe/main.ipxe
@@ -15,14 +15,14 @@ choose target && goto ${target}
:js
set crosscert http://ca.ipxe.org/auto/
-chain https://bas.stfu-kthx.net:8888/api/ipxe/loadScript ||
+chain --replace https://bas.stfu-kthx.net:8888/api/ipxe/load/script ||
goto start
:uw
-chain http://10.4.9.115/boot.php
+chain http://10.4.9.115/boot.php ||
goto start
:ch
-chain http://10.4.9.122/boot.php
+chain http://10.4.9.122/boot.php ||
goto start
:sh
-shell
+shell ||
goto start
diff --git a/server/ipxe/registration.ipxe b/server/ipxe/registration.ipxe
new file mode 100644
index 0000000..88dc58f
--- /dev/null
+++ b/server/ipxe/registration.ipxe
@@ -0,0 +1,52 @@
+#!ipxe
+dhcp
+
+# Wallpaper
+set crosscert http://ca.ipxe.org/auto/
+#set img https://ife-server.com/b4db0y/ipxeWallpaper4.png || shell
+#set img tftp://bas.stfu-kthx.net/ipxeWallpaper4.png || shell
+set img tftp://bas.stfu-kthx.net/ipxeWallpaper3_scale.png || shell
+console --picture ${img} --x 800 --y 600 || shell
+
+:start
+menu Initializing client registration
+item --key i init Initialize
+item --key l localboot Localboot
+item --key r reboot Reboot
+item --key p poweroff Power Off
+item --key s sh [Shell]
+choose --default init --timeout 15000 target && goto ${target} || goto init
+
+:localboot
+exit0 ||
+exit1 ||
+goto start
+
+:init
+echo Enter PC name
+read pcname
+params
+param mac ${net0/mac}
+param uuid ${uuid}
+param ip ${net0/ip}
+param name ${pcname}
+chain https://bas.stfu-kthx.net:8888/api/registration/client##params ||
+shell
+goto start
+
+:reboot
+reboot
+
+:poweroff
+poweroff
+
+:sh
+#login
+echo Enter the password to access the shell
+read pw
+iseq ${pw} shell || goto start
+clear pw
+#iseq ${password} sh || goto start
+#clear username
+#clear password
+shell \ No newline at end of file
diff --git a/server/package-lock.json b/server/package-lock.json
index 3af2294..a7fdb87 100644
--- a/server/package-lock.json
+++ b/server/package-lock.json
@@ -129,6 +129,34 @@
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
},
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
+ },
+ "aws4": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
+ },
"axios": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
@@ -184,6 +212,15 @@
"safe-buffer": "5.1.1"
}
},
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "optional": true,
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
"bignumber.js": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.0.4.tgz",
@@ -277,6 +314,11 @@
"redeyed": "~1.0.0"
}
},
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ },
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
@@ -395,6 +437,14 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
"integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok="
},
+ "combined-stream": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
+ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
"commander": {
"version": "2.15.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
@@ -519,6 +569,14 @@
"es5-ext": "^0.10.9"
}
},
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
@@ -578,6 +636,11 @@
"rimraf": "^2.2.8"
}
},
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
"denque": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/denque/-/denque-1.2.3.tgz",
@@ -607,6 +670,16 @@
"resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.0.tgz",
"integrity": "sha1-2hkZgci41xPKARXViYzzl8Lw3dA="
},
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "optional": true,
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
"ecdsa-sig-formatter": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz",
@@ -1044,6 +1117,11 @@
}
}
},
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
"external-editor": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
@@ -1054,6 +1132,11 @@
"tmp": "^0.0.33"
}
},
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+ },
"fast-deep-equal": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
@@ -1147,6 +1230,21 @@
"resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
"integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k="
},
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+ },
+ "form-data": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
+ "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
"forwarded": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
@@ -1207,6 +1305,14 @@
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
},
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
"glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
@@ -1243,6 +1349,20 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
},
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+ },
+ "har-validator": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
+ "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
+ "requires": {
+ "ajv": "^5.3.0",
+ "har-schema": "^2.0.0"
+ }
+ },
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -1280,6 +1400,16 @@
"statuses": ">= 1.4.0 < 2"
}
},
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
@@ -1309,6 +1439,15 @@
"wrappy": "1"
}
},
+ "infoblox": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/infoblox/-/infoblox-1.1.5.tgz",
+ "integrity": "sha1-0I9kZFBxxoQdgp7l9vYFEDIJvSo=",
+ "requires": {
+ "bluebird": "^3.0.6",
+ "request": "^2.67.0"
+ }
+ },
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
@@ -1460,6 +1599,11 @@
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
"integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI="
},
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -1470,6 +1614,11 @@
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
},
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ },
"js-beautify": {
"version": "1.7.5",
"resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.7.5.tgz",
@@ -1502,11 +1651,22 @@
}
}
},
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "optional": true
+ },
"json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
},
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ },
"json-schema-traverse": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
@@ -1517,6 +1677,11 @@
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE="
},
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ },
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
@@ -1549,6 +1714,17 @@
}
}
},
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
"jsx-ast-utils": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz",
@@ -1948,6 +2124,11 @@
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
+ },
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -2092,6 +2273,11 @@
"pify": "^2.0.0"
}
},
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ },
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
@@ -2236,6 +2422,16 @@
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
},
+ "psl": {
+ "version": "1.1.29",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
+ "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ=="
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ },
"qs": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
@@ -2334,6 +2530,63 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
},
+ "request": {
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.0",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.4.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.35.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz",
+ "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg=="
+ },
+ "mime-types": {
+ "version": "2.1.19",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz",
+ "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==",
+ "requires": {
+ "mime-db": "~1.35.0"
+ }
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "uuid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
+ }
+ }
+ },
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -2433,6 +2686,11 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
},
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
"secure-password": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/secure-password/-/secure-password-3.0.0.tgz",
@@ -2643,6 +2901,22 @@
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.0.tgz",
"integrity": "sha1-UluKT9Jtb3GqYegipsr5dtMa0qg="
},
+ "sshpk": {
+ "version": "1.14.2",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
+ "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ }
+ },
"standard": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/standard/-/standard-11.0.1.tgz",
@@ -2863,6 +3137,29 @@
"resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz",
"integrity": "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg="
},
+ "tough-cookie": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "optional": true
+ },
"type-check": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
@@ -2945,6 +3242,16 @@
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
"which": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
diff --git a/server/package.json b/server/package.json
index 0ad1ccc..f7b967d 100644
--- a/server/package.json
+++ b/server/package.json
@@ -13,6 +13,7 @@
"debug": "^3.1.0",
"express": "^4.16.3",
"http-errors": "^1.6.3",
+ "infoblox": "^1.1.5",
"jsonwebtoken": "^8.2.1",
"morgan": "^1.9.0",
"mysql": "^2.15.0",
diff --git a/server/router.js b/server/router.js
index 062618d..6070f33 100644
--- a/server/router.js
+++ b/server/router.js
@@ -11,13 +11,12 @@ router.post('/signup', auth.signup)
router.post('/logout', auth.logout)
router.post('/changepassword', auth.changePassword)
-// Public callable functions.
-var ipxe = require(path.join(__dirname, 'api', 'ipxe'))
-router.get('/ipxe/loadScript', ipxe.get.loadScript)
-
// Forward routing to every api module with /<api>/...
fs.readdirSync(path.join(__dirname, 'api')).forEach(filename => {
var api = require(path.join(__dirname, 'api', filename))
+ // Public callable functions.
+ if (api.noAuthRouter) router.use('/' + filename.split('.')[0] + '/', api.noAuthRouter)
+ // Authentication needed
if (api.router) router.use('/' + filename.split('.')[0] + '/', auth.verifyToken, api.router)
})