summaryrefslogtreecommitdiffstats
path: root/server/api
diff options
context:
space:
mode:
authorChristian Hofmaier2019-04-15 17:35:47 +0200
committerChristian Hofmaier2019-04-15 17:35:47 +0200
commit139b11e4cc13024e96e25eeeaab3a8dac8b60396 (patch)
tree8e283cb0ce4965def5c0e56b2891842e1eefb7e6 /server/api
parentserver crash hotfix (diff)
downloadbas-139b11e4cc13024e96e25eeeaab3a8dac8b60396.tar.gz
bas-139b11e4cc13024e96e25eeeaab3a8dac8b60396.tar.xz
bas-139b11e4cc13024e96e25eeeaab3a8dac8b60396.zip
[eventmanager] integrate WoL utility
- add column to db - add checkbox to frontend - implement scheduler
Diffstat (limited to 'server/api')
-rw-r--r--server/api/events.js12
1 files changed, 10 insertions, 2 deletions
diff --git a/server/api/events.js b/server/api/events.js
index 63c25bc..5cea09b 100644
--- a/server/api/events.js
+++ b/server/api/events.js
@@ -5,6 +5,9 @@ var groupHelper = require(path.join(__appdir, 'lib', 'grouphelper'))
var express = require('express')
const { decorateApp } = require('@awaitjs/express')
var router = decorateApp(express.Router())
+const zmq = require('zeromq')
+const socket = zmq.socket('push')
+socket.connect('ipc:///tmp/bas_zeromq_events')
// ############################################################################
// ########################### GET requests #################################
@@ -44,6 +47,9 @@ router.postAsync('/blacklist', async (req, res) => {
router.postAsync(['', '/:id'], async (req, res) => {
if (req.query.delete !== undefined && req.query.delete !== 'false') {
await db.event.destroy({ where: { id: req.params.id || req.body.ids } }).then(count => { res.send({ count }) })
+ req.body.ids.forEach(id => {
+ socket.send(id)
+ })
} else {
var promises = []
var promisesBlacklist = []
@@ -54,26 +60,28 @@ router.postAsync(['', '/:id'], async (req, res) => {
// Update existing role
eventDb = await db.event.findOne({ where: { id: req.params.id } })
if (eventDb !== null) {
- promises.push(eventDb.update({ name: req.body.name, description: req.body.description, times: req.body.times, important: req.body.important, configId: req.body.config || null }))
+ promises.push(eventDb.update({ name: req.body.name, description: req.body.description, times: req.body.times, important: req.body.important, wakeonlan: req.body.wakeonlan, configId: req.body.config || null }))
promises.push(eventDb.setGroups(req.body.groups, { through: { blacklist: 0 } }))
promises.push(eventDb.setClients(req.body.clients, { through: { blacklist: 0 } }))
await Promise.all(promises)
promisesBlacklist.push(eventDb.addGroups(req.body.blacklistGroups, { through: { blacklist: 1 } }))
promisesBlacklist.push(eventDb.addClients(req.body.blacklistClients, { through: { blacklist: 1 } }))
await Promise.all(promisesBlacklist)
+ socket.send(eventDb.id)
res.send({ id: req.params.id })
} else {
res.status(404).end()
}
} else {
// Create new role
- eventDb = await db.event.create({ name: req.body.name, description: req.body.description, times: req.body.times, important: req.body.important, configId: req.body.config || null })
+ eventDb = await db.event.create({ name: req.body.name, description: req.body.description, times: req.body.times, important: req.body.important, wakeonlan: req.body.wakeonlan, configId: req.body.config || null })
promises.push(eventDb.setGroups(req.body.groups, { through: { blacklist: 0 } }))
promises.push(eventDb.setClients(req.body.clients, { through: { blacklist: 0 } }))
await Promise.all(promises)
promisesBlacklist.push(eventDb.addGroups(req.body.blacklistGroups, { through: { blacklist: 1 } }))
promisesBlacklist.push(eventDb.addClients(req.body.blacklistClients, { through: { blacklist: 1 } }))
await Promise.all(promisesBlacklist)
+ socket.send(eventDb.id)
res.send({ id: req.body.id })
}
}