%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3/dist-packages/duplicity/backends/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3/dist-packages/duplicity/backends/__pycache__/s3_boto3_backend.cpython-312.pyc

�

�2e)���ddlZddlZddlmZddlmZddlmZddlmZddlmZm	Z	Gd�dejj�ZGd	�d
e
�Zejjde�ejjde�y)
�N)�config)�file_naming)�log)�progress)�FatalBackendException�BackendExceptionc�:�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�S3Boto3Backenda�
    Backend for Amazon's Simple Storage System, (aka Amazon S3), though
    the use of the boto3 module. (See
    https://boto3.amazonaws.com/v1/documentation/api/latest/index.html
    for information on boto3.)

    Pursuant to Amazon's announced deprecation of path style S3 access,
    this backend only supports virtual host style bucket URIs.
    See the man page for full details.

    To make use of this backend, you must provide AWS credentials.
    This may be done in several ways: through the environment variables
    AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY, by the
    ~/.aws/credentials file, by the ~/.aws/config file,
    or by using the boto2 style ~/.boto or /etc/boto.cfg files.
    c���tjjj||�|jjd�D�cgc]
}|dk7s�	|��}}|r|j
d�|_ntd��|rdj|��d�|_
nd|_
||_tjj|�|_
d|_d|_t!�|_ycc}w)N�/�rzS3 requires a bucket name.)�	duplicity�backend�Backend�__init__�path�split�pop�bucket_namer�join�
key_prefix�
parsed_url�strip_auth_from_url�straight_url�s3�bucket�UploadProgressTracker�tracker)�selfr�x�url_path_partss    �E/usr/lib/python3/dist-packages/duplicity/backends/s3_boto3_backend.pyrzS3Boto3Backend.__init__Ds������!�!�*�*�4��<�
&0�_�_�%:�%:�3�%?�K��1��7�!�K��K��-�1�1�!�4�D��"�#?�@�@��!$���.�!9� :�!�<�D�O� �D�O�$���%�-�-�A�A�*�M���������,�.����Ls�
C)�C)c�Z�ddl}ddl}ddlm}d|_|jdtjtjtj��|_
	|jjjj|j��|jj+|j�|_y#|jj$rP}|j dd}|dk(r3t#d	|j�d
�t$j&j(����d}~wwxYw)Nr��ClientErrorr)�region_name�use_ssl�endpoint_url)�Bucket�Error�Code�404zS3 bucket "z" does not exist��code)�boto3�botocore�botocore.exceptionsr%r�resourcer�s3_region_name�s3_unencrypted_connection�s3_endpoint_urlr�meta�client�head_bucketr�
exceptions�responserr�	ErrorCode�backend_not_foundr))rr/r0r%�bce�
error_codes      r"�reset_connectionzS3Boto3Backend.reset_connection[s�����3�����.�.���-�-��9�9�9��/�/�	!�
���
	��G�G�L�L���+�+�4�3C�3C�+�D��g�g�n�n�T�%5�%5�6�����"�"�.�.�	����g�.�v�6�J��U�"�+�!�$�"2�"2�!3�3C�D����8�8���
