🔨 Add custom cron setting #78

This commit is contained in:
Sebastien Clement 2021-09-07 12:39:31 +02:00
parent c9b4b71e85
commit f2c9561d9b
No known key found for this signature in database
GPG Key ID: 6C78A38312BBA4B6
3 changed files with 33 additions and 0 deletions

View File

@ -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);

View File

@ -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"];

View File

@ -88,6 +88,7 @@
<option value="1">Daily</option>
<option value="2">Weekly</option>
<option value="3">Monthly</option>
<option value="4">Custom</option>
</select>
</div>
</div>
@ -120,6 +121,21 @@
<input type="number" class="form-control" id="cron-drop-day-month" min="1" max="28">
</div>
</div>
<div class="row d-none mt-2">
<div class="col-12 col-lg-10 offset-lg-1">
<label for="cron-drop-custom" class="form-label">Custom Cron Pattern</label>
<input type="text" class="form-control" id="cron-drop-custom">
<span id="help-cron-custom"" class="form-text">
Only '*', ranges (1-3,5), steps (*/2) are allowed.
<a target="_blank"
href="https://crontab.guru/">
Generator
</a>
</span>
</div>
</div>
<div class="row my-3">
<div class="col-12 text-center border-secondary border"></div>
</div>