/* global __appdir */ var path = require('path') var db = require(path.join(__appdir, 'lib', 'sequelize')) var express = require('express') const { decorateApp } = require('@awaitjs/express') var noAuthRouter = decorateApp(express.Router()) const configHelper = require(path.join(__appdir, 'lib', 'confighelper')) const log = require(path.join(__appdir, 'lib', 'log')) noAuthRouter.getAsync('/configs/:id', async (req, res) => { const config = await configHelper.prepareConfig({ id: req.params.id }) res.set('Content-Type', 'text/plain') res.send(config.script) }) noAuthRouter.getAsync('/groups/:id', async (req, res) => { const list = req.query.list !== undefined && req.query.list !== 'false' const group = await db.group.findOne({ where: { id: req.params.id } }) const config = await configHelper.getGroupConfig(group, list) if (!config) return res.status(404).end() if (!list) { res.set('Content-Type', 'text/plain') res.send(config.script) } else { res.send(config) } }) noAuthRouter.getAsync(['/:uuid', '/'], async (req, res) => { const list = req.query.list !== undefined && req.query.list !== 'false' const client = await db.client.findOne({ where: { uuid: req.params.uuid } }) const config = await configHelper.getConfig(client, list) if (!list) { const logEntry = { category: 'CLIENT_BOOT', description: 'Client booted iPXE config [' + config.id + '] ' + config.name + '.\n' + 'Client UUID: ' + req.params.uuid + '\n' + 'Config ID: ' + config.id + '\n' + 'Config Name: ' + config.name } if (client) logEntry.clientId = client.id log(logEntry) res.set('Content-Type', 'text/plain') res.send(config.script) } else { res.send(config) } }) module.exports.noAuthRouter = noAuthRouter