��	�s�:C�D*�AD%�%D*c	���
�ddlm}|js|j�tj
tjtjtjg�
�
fd�}tjrd}nytjrd}nftjrd}nStjr||�sd}n8tjr||�sd}ntjr||�sd	}nd
}d|i}tj rd|d
<n�tj"rptj$�%t'dt(j*j,���d|d
<tj$|d<tj.rtj.|d<|tj0tj0tj2��}|j4}t7j8|�}|j:|z}	t)j<d|j>�d|�d|�d��|jjA|jBjD|	�jG|jH|jJ||��y)Nr)�TransferConfigc�^��t�D�cgc]}|j|���c}�Scc}w�N)�any�match)�filenamer �glacier_exceptionss  �r"�is_glacier_exceptionz1S3Boto3Backend._put.<locals>.is_glacier_exception�s&����3E�F�a�����)�F�G�G��Fs�*�REDUCED_REDUNDANCY�STANDARD_IA�
ONEZONE_IA�GLACIER�
GLACIER_IR�DEEP_ARCHIVE�STANDARD�StorageClass�AES256�ServerSideEncryptionzOS3 USE SSE KMS was requested, but key id not provided require (--s3-kms-key-id)r-zaws:kms�SSEKMSKeyId�GrantFullControl)�multipart_chunksize�multipart_threshold�max_concurrencyz
Uploading rz to z Storage)�Callback�Config�	ExtraArgs)&�boto3.s3.transferrArr?r�full_manifest_re�inc_manifest_re�full_sig_re�
new_sig_rer�
s3_use_rrs�	s3_use_ia�s3_use_onezone_ia�s3_use_glacier�s3_use_glacier_ir�s3_use_deep_archive�
s3_use_sse�s3_use_sse_kms�
s3_kms_key_idrrr;�s3_kms_no_id�s3_kms_grant�s3_multipart_chunk_size�s3_multipart_max_procsr�os�fsdecoder�Infor�Objectr�name�upload_file�uc_name�progress_cb)r�local_source_path�remote_filenamerArH�
storage_class�
extra_args�transfer_configr�keyrGs          @r"�_putzS3Boto3Backend._putvs���4��w�w��!�!�#�
�(�(��'�'��#�#��"�"�	
��	H����0�M�
�
�
�)�M�
�
%�
%�(�M�
�
"�
"�+?��+P�%�M�
�
%�
%�.B�?�.S�(�M�
�
'�
'�0D�_�0U�*�M�&�M�$�m�4�
����19�J�-�.�
�
"�
"��#�#�+�+�h����3�3���2;�J�-�.�(.�(<�(<�J�}�%��"�"�17�1D�1D�
�-�.�(� &� >� >� &� >� >�"�9�9�
���,�,���+�+�o�6���o�o��/�����:�d�/�/�0��/�1B�$�}�o�U]�^�_������t�{�{�'�'��-�9�9��%�%��(�(�"� �		:�	
�c��ddlm}|js|j�t	j
|�}|j|z}	|jj|jj|�j|j�y#|$r=}|jdddk(rtjd|�d|���n|�Yd}~yd}~wwxYw)Nrr$r*r+�InvalidObjectStatezFile z` seems to be in a long term storage, please use AWS Console/API to initiate restore.
API-Error: )r1r%rr?rmrnrrprrq�
download_filersr:r�
FatalError)rrv�
local_pathr%rz�ioss      r"�_getzS3Boto3Backend._get�s���3��w�w��!�!�#��+�+�o�6���o�o��/��		��G�G�N�N�4�;�;�+�+�S�1�?�?�
�@R�@R�S���	��|�|�G�$�V�,�0D�D�����O�,�-S�SV�RW�Y��
�	���	�s�A	B�C�3C�Cc��|js|j�g}|jjj	|j
��D]s}	|jj|j
dd�}|jtj|��tjd|j�d|����u|S#t$rY��wxYw)N)�Prefixr
�zListed r)rr?r�objects�filterrrz�replace�appendrm�fsencoder�Debugr�AttributeError)r�
filename_list�objrFs    r"�_listzS3Boto3Backend._list�s����w�w��!�!�#��
��;�;�&�&�-�-�T�_�_�-�E�	�C�
��7�7�?�?�4�?�?�B��B���$�$�R�[�[��%:�;��	�	�G�D�$5�$5�#6�a��z�B�C�		����"�
��
�s�A0C�	C�Cc��|js|j�tj|�}|j|z}|jj|jj|�j�yrC)	rr?rmrnrrprrq�delete)rrvrzs   r"�_deletezS3Boto3Backend._delete�sV���w�w��!�!�#��+�+�o�6���o�o��/�������t�{�{�'�'��-�4�4�6r|c��|js|j�ddl}tj|�}|j
|z}d}	|jj
|jj|�}|j�|j}d|iS#|jj$r$}|jdddk(rn�Yd}~d|iSd}~wwxYw)Nr���r*r+r,�size)rr?r0rmrnrrprrq�load�content_lengthr9r%r:)rrvr0rzr��s3_objr=s       r"�_queryzS3Boto3Backend._query�s����w�w��!�!�#���+�+�o�6���o�o��/����	��W�W�^�^�D�K�K�$4�$4�c�:�F��K�K�M�#�2�2�N���'�'���"�"�.�.�	��|�|�G�$�V�,��5������'�'��	�s�AB�C�1C�CN)�__name__�
__module__�__qualname__�__doc__rr?r{r�r�r�r��r|r"r
r
2s,���"/�.7�6D
�L�&�7�(r|r
c��eZdZd�Zd�Zy)rc��d|_y�Nr)�total_bytes)rs r"rzUploadProgressTracker.__init__�s
����r|c�n�|xj|z
c_tj|jd�yr�)r�r�report_transfer)r�fresh_byte_counts  r"rtz!UploadProgressTracker.progress_cb�s*�����,�,��� � ��!1�!1�1�5r|N)r�r�r�rrtr�r|r"rr�s���6r|rzboto3+s3r)rm�duplicity.backendrrrrr�duplicity.errorsrrrrr
�objectr�register_backendr�r|r"�<module>r�ss��.
���!����*E(�Y�&�&�.�.�E(�P6�F�6�
���"�"�:�~�>�	���"�"�4��8r|

Zerion Mini Shell 1.0