From 7a5aa7b0b8cf0706553dd7d1cb60fa39daca8a75 Mon Sep 17 00:00:00 2001 From: SebClem Date: Mon, 11 Jan 2021 20:22:12 +0100 Subject: [PATCH] :hammer: Add password protected option for snapshots #42 --- .../opt/nextcloud_backup/public/js/index.js | 13 ++- .../nextcloud_backup/tools/hassioApiTools.js | 3 + .../nextcloud_backup/tools/settingsTools.js | 19 +++++ .../views/modals/backup-settings-modal.ejs | 81 +++++++++++-------- 4 files changed, 82 insertions(+), 34 deletions(-) diff --git a/nextcloud_backup/rootfs/opt/nextcloud_backup/public/js/index.js b/nextcloud_backup/rootfs/opt/nextcloud_backup/public/js/index.js index 08cdcd7..361196f 100644 --- a/nextcloud_backup/rootfs/opt/nextcloud_backup/public/js/index.js +++ b/nextcloud_backup/rootfs/opt/nextcloud_backup/public/js/index.js @@ -181,6 +181,13 @@ function listeners() { $('#btn-clean-now').click(cleanNow); $('#trigger-backup-settings').click(getBackupSettings); + $('#password_protected').change(function () { + if (!$(this).is(':checked')) { + $('#password_protect_value').parent().parent().addClass('d-none'); + } else { + $('#password_protect_value').parent().parent().removeClass('d-none'); + } + }) $('#cron-drop-settings').change(updateDropVisibility); $('#save-backup-settings').click(sendBackupSettings); $('#auto_clean_local').change(function () { @@ -445,6 +452,8 @@ function sendBackupSettings() { let name_template = $('#name-template').val(); let excluded_folders_nodes = document.querySelectorAll('.folders-box:not(:checked)'); let exclude_folder = [""]; + let password_protected = $('#password_protected').is(':checked'); + let password_protect_value = $('#password_protect_value').val(); for (let i of excluded_folders_nodes) { exclude_folder.push(i.id); } @@ -469,7 +478,9 @@ function sendBackupSettings() { auto_clean_backup: auto_clean_backup, auto_clean_backup_keep: auto_clean_backup_keep, exclude_addon: exclude_addon, - exclude_folder: exclude_folder + exclude_folder: exclude_folder, + password_protected: password_protected, + password_protect_value: password_protect_value }) .done(() => { create_toast("success", "Backup settings saved !", default_toast_timeout); diff --git a/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/hassioApiTools.js b/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/hassioApiTools.js index 5ed1606..576ff12 100644 --- a/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/hassioApiTools.js +++ b/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/hassioApiTools.js @@ -284,6 +284,9 @@ function createNewBackup(name) { folders: folders }, }; + if(settingsTools.getSettings().password_protected === "true"){ + option.json.password = settingsTools.getSettings().password_protect_value + } got.post(`http://hassio/snapshots/new/partial`, option) .then((result) => { diff --git a/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/settingsTools.js b/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/settingsTools.js index f2f017d..b5436c9 100644 --- a/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/settingsTools.js +++ b/nextcloud_backup/rootfs/opt/nextcloud_backup/tools/settingsTools.js @@ -116,6 +116,25 @@ function check(conf, fallback = false) { conf.exclude_addon = [] needSave = true; } + if(conf.password_protected == null){ + if (fallback) { + logger.warn("Bad value for 'password_protected', fallback to false "); + conf.password_protected = 'false'; + } else { + logger.error("Bad value for 'password_protect_value'"); + return false; + } + } + + if(conf.password_protect_value == null){ + if (fallback) { + logger.warn("Bad value for 'password_protect_value', fallback to '' "); + conf.password_protect_value = ''; + } else { + logger.error("Bad value for 'password_protect_value'"); + return false; + } + } if (fallback || needSave) { setSettings(conf); 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 e6ddf47..0b83a4f 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 @@ -20,6 +20,50 @@ +
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+
+
+
Folders
+
+
+
+
+
    + +
+
+
+
+
+
+
+
Addons
+
+
+
+
+
    + +
+
+
+
+
@@ -61,36 +105,6 @@
-
-
-
-
-
Folders
-
-
-
-
-
    - -
-
-
-
-
-
-
-
Addons
-
-
-
-
-
    - -
-
-
-
-

Auto Clean Settings

@@ -102,7 +116,8 @@
- +
@@ -119,10 +134,10 @@
- +
-