1
0
mirror of https://github.com/mail-in-a-box/mailinabox.git synced 2025-04-11 01:27:17 +00:00
This commit is contained in:
barrybingo 2022-06-17 16:20:06 -06:00 committed by GitHub
commit 03ccb632a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -498,10 +498,12 @@ def list_target_files(config):
info = InMemoryAccountInfo()
b2_api = B2Api(info)
# 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_bucket = target.netloc[target.netloc.index('@')+1:]
unquoted_url = urllib.parse.unquote(target.netloc)
# Extract information from unquoted_url
b2_application_keyid = unquoted_url[:unquoted_url.index(':')]
b2_application_key = unquoted_url[unquoted_url.index(':')+1:unquoted_url.index('@')]
b2_bucket = unquoted_url[unquoted_url.index('@')+1:]
try:
b2_api.authorize_account("production", b2_application_keyid, b2_application_key)
@ -521,7 +523,13 @@ def backup_set_custom(env, target, target_user, target_pass, min_age):
if isinstance(min_age, str):
min_age = int(min_age)
config["target"] = target
# b2 url must be escaped
if target.startswith('b2://'):
import urllib.parse
config["target"] = 'b2://' + urllib.parse.quote(target[5:], safe=':@')
else:
config["target"] = target
config["target_user"] = target_user
config["target_pass"] = target_pass
config["min_age_in_days"] = min_age
@ -567,6 +575,11 @@ def get_backup_config(env, for_save=False, for_ui=False):
if field in config:
del config[field]
if config["target"].startswith('b2://'):
import urllib.parse
# unquote the URL for the admin
config["target"] = urllib.parse.unquote(config["target"])
# helper fields for the admin
config["file_target_directory"] = os.path.join(backup_root, 'encrypted')
config["enc_pw_file"] = os.path.join(backup_root, 'secret_key.txt')