From f2c9561d9b5c5a016f206055286be42e417b7a52 Mon Sep 17 00:00:00 2001 From: Sebastien Clement Date: Tue, 7 Sep 2021 12:39:31 +0200 Subject: [PATCH] :hammer: Add custom cron setting #78 --- .../opt/nextcloud_backup/tools/cronTools.js | 4 ++++ .../opt/nextcloud_backup/tools/settingsTools.js | 13 +++++++++++++ .../views/modals/backup-settings-modal.ejs | 16 ++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/cronTools.js b/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/cronTools.js index 62e8fb7..335ecb3 100644 --- a/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/cronTools.js +++ b/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/cronTools.js @@ -64,6 +64,10 @@ class CronContainer { cronStr = "" + splited[1] + " " + splited[0] + " " + settings.cron_month_day + " * *"; break; } + case "4": { + cronStr = settings.cron_custom; + break; + } } logger.info("Starting Cron..."); this.cronJob = new CronJob(cronStr, this._createBackup, null, false, Intl.DateTimeFormat().resolvedOptions().timeZone); diff --git a/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/settingsTools.js b/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/settingsTools.js index b6602e0..03a6d96 100644 --- a/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/settingsTools.js +++ b/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/settingsTools.js @@ -1,6 +1,7 @@ const fs = require("fs"); const logger = require("../config/winston"); const moment = require("moment"); +const CronJob = require("cron").CronJob; const settingsPath = "/data/backup_conf.json"; @@ -20,6 +21,17 @@ function check_cron(conf) { return conf.cron_month_day != null && conf.cron_month_day >= 1 && conf.cron_month_day <= 28; } + if (conf.cron_base === "4") { + if (conf.cron_custom != null) { + try { + new CronJob(conf.cron_custom, () => {}); + return true; + } catch(e) { + return false; + } + }else return false; + } + if (conf.cron_base === "0") return true; } else return false; @@ -35,6 +47,7 @@ function check(conf, fallback = false) { conf.cron_hour = "00:00"; conf.cron_weekday = "0"; conf.cron_month_day = "1"; + conf.cron_custom = "5 4 * * *"; } else { logger.error("Bad value for cron settings"); return [false, "Bad cron settings"]; diff --git a/nextcloud_backup/rootfs/opt/nextcloud_backup/views/modals/backup-settings-modal.ejs b/nextcloud_backup/rootfs/opt/nextcloud_backup/views/modals/backup-settings-modal.ejs index 22f7694..2e756d8 100644 --- a/nextcloud_backup/rootfs/opt/nextcloud_backup/views/modals/backup-settings-modal.ejs +++ b/nextcloud_backup/rootfs/opt/nextcloud_backup/views/modals/backup-settings-modal.ejs @@ -88,6 +88,7 @@ + @@ -120,6 +121,21 @@ + +
+
+ + + + Only '*', ranges (1-3,5), steps (*/2) are allowed. + + Generator + + +
+
+