From 94b5107bcb62b6dbc05310c5bd861ecc8f7cc15d Mon Sep 17 00:00:00 2001 From: Dmytro Kyrychuk Date: Tue, 27 Jun 2023 09:37:38 +0000 Subject: [PATCH] Fix issue with slash (/) characters in B2 Application Key Urlencode B2 Application Key when saving configuration, urldecode it back when reading. Duplicity accepts urlencoded target directly, no decoding is necessary when backup is performed. Resolve #1964 --- management/backup.py | 2 +- management/templates/system-backup.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/management/backup.py b/management/backup.py index 06285ba5..6642419e 100755 --- a/management/backup.py +++ b/management/backup.py @@ -509,7 +509,7 @@ def list_target_files(config): # Extract information from target b2_application_keyid = target.netloc[:target.netloc.index(':')] - b2_application_key = target.netloc[target.netloc.index(':')+1:target.netloc.index('@')] + b2_application_key = urllib.parse.unquote(target.netloc[target.netloc.index(':')+1:target.netloc.index('@')]) b2_bucket = target.netloc[target.netloc.index('@')+1:] try: diff --git a/management/templates/system-backup.html b/management/templates/system-backup.html index f7305518..a49d235c 100644 --- a/management/templates/system-backup.html +++ b/management/templates/system-backup.html @@ -291,7 +291,7 @@ function show_custom_backup() { var b2_applicationkey = targetPath.split(':')[1].split('@')[0]; var b2_bucket = targetPath.split('@')[1]; $("#backup-target-b2-user").val(b2_application_keyid); - $("#backup-target-b2-pass").val(b2_applicationkey); + $("#backup-target-b2-pass").val(decodeURIComponent(b2_applicationkey)); $("#backup-target-b2-bucket").val(b2_bucket); } toggle_form() @@ -316,7 +316,7 @@ function set_custom_backup() { + "/" + $("#backup-target-rsync-path").val(); target_user = ''; } else if (target_type == "b2") { - target = 'b2://' + $('#backup-target-b2-user').val() + ':' + $('#backup-target-b2-pass').val() + target = 'b2://' + $('#backup-target-b2-user').val() + ':' + encodeURIComponent($('#backup-target-b2-pass').val()) + '@' + $('#backup-target-b2-bucket').val() target_user = ''; target_pass = '';