var express = require('express') var router = express.Router() var path = require('path') function mapActions (api, method) { return function (req, res) { if (method in api && req.params.action in api[method]) { api[method][req.params.action](req, res) } else { res.status(501).end() } } } // Authentication routes var auth = require(path.join(__dirname, 'lib', 'authentication')) router.get('/auth', auth.auth) router.post('/login', auth.login) router.post('/signup', auth.signup) router.post('/logout', auth.logout) router.post('/changepassword', auth.changePassword) // User API var user = require(path.join(__dirname, 'api', 'user')) router.get('/user/info', auth.verifyToken, user.info) // Groups API var groups = require(path.join(__dirname, 'api', 'groups')) router.get('/groups/:action', mapActions(groups, 'get')) router.post('/groups/:action', mapActions(groups, 'post')) // Clients API var clients = require(path.join(__dirname, 'api', 'clients')) router.get('/clients/:action', mapActions(clients, 'get')) router.post('/clients/:action', mapActions(clients, 'post')) // Permissions API var permissions = require(path.join(__dirname, 'api', 'permissions')) router.get('/getRolesByUserid', permissions.getRolesByUserid) router.post('/getRoleById', auth.verifyToken, permissions.getRoleById) // Shell API var shell = require(path.join(__dirname, 'lib', 'shell')) router.get('/shell/buildipxe', shell.buildIPXE) // Nodemailer API var nodemailer = require(path.join(__dirname, 'lib', 'nodemailer')) router.get('/mail/send', nodemailer.sendMail) // External backends API var backends = require(path.join(__dirname, 'api', 'backends')) router.get('/backends/getCredentialsByType', auth.verifyToken, backends.getCredentialsByType) router.get('/backends/getBackendInfoById', auth.verifyToken, backends.getBackendInfoById) router.get('/backends/getBackendList', auth.verifyToken, backends.getBackendList) router.get('/backends/getBackendTypes', backends.getBackendTypes) router.get('/backends/checkConnection', auth.verifyToken, backends.checkConnectionById) router.post('/backends/saveBackend', auth.verifyToken, backends.saveBackend) router.post('/backends/deleteBackends', auth.verifyToken, backends.deleteBackends) router.post('/backends/checkConnection', auth.verifyToken, backends.checkConnection) // Load ipxe scipts API var ipxeloader = require(path.join(__dirname, 'api', 'ipxe-loader')) router.get('/ipxe-loader/load-script', ipxeloader.loadScript) module.exports = router