diff --git a/modules/admin.js b/modules/admin.js index 37e1583..a717d6a 100644 --- a/modules/admin.js +++ b/modules/admin.js @@ -341,6 +341,8 @@ export default class admin { zoom: parseFloat(data.zoom) || 1.0, index: bundle.allSlides.length, transition: null, + epochStart: -1, + epochEnd: -1 }; let obj = bundle.findSlideByUuid(filename); @@ -353,6 +355,8 @@ export default class admin { obj.displayTime = data.displayTime; obj.zoom = parseFloat(data.zoom) || 1.0; obj.transition = null; + obj.epochStart = -1; + obj.epochEnd = -1; } bundle.save(); @@ -402,11 +406,13 @@ export default class admin { enabled: true, displayTime: data.displayTime, type: "video", - webUrl: data.url, + url: data.url, mute: data.mute, loop: data.loop, index: bundle.allSlides.length, - transition: null + transition: null, + epochStart: -1, + epochEnd: -1 }; let obj = bundle.findSlideByUuid(filename); @@ -420,6 +426,8 @@ export default class admin { obj.mute = data.mute; obj.loop = data.loop; obj.transition = null; + obj.epochEnd = -1; + obj.epochStart = -1; } bundle.save(); diff --git a/routes/auth.js b/routes/auth.js index 328039f..563a2cb 100644 --- a/routes/auth.js +++ b/routes/auth.js @@ -27,80 +27,82 @@ export default function (websocket, dispatcher) { }); router.post('/login', - function (req, res, next) { - passport.authenticate('local', async function (err, user, info) { - const ipAddr = req.ip; - const usernameIPkey = getUsernameIPkey(req.body.username, ipAddr); - - const [resUsernameAndIP, resSlowByIP] = await Promise.all([ - limiterConsecutiveFailsByUsernameAndIP.get(usernameIPkey), - limiterSlowBruteByIP.get(ipAddr), - ]); - - let retrySecs = 0; - - // Check if IP or Username + IP is already blocked - if (resSlowByIP !== null && resSlowByIP.consumedPoints > maxWrongAttemptsByIPperDay) { - retrySecs = Math.round(resSlowByIP.msBeforeNext / 1000) || 1; - } else if (resUsernameAndIP !== null && resUsernameAndIP.consumedPoints > maxConsecutiveFailsByUsernameAndIP) { - retrySecs = Math.round(resUsernameAndIP.msBeforeNext / 1000) || 1; - } - - if (retrySecs > 0) { - console.log(`Blocked ${req.ip}, due too many requests`); - res.status(429).end('Too Many Requests'); - return; - } else { - if (!user) { - // Consume 1 point from limiters on wrong attempt and block if limits reached - try { - const promises = [limiterSlowBruteByIP.consume(ipAddr)]; - // Count failed attempts by Username + IP only for registered users - promises.push(limiterConsecutiveFailsByUsernameAndIP.consume(usernameIPkey)); - await Promise.all(promises); - - return res.redirect('/login'); - } catch (rlRejected) { - if (rlRejected instanceof Error) { - throw rlRejected; - } else { - console.log(`Blocked ${req.ip}, due too many requests`); - res.status(429).end('Too Many Requests'); - return; - } + function (req, res, next) { + passport.authenticate('local', async function (err, user, info) { + const ipAddr = req.ip; + const usernameIPkey = getUsernameIPkey(req.body.username, ipAddr); + + const [resUsernameAndIP, resSlowByIP] = await Promise.all([ + limiterConsecutiveFailsByUsernameAndIP.get(usernameIPkey), + limiterSlowBruteByIP.get(ipAddr), + ]); + + let retrySecs = 0; + + // Check if IP or Username + IP is already blocked + if (resSlowByIP !== null && resSlowByIP.consumedPoints > maxWrongAttemptsByIPperDay) { + retrySecs = Math.round(resSlowByIP.msBeforeNext / 1000) || 1; + } else if (resUsernameAndIP !== null && resUsernameAndIP.consumedPoints > maxConsecutiveFailsByUsernameAndIP) { + retrySecs = Math.round(resUsernameAndIP.msBeforeNext / 1000) || 1; + } + + if (retrySecs > 0) { + console.log(`Blocked ${req.ip}, due too many requests`); + res.status(429).end('Too Many Requests'); + return; + } else { + if (!user) { + // Consume 1 point from limiters on wrong attempt and block if limits reached + try { + const promises = [limiterSlowBruteByIP.consume(ipAddr)]; + // Count failed attempts by Username + IP only for registered users + promises.push(limiterConsecutiveFailsByUsernameAndIP.consume(usernameIPkey)); + await Promise.all(promises); + + return res.redirect('/login'); + } catch (rlRejected) { + if (rlRejected instanceof Error) { + throw rlRejected; + } else { + console.log(`Blocked ${req.ip}, due too many requests`); + res.status(429).end('Too Many Requests'); + return; } - } - req.logIn(user, async function (err) { - if (err) { - return next(err); - } - - if (resUsernameAndIP !== null && resUsernameAndIP.consumedPoints > 0) { - // Reset on successful authorisation - await limiterConsecutiveFailsByUsernameAndIP.delete(usernameIPkey); - } - - if (req.session.location) { - return res.redirect(req.session.location); - } - return res.redirect("/"); - }); + } + req.logIn(user, async function (err) { if (err) { - return next(err); } + + if (resUsernameAndIP !== null && resUsernameAndIP.consumedPoints > 0) { + // Reset on successful authorisation + await limiterConsecutiveFailsByUsernameAndIP.delete(usernameIPkey); + } + + if (req.session.location) { + return res.redirect(req.session.location); + } + return res.redirect("/"); + }); + + if (err) { + + return next(err); } - })(req, res, next); - }); + } + })(req, res, next); + }); router.get('/logout', - function (req, res) { - req.logout(); - res.redirect('/'); - }); + function (req, res) { + req.logout({}, (err) => { + res.redirect('/') + } + ); + }); router.get('/empty', function (req, res, next) { res.render('empty'); diff --git a/views/admin/editBundleSlides.twig b/views/admin/editBundleSlides.twig index 910fcb6..2ff3e21 100644 --- a/views/admin/editBundleSlides.twig +++ b/views/admin/editBundleSlides.twig @@ -25,11 +25,11 @@ -
+
- +
{{ slide.name }}
@@ -42,7 +42,7 @@
@@ -104,7 +104,7 @@ } } - socket.on("callback.updateBundleData", function() { + socket.on("callback.updateBundleData", function() { document.location.reload(true); }); diff --git a/views/admin/editBundles.twig b/views/admin/editBundles.twig index f5e144d..8fdde57 100644 --- a/views/admin/editBundles.twig +++ b/views/admin/editBundles.twig @@ -3,13 +3,13 @@ {% block header %} {% if config.useLocalAssets %} - + {% else %} - + {% endif %} - {% endblock %} @@ -24,11 +24,11 @@
Bundle
-
- +
@@ -36,7 +36,7 @@
Bundle
-
@@ -46,8 +46,8 @@
{% endblock %} diff --git a/views/admin/video.twig b/views/admin/video.twig index ee995fb..43df0b0 100644 --- a/views/admin/video.twig +++ b/views/admin/video.twig @@ -60,7 +60,7 @@