diff --git a/manifest.jps b/manifest.jps index f92b535..ec629cb 100644 --- a/manifest.jps +++ b/manifest.jps @@ -3,7 +3,7 @@ jpsVersion: 6.1.1 name: MightyBox WordPress Backup/Restore Addon id: mb-backup-manager description: Custom Backup and Restore Addon for WordPress using Restic. Supports backing up databases, core files, media files, and full backups with scheduling and retention policies. -baseUrl: https://deploy.mightybox.io/addons/mb-backup-manager/raw/branch/main/ +baseUrl: https://deploy-proxy.mightybox.io/addons/mb-backup-manager/raw/branch/main targetNodes: nodeType: @@ -12,145 +12,8 @@ targetNodes: - lemp - llsmp -settings: - main: - fields: - - type: radio-fieldset - name: scheduleType - hidden: false - default: '1' - values: - - value: 1 - caption: Pre-defined - - value: 2 - caption: Custom - - value: 3 - caption: Manual (crontab) - tooltip: "A simple cron-based - scheduler to automatically start the backup process based on prescribed timing - instructions.
Note that the required timestamps should be specified - respectively to the UTC time zone.
" - showIf: - 1: - - name: cronTime - caption: Backup schedule - type: list - editable: false - values: - - value: 0 * * * * - caption: "Hourly (at minute 0)" - - value: 0 0 * * * - caption: "Daily (at 00:00)" - - value: 0 0 * * 0 - caption: "Weekly (at 00:00 on Sunday)" - - value: 0 0 1 * * - caption: "Monthly (at 00:00 on day 1)" - default: 0 0 * * * - 2: - - type: string - name: backupTime - caption: Time - inputType: time - default: "09:00" - cls: x-form-text - width: 120 - required: true - - caption: Days - type: compositefield - name: days - defaultMargins: 0 12 0 0 - items: - - name: sun - value: true - type: checkbox - caption: Su - - name: mon - value: true - type: checkbox - caption: Mo - - name: tue - value: true - type: checkbox - caption: Tu - - name: wed - value: true - type: checkbox - caption: We - - name: thu - value: true - type: checkbox - caption: Th - - name: fri - value: true - type: checkbox - caption: Fr - - name: sat - value: true - type: checkbox - caption: Sa - - name: "tz" - caption: "Time Zone" - type: "list" - required: true - editable: true - forceSelection: true - values: values - 3: - - name: cronTime - caption: Crontab - type: string - default: 0 0 * * * - regexText: Cron syntax is incorrect! - regex: "^(((([\\\\*]{1}){1,})|((\\\\*\\\\\\/){0,1}(([0-9\\/\\*\\-\\,]{1}){1,}|(([1-5]{1}){1}([0-9\\/\\*\\-\\,]{1}){1,}){1}))) - ((([\\\\*]{1}){1,})|((\\\\*\\\\\\/){0,1}(([0-9\\/\\*\\-\\,]{1}){1,}|(([1]{1}){1}([0-9\\/\\*\\-\\,-]{1}){1,}){1}|([2]{1}){1}([0-3]{1}){1}))) - ((([\\\\*]{1}){1})|((\\\\*\\\\\\/){0,1}(([1-9]{1}){1}|(([1-2]{1}){1}([0-9\\/\\*\\-\\,]{1}){1,5}){1}|([3]{1}){1}([0-1]{1}){1}))) - ((([\\\\*]{1}){1})|((\\\\*\\\\\\/){0,1}(([1-9]{1}){1}|(([1-2]{1}){1}([0-9\\/\\*\\-\\,]{1}){1,}){1}|([3]{1}){1}([0-1]{1}){1}))|(jan|JAN|feb|FEB|mar|MAR|apr|APR|may|MAY|jun|JUN|jul|JUL|aug|AUG|sep|SEP|okt|OKT|nov|NOV|dec|DEC)(-?\\w+?)?) - ((([\\\\*]{1}){1})|((\\\\*\\\\\\/){0,1}(([0-7]{1,}(-?[0-7]?(,[0-7]){0,6})){1}))|((sun|SUN|mon|MON|tue|TUE|wed|WED|thu|THU|fri|FRI|sat|SAT)?(,(sun|SUN|mon|MON|tue|TUE|wed|WED|thu|THU|fri|FRI|sat|SAT)){0,6})(-?\\w+?)?))$|^(@(reboot|yearly|annualy|monthly|weekly|daily|hourly))$" - - caption: Backup storage - type: list - tooltip: "The environment with backup storage to be used for backups creation. Presence of this environment is obligatory." - name: storageName - dependsOn: region - required: true - - type: spinner - name: backupCount - caption: Number of backups - tooltip: "The number of newest backups to be kept during rotation." - min: 1 - max: 30 - default: 5 - onBeforeInit: scripts/configOnBeforeInit.js - - restore: - fields: [] - onBeforeInit: scripts/multipleRestoreOnBeforeInit.js - -onBeforeInit: scripts/backupOnBeforeInit.js - -buttons: -- caption: Backup Now - action: backup - loadingText: Backing up... - confirmText: Do you want to initiate the backup process? - successText: The backup process has been finished successfully. - -- caption: Configure - action: configure - settings: main - loadingText: Configuring... - successText: The backup configs have been updated successfully. - -- caption: Restore - action: restore - loadingText: Restoring... - settings: restore - successText: The backup have been successfully restored. - title: Restore Backup - submitButtonText: Restore - confirmText: You are going to restore from a backup, which will override all your existing data. This action cannot be canceled or reverted. Do you want to proceed? - globals: - scriptSufix: wp-backup + scriptSufix: wpmb-backup onInstall: - checkApplication @@ -173,21 +36,9 @@ onAfterClone: - script: return {result:0, jps:MANIFEST}; - install: ${response.jps} nodeGroup: ${targetNodes.nodeGroup:cp} - envName: ${event.response.env.envName} settings: - scheduleType: ${settings.scheduleType} - storageName: ${settings.storageName} - cronTime: ${settings.cronTime} - backupTime: ${settings.backupTime} - sun: ${settings.sun} - mon: ${settings.mon} - tue: ${settings.tue} - wed: ${settings.wed} - thu: ${settings.thu} - fri: ${settings.fri} - sat: ${settings.sat} - tz: ${settings.tz} - backupCount: ${settings.backupCount} + cronTime: "0 * * * *" + backupCount: "5" onAfterConfirmTransfer: setSchedule @@ -230,16 +81,16 @@ actions: installRestic: cmd [cp]: |- - if which dnf; then - dnf install epel-release - dnf install restic + if which dnf >/dev/null 2>&1; then + dnf install -y epel-release + dnf install -y restic else yum-config-manager --add-repo https://copr.fedorainfracloud.org/coprs/copart/restic/repo/epel-7/copart-restic-epel-7.repo yum-config-manager --enable copr:copr.fedorainfracloud.org:copart:restic yum -y install restic yum-config-manager --disable copr:copr.fedorainfracloud.org:copart:restic wget -O /etc/logrotate.d/backup-addon ${baseUrl}/scripts/backup-addon; - fi + fi user: root installScript: @@ -249,7 +100,7 @@ actions: params: scriptName: ${env.envName}-${globals.scriptSufix} baseUrl: ${baseUrl} - cronTime: ${this.cronTime} + cronTime: '${this.cronTime}' backupCount: ${this.backupCount} userId: ${env.uid} storageNodeId: ${response.storageCtid} @@ -289,45 +140,11 @@ actions: getStorageCtid: - script: scripts/getStorageCtid.js - - convert: - - script: | - var resp = {result:0, onAfterReturn: {setGlobals:{cron: ""}}}, offset = java.util.TimeZone.getTimeZone("${settings.tz}").getRawOffset(), - setGlobals = resp.onAfterReturn.setGlobals; - - var time = "${settings.backupTime}".split(":"), - d1 = new Date(2020, 1, 10, parseInt(time[0],10), parseInt(time[1],10)), - d2 = new Date(d1.getTime() - offset), - dd = d2.getDate() - d1.getDate(), - days = getDays([${settings.sun:0}, ${settings.mon:0}, ${settings.tue:0}, ${settings.wed:0}, ${settings.thu:0}, ${settings.fri:0}, ${settings.sat:0}], dd); - - setGlobals.cron = d2.getMinutes() + " " + d2.getHours() + " * * " + days.join(","); - - - function getDays(settings, dd) { - var days = []; - for (var i = 0, n = settings.length; i < n; i++) { - if (settings[i]) { - var day = i + dd; - if (day < 0) day +=7; else if (day > 6) day -=7; - days.push(day); - } - } - days.sort(); - return days; - } - - return resp; setSchedule: - setGlobals: - storageEnv: ${settings.storageName} - - if ("${settings.scheduleType}" == 2): - - convert - - else: - - setGlobals: cron: ${settings.cronTime} - installScript: cronTime: ${globals.cron} - backupCount: ${settings.backupCount} + backupCount: 5 \ No newline at end of file diff --git a/scripts/backup-addon b/scripts/backup-addon deleted file mode 100644 index 5166e0f..0000000 --- a/scripts/backup-addon +++ /dev/null @@ -1,8 +0,0 @@ -/var/log/backup_addon.log { - weekly - rotate 52 - missingok - notifempty - compress - copytruncate -} \ No newline at end of file