From c2e8c08cb8fb36d6034b26da5d67e29224dfb324 Mon Sep 17 00:00:00 2001 From: Sebastien Clement Date: Sat, 4 Jan 2020 18:30:24 +0100 Subject: [PATCH] :hammer: Check cron settings before saving it --- .../rootfs/opt/nextcloud_backup/routes/api.js | 15 +++++++- .../opt/nextcloud_backup/tools/cronTools.js | 37 +++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 nextcloud_backup/rootfs/opt/nextcloud_backup/tools/cronTools.js diff --git a/nextcloud_backup/rootfs/opt/nextcloud_backup/routes/api.js b/nextcloud_backup/rootfs/opt/nextcloud_backup/routes/api.js index eef5471..38d55d1 100644 --- a/nextcloud_backup/rootfs/opt/nextcloud_backup/routes/api.js +++ b/nextcloud_backup/rootfs/opt/nextcloud_backup/routes/api.js @@ -8,6 +8,8 @@ const settingsTools = require('../tools/settingsTools'); const hassioApiTools = require('../tools/hassioApiTools'); +const cronTools = require('../tools/cronTools'); + @@ -123,8 +125,17 @@ router.get('/backup-settings', function(req, res, next){ router.post('/backup-settings', function(req, res, next){ //TODO check if config is valid - settingsTools.setSettings(req.body); - res.send(200); + if(cronTools.checkConfig(req.body)){ + settingsTools.setSettings(req.body); + res.send(); + } + else{ + res.status(400); + res.send(); + } + + + }); diff --git a/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/cronTools.js b/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/cronTools.js new file mode 100644 index 0000000..ba269d0 --- /dev/null +++ b/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/cronTools.js @@ -0,0 +1,37 @@ + + +function checkConfig(conf) { + if (conf.cron_base != null) { + if (conf.cron_base == '1' || conf.cron_base == '2' || conf.cron_base == '3') { + if (conf.cron_hour != null && conf.cron_hour.match(/\d\d:\d\d/)) { + if (conf.cron_base == '1') + return true; + } + else + return false; + } + + if (conf.cron_base == '2') { + if (conf.cron_weekday != null && conf.cron_weekday >= 0 && conf.cron_weekday <= 6) + return true; + else + return false; + } + + if ( conf.cron_base == '3'){ + if (conf.cron_month_day != null && conf.cron_month_day >= 1 && conf.cron_month_day <= 28) + return true; + else + return false; + } + + if(conf.cron_base == '0') + return true + } + else + return false; + + return false; +} + +exports.checkConfig = checkConfig; \ No newline at end of file