diff --git a/apps/accounts/automations/backup_account/handlers.py b/apps/accounts/automations/backup_account/handlers.py index c47454685..6a00a2436 100644 --- a/apps/accounts/automations/backup_account/handlers.py +++ b/apps/accounts/automations/backup_account/handlers.py @@ -168,9 +168,8 @@ class AccountBackupHandler: if not user.secret_key: attachment_list = [] else: - password = user.secret_key.encode('utf8') attachment = os.path.join(PATH, f'{plan_name}-{local_now_filename()}-{time.time()}.zip') - encrypt_and_compress_zip_file(attachment, password, files) + encrypt_and_compress_zip_file(attachment, user.secret_key, files) attachment_list = [attachment, ] AccountBackupExecutionTaskMsg(plan_name, user).publish(attachment_list) print('邮件已发送至{}({})'.format(user, user.email)) @@ -191,7 +190,6 @@ class AccountBackupHandler: attachment = os.path.join(PATH, f'{plan_name}-{local_now_filename()}-{time.time()}.zip') if password: print('\033[32m>>> 使用加密密码对文件进行加密中\033[0m') - password = password.encode('utf8') encrypt_and_compress_zip_file(attachment, password, files) else: zip_files(attachment, files) diff --git a/apps/accounts/automations/change_secret/manager.py b/apps/accounts/automations/change_secret/manager.py index d85e057b5..e4d1a0fd5 100644 --- a/apps/accounts/automations/change_secret/manager.py +++ b/apps/accounts/automations/change_secret/manager.py @@ -230,9 +230,8 @@ class ChangeSecretManager(AccountBasePlaybookManager): for user in recipients: attachments = [] if user.secret_key: - password = user.secret_key.encode('utf8') attachment = os.path.join(path, f'{name}-{local_now_filename()}-{time.time()}.zip') - encrypt_and_compress_zip_file(attachment, password, [filename]) + encrypt_and_compress_zip_file(attachment, user.secret_key, [filename]) attachments = [attachment] ChangeSecretExecutionTaskMsg(name, user, summary).publish(attachments) os.remove(filename) diff --git a/apps/common/utils/file.py b/apps/common/utils/file.py index ac3f5868b..19772d5d7 100644 --- a/apps/common/utils/file.py +++ b/apps/common/utils/file.py @@ -21,6 +21,8 @@ def encrypt_and_compress_zip_file(filename, secret_password, encrypted_filenames with pyzipper.AESZipFile( filename, 'w', compression=pyzipper.ZIP_LZMA, encryption=pyzipper.WZ_AES ) as zf: + if secret_password and isinstance(secret_password, str): + secret_password = secret_password.encode('utf8') zf.setpassword(secret_password) for encrypted_filename in encrypted_filenames: with open(encrypted_filename, 'rb') as f: