From 3148c621d2a1e432ecb443c287c292cd1b9fd432 Mon Sep 17 00:00:00 2001 From: Dmytro Kyrychuk Date: Sat, 2 Sep 2023 14:03:24 +0300 Subject: [PATCH] Fix issue with slash (/) characters in B2 Application Key (#2281) 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 = '';