HEX
Server: LiteSpeed
System: Linux us-phx-web629.main-hosting.eu 5.14.0-503.23.2.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Feb 12 05:52:18 EST 2025 x86_64
User: u756937133 (756937133)
PHP: 8.2.30
Disabled: passthru,chgrp
Upload Files
File: //proc/2863166/root/usr/lib/python3.9/site-packages/S3/__pycache__/CloudFront.cpython-39.opt-1.pyc
a

�9peӒ�@s�ddlmZddlZddlZddlZddlmZddlmZddlm	Z	m
Z
mZmZzddl
mmZWney�ddlmZYn0ddlmZddlmZdd	lmZmZdd
lmZmZmZddlmZmZmZm Z m!Z!m"Z"ddl#m$Z$m%Z%m&Z&m'Z'dd
l(m)Z)ddl*m*Z*m+Z+ddl,m,Z,ddl-m-Z-ej.dkZ/dZ0dde0iZ1dd�Z2dd�Z3Gdd�de4�Z5Gdd�de4�Z6Gdd�de4�Z7Gdd �d e4�Z8Gd!d"�d"e4�Z9Gd#d$�d$e4�Z:Gd%d&�d&e4�Z;Gd'd(�d(e4�Z<Gd)d*�d*e4�Z=dS)+�)�absolute_importN)�defaultdict)�datetime)�debug�info�warning�error�)�S3)�Config)�CloudFrontError�ParameterError)�EX_OK�
EX_GENERAL�
EX_PARTIAL)�getTreeFromXml�appendXmlTextNode�getDictFromTree�dateS3toPython�encode_to_s3�decode_from_s3)�getBucketFromHostname�getHostnameFromBucket�deunicodise�convertHeaderTupleListToDict)�sign_string_v2)�S3Uri�S3UriS3)�ConnMan)�
SortedDict)�rz
2010-11-01z/%(api_ver)s/distribution�api_vercCstj�|d�dS)N�
)�sys�stdout�write)�message�r'�1/usr/lib/python3.9/site-packages/S3/CloudFront.py�output,sr)cCs"d|�d�}td||f�dS)Nz%s:�z%s %s)�ljustr))Zlabelr&r'r'r(�
pretty_output/sr,c@s$eZdZdd�Zdd�Zdd�ZdS)�DistributionSummarycCs&|jdkrtd|j��|�|�dS)Nr-z1Expected <DistributionSummary /> xml, got: <%s />)�tag�
ValueError�parse��self�treer'r'r(�__init__Es
zDistributionSummary.__init__cCsTt|�|_|jd��dk|jd<d|jvrPt|jd�tkrP|jdg|jd<dS)N�Enabled�true�CNAME)rr�lower�type�listr1r'r'r(r0Js
zDistributionSummary.parsecCstd|jd�S�Nzcf://%s�Id�rr�r2r'r'r(�uriPszDistributionSummary.uriN��__name__�
__module__�__qualname__r4r0r?r'r'r'r(r-4sr-c@seZdZdd�Zdd�ZdS)�DistributionListcCs.t|�}|jdkr td|j��|�|�dS)NrDz.Expected <DistributionList /> xml, got: <%s />�rr.r/r0�r2Zxmlr3r'r'r(r4_s
zDistributionList.__init__cCsLt|�|_|jd��dk|jd<g|_|�d�D]}|j�t|��q2dS)N�IsTruncatedr6z.//DistributionSummary)rrr8�
dist_summs�findall�appendr-)r2r3Z	dist_summr'r'r(r0es

zDistributionList.parseN)rArBrCr4r0r'r'r'r(rDSsrDc@s$eZdZdd�Zdd�Zdd�ZdS)�DistributioncCs.t|�}|jdkr td|j��|�|�dS)NrKz*Expected <Distribution /> xml, got: <%s />rErFr'r'r(r4{s
zDistribution.__init__cCs8t|�|_t|jd�|jd<t|�d�d�|jd<dS)NZLastModifiedTimez.//DistributionConfig)r3�DistributionConfig)rrrrL�findr1r'r'r(r0�s
zDistribution.parsecCstd|jd�Sr;r=r>r'r'r(r?�szDistribution.uriNr@r'r'r'r(rKns
rKc@sFeZdZdZddeiZddd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dS)rLzq<DistributionConfig><S3Origin><DNSName/></S3Origin><CallerReference/><Enabled>true</Enabled></DistributionConfig>z0http://cloudfront.amazonaws.com/doc/%(api_ver)s/r!NcCsD|durtj}|durt|�}|jdkr6td|j��|�|�dS)NrLz0Expected <DistributionConfig /> xml, got: <%s />)rL�EMPTY_CONFIGrr.r/r0rFr'r'r(r4�s
zDistributionConfig.__init__cCst|�|_|jd��dk|jd<d|jvr6g|jd<t|jd�tkrZ|jdg|jd<dd�|jdD�|jd<d|jvr�d|jd<d|jvr�d|jd<|�d	�}|r�t|d
�}t|d�\|d<}|s�td|d�td
|�|jd<n
d|jd<dS)Nr5r6r7cSsg|]}|���qSr')r8)�.0�cnamer'r'r(�
<listcomp>��z,DistributionConfig.parse.<locals>.<listcomp>�Comment��DefaultRootObjectz
.//Loggingr�Bucketz%Logging to unparsable bucket name: %szs3://%(Bucket)s/%(Prefix)s�Logging)	rrr8r9r:rIrrr)r2r3Z
logging_nodesZlogging_dict�successr'r'r(r0�s&







zDistributionConfig.parsecCst�d�}tj|jd<tdd|�}td|jdd|�td|jd|�|jdD]}td|��|�qT|jdr�td|jd|�td	t|jd	���|�t|jd
�r�td
t|jd
�|�|jd�rt�d�}tdt	|jd�
��|�td
|jd��|�|�|�|S)NrL�xmlns�S3OriginrT�DNSName�CallerReferencer7rSr5rUrWrVZPrefix)
�ET�ElementrLrYZattribrrr8�strr�bucket�objectrJ)r2r3Zs3orgrPZ
logging_elr'r'r(�get_printable_tree�s$



z%DistributionConfig.get_printable_treecCstt�|����S�N�rr]�tostringrbr>r'r'r(�__unicode__�szDistributionConfig.__unicode__cCs(trtj|��dd�St�|���SdS�NZunicode)�encoding��PY3r]rerbr>r'r'r(�__str__�szDistributionConfig.__str__)NN)rArBrCrN�cloudfront_api_versionrYr4r0rbrfrkr'r'r'r(rL�s
rLc@s$eZdZdd�Zdd�Zdd�ZdS)�InvalidationcCs.t|�}|jdkr td|j��|�|�dS)Nrmz*Expected <Invalidation /> xml, got: <%s />rErFr'r'r(r4�s
zInvalidation.__init__cCst|�|_dSrc�rrr1r'r'r(r0�szInvalidation.parsecCs
t|j�Src�r_rr>r'r'r(rk�szInvalidation.__str__N�rArBrCr4r0rkr'r'r'r(rm�srmc@s$eZdZdd�Zdd�Zdd�ZdS)�InvalidationListcCs.t|�}|jdkr td|j��|�|�dS)Nrqz.Expected <InvalidationList /> xml, got: <%s />rErFr'r'r(r4s
zInvalidationList.__init__cCst|�|_dSrcrnr1r'r'r(r0szInvalidationList.parsecCs
t|j�Srcror>r'r'r(rkszInvalidationList.__str__Nrpr'r'r'r(rq�srqc@sDeZdZddgfdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�ZdS)�InvalidationBatchNcCsL|r||_n,|sd}d|t�t��d�t�dd�f|_g|_|�|�dS)N�0z%s.%s.%sz%Y%m%d%H%M%Si�i')�	referencer�strftimeZnow�randomZrandint�paths�add_objects)r2rt�distributionrwr'r'r(r4#s
�zInvalidationBatch.__init__cCs|j�|�dSrc)rw�extend)r2rwr'r'r(rx/szInvalidationBatch.add_objectscCs|jSrc)rtr>r'r'r(�
get_reference2szInvalidationBatch.get_referencecCsTt�d�}|jD]0}t|�dks,|ddkr4d|}td||�qtd|j|�|S)Nrrr	r�/�Pathr\)r]r^rw�lenrrt)r2r3�pathr'r'r(rb5s

z$InvalidationBatch.get_printable_treecCstt�|����Srcrdr>r'r'r(rf>szInvalidationBatch.__unicode__cCs(trtj|��dd�St�|���SdSrgrir>r'r'r(rkAszInvalidationBatch.__str__)	rArBrCr4rxr{rbrfrkr'r'r'r(rrs	rrc@seZdZddd�ddd�ddd�ddd�ddd�ddd�dd	d�dd	d�dd
d�d�	ZdZd
d�Zdd�Zgdddfdd�Zggddddfdd�Zdd�Z	dd�Z
dd�Zd/dd�Zdd�Z
dd �Zd!d"�Zd0d#d$�Zd1d%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�ZdS)2�
CloudFrontZPOSTrT)�method�resourceZDELETEz/%(dist_id)sZGETz/%(dist_id)s/configZPUTz/%(dist_id)s/invalidationz(/%(dist_id)s/invalidation/%(request_id)s)	�
CreateDist�
DeleteDist�GetList�GetDistInfo�
GetDistConfig�
SetDistConfig�
Invalidate�GetInvalList�GetInvalInfoNcCs
||_dSrc)�config)r2r�r'r'r(r4XszCloudFront.__init__cCs4|�d�}t|d�|d<|djdr0td��|S)Nr��data�	dist_listrGz3List is truncated. Ask s3cmd author to add support.)�send_requestrDr�NotImplementedError)r2�responser'r'r(r�_s

zCloudFront.GetListc
Cs�t�}d|jd<|��|jdd<t|�|jd<||jd<|dkrR|��|jd<n
||jd<|D](}|jd�|�d	kr`|jd�|�q`|r�t|�|jd
<t|�}td|�|j	d|d
�}	t
|	d�|	d<|	S)NTr5rZr[r\rUrSr7rrWz&CreateDistribution(): request_body: %sr�)�bodyr�ry)rLrZ	host_namer_Z
public_url�countrJrrr�rK)
r2r?�
cnames_add�comment�logging�default_root_object�dist_configrP�request_bodyr�r'r'r(�CreateDistributiongs$


zCloudFront.CreateDistributioncCs|jdkrtd|��td|�|�|�}|d}	|dkrF||	jd<|dkrX||	jd<|dkrj||	jd<|D](}
|	jd�|
�d	krn|	jd�|
�qn|D]*}
|	jd�|
�d	kr�|	jd�|
�q�q�|dkr�|d
kr�d
|	jd<nt|�|	jd<|�||	|dd
�}|S)N�cf�Expected CFUri instead of: %s�Checking current status of %sr�r5rSrUr7rFrW�headers�etag)	r9r/rr�r�rJ�removerr�)r2�cfurir��
cnames_remover��enabledr�r�r��dcrPr'r'r(�ModifyDistribution|s.




zCloudFront.ModifyDistributioncCs�|jdkrtd|��td|�|�|�}|djdr�td�d|djd<|�||d|dd	�}td
�td�|�|�}|d}|jd
dkr�|jddkr�td�q�td�t�d�qzt	dd�}|dd	|d<|j
d|��|d�}|S)Nr�r�r�r�r5z)Distribution is ENABLED. Disabling first.Fr�r�z,Waiting for Distribution to become disabled.z+This may take several minutes, please wait.ry�StatusZDeployedzDistribution is now disabledzStill waiting...�
T�Zignore_case�if-matchr�)�dist_idr�)r9r/rr�r�rr��time�sleeprr�r�)r2r�r��dr�r'r'r(�DeleteDistribution�s2


�

�zCloudFront.DeleteDistributioncCs<|jdkrtd|��|jd|��d�}t|d�|d<|S)Nr�r�r��r�r�ry)r9r/r�r�rK�r2r�r�r'r'r(r��s

zCloudFront.GetDistInfocCs<|jdkrtd|��|jd|��d�}t|d�|d<|S)Nr�r�r�r�r�r�)r9r/r�r�rLr�r'r'r(r��s

zCloudFront.GetDistConfigcCsn|dkr"td�|�|�dd}td|�t|�}td|�tdd�}||d<|jd	|��||d
�}|S)Nz1SetDistConfig(): Etag not set. Fetching it first.r�r�zSetDistConfig(): Etag = %sz!SetDistConfig(): request_body: %sTr�r�r�)r�r�r�)rr�r_rr�r�)r2r�r�r�r�r�r�r'r'r(r��s
�zCloudFront.SetDistConfigcCs�|durr|r|rrg}d|}|D]L}|�|�s6||krb|rD|�|�|rl|�|dt|���q |�|�q |}|�|�}	t|�dk�rznt��}
tt|
�d��(}|�td�	|�d��Wd�n1s�0Yt
dt|��t
d|
�Wnt�yYn0td��g}|	D]�}
t
|
��|d�}td	|�|jd
|
��t|�d�}|
��|d<|d
dk�r�t|d�j}|d|d<td|�|�|��q|S)Nr|i��wr"z2Request to invalidate %d paths (max 999 supported)z"All the paths are now saved in: %szToo many paths to invalidate)ryrwz%InvalidateObjects(): request_body: %sr�)r�r�r��status��r�r<�
request_idz!InvalidateObjects(): response: %s)�endswithrJr~�get_dist_name_for_bucket�UtilsZ	mktmpfile�openrr%�joinr�	Exceptionr
rrr�rr�r_rmr)r2r?rw�default_index_file�invalidate_default_index_on_cf�#invalidate_default_index_root_on_cfZ	new_pathsZdefault_index_suffixr�cfurisZtmp_filename�fpZ	responsesr�Z
invalbatchr��
inval_infor'r'r(�InvalidateObjects�sH

6�zCloudFront.InvalidateObjectscCs<|jdkrtd|��|jd|��d�}t|d�|d<|S)Nr�r�r�r�r��
inval_list)r9r/r�r�rqr�r'r'r(r��s

zCloudFront.GetInvalListcCsV|jdkrtd|��|��dur*td��|jd|��|��d�}t|d�|d<|S)Nr�r�zExpected CFUri with Request IDr��r�r�r��inval_status)r9r/r�r�r�rmr�r'r'r(r�s
zCloudFront.GetInvalInfoc
Csj|dur|jj}|dur"tdd�}|j|}|r8d|d<|�||||�}|��}	td|d|df�|	j�|d|d||d�|	j�	�}
i}|
j
|d	<|
j|d
<t|
�
��|d<|
��|d<t�|	�td|�|d	d
k�rBt|�}|�r>td||f�td|�|��t�|�|��|j||||dd�S|�|d	dk�s^|d	dk�rft|��|S)NTr�z
text/plainzcontent-typezsend_request(): %s %sr�r�r�r��reasonr�zCloudFront: response: %ri�z Retrying failed request: %s (%s)zWaiting %d sec...r	)r��retries��i+)r��max_retriesr�
operations�create_request�get_connectionr�c�requestZgetresponser�r�rZ
getheaders�readrZputrr�
_fail_waitr�r�r�)
r2Zop_namer�r�r�r�r��	operationr��connZ
http_responser��er'r'r(r�s<





zCloudFront.send_requestcCs�t|d||d�}|s$tdd�}d|vrFd|vr@|d|d<|d=d|vrbt�dt���|d<t|jj�dkr�|j��|jj|d	<|�	|�}d
|jj
d||d<i}||d<||d
<|d|d<|S)Nr�r�Tr��date�
x-amz-datez%a, %d %b %Y %H:%M:%S +0000rzx-amz-security-tokenzAWS �:Z
Authorizationr�r�)�cloudfront_resourcerr�ru�gmtimer~r�Zaccess_tokenZrole_refresh�sign_requestZ
access_key)r2r�r�r�r�r��	signaturer�r'r'r(r�6s*�


zCloudFront.create_requestcCs,|d}ttt|���}td||f�|S)Nr�z"CloudFront.sign_request('%s') = %s)rrrr)r2r�Zstring_to_signr�r'r'r(r�SszCloudFront.sign_requestcCstj|jjdd�}|S)NT)Zssl)r�getr�Zcloudfront_host)r2r�r'r'r(r�YszCloudFront.get_connectioncCs|jj|ddS)Nr	r )r�r�)r2r�r'r'r(r�]szCloudFront._fail_waitc
CsH|jdkr|gS|jdkr&td|��td|�tjdur�|��}it_|djD]�}d}d|jvr~t|jdd�d	}n8d
|jvrTt|jd
d�d	}|dt	|�
���}nqTtj�|d�dur�t�tj|<tj|�
|���qTtdtj�ztj|�
�WSt�yB}z t|�td|��WYd}~n
d}~00dS)
Nr��s3z,CloudFront or S3 URI required instead of: %sz_get_dist_name_for_bucket(%r)r�rTrZr[r�CustomOriginz
dist_list: %sz>Unable to translate S3 URI to CloudFront distribution name: %s)r9r
rr�r�r�rHrrr~r`r��set�addr?r�)r2r?r�r�Z
distListIndexr�r'r'r(r�as2




z#CloudFront.get_dist_name_for_bucket)N)NNNNN)NNN)rArBrCr�r�r4r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r'r'r'r(r�Is>��


.
%
r�c@szeZdZdZGdd�de�Ze�Zedd��Zedd��Z	edd	��Z
ed
d��Zedd
��Zedd��Z
edd��ZdS)�Cmdz3
    Class that implements CloudFront commands
    c@s4eZdZgZgZdZdZdZdZdd�Z	dd�Z
dS)zCmd.OptionsNcCsdd�t|�D�S)NcSsg|]}|�d�r|�qS)Zcf_)�
startswith)rO�optr'r'r(rQ�rRz+Cmd.Options.option_list.<locals>.<listcomp>)�dirr>r'r'r(�option_list�szCmd.Options.option_listcCsttj||�dSrc)�setattrr��options)r2�option�valuer'r'r(�
update_option�szCmd.Options.update_option)rArBrC�
cf_cnames_add�cf_cnames_remove�
cf_comment�	cf_enable�
cf_logging�cf_default_root_objectr�r�r'r'r'r(�Options�sr�cCs4tt��}g}|D]}|�t|��}|�|�q|Src)r�rr�rrz)�argsr�r��argZurisr'r'r(�_parse_args�s
zCmd._parse_argscCs
tt��}|s�|��}|djD]�}d|jvrDt�|jdd�}n"d|jvrbd|jdd}nd}td|�td|���td	|jd	�d
|jvr�tdd�	|jd
��td
|jd
�td|jd�t
d�q �n*t�|�}|D�]}|�
|�}|d}|jd}d|jv�r.t�|jdd�}n$d|jv�rNd|jdd}nd}td|�td|���td	|jd	�d
|jv�r�tdd�	|jd
��td
|jd
�td|jd�td|jd�td|jd�td|jd�p�d�td|dd�q�dS)Nr�rZr[r�z
http://%s/z	<unknown>�Origin�DistId�
DomainNamer7�CNAMEs�, r�r5rTryrLrSZDfltRootObjectrUrWZDisabled�Etagr�r�)r�rr�rHrr�httpurl_to_s3urir,r?r�r)r�r�r�)r�r�r�r��originr�r�r�r'r'r(r�sL









zCmd.infocCshtt��}g}|D]P}t|�}|jdkr4td|��|��rHtd|��|��sXtd��|�|�q|sptd��|D]�}td|�|j	|t
jjt
jj
t
jjt
jjd�}|d}|jd	}td
�tdt�|jdd
��td|���td|jd�tdd�|jd��td|jd�td|jd�td|jd�td|jd�td|dd�qtdS)Nr�z@Distribution can only be created from a s3:// URI instead of: %sz4Use s3:// URI with a bucket name only instead of: %sz3CloudFront can only handle lowercase-named buckets.zNo valid bucket names foundzCreating distribution from: %s)r�r�r�r�ryrLzDistribution created:r�rZr[r�r�r�r�r7rSr�r5rUr�r�r�)r�rrr9r
raZis_dns_compatiblerJrr�r�r�r�r�r�r�r)r,rr�r?r�)r�r�Zbucketsr�r?r�r�r�r'r'r(�create�s@

�
z
Cmd.createcCsXtt��}t�|�}|D]:}|�|�}|ddkrFtd||df�td|�qdS)Nr��z(Distribution %s could not be deleted: %sr�zDistribution %s deleted)r�rr�r�r�rr))r�r�r�r�r�r'r'r(�delete�s


z
Cmd.deletec	Cshtt��}t|�dkrtd��zt�|�d}WntyJtd��Yn0|j|tjj	tjj
tjjtjjtjj
tjjd�}|ddkr�td||d	f�td
|�|�|�}|d}|jd}td
t�|jdd��td|���td|jd�td|jd�tdd�|jd��td|jd�td|jd�td|jd�td|dd�dS)Nr	z7Too many parameters. Modify one Distribution at a time.rz No valid Distribution URI found.)r�r�r�r�r�r�r�r�z)Distribution %s could not be modified: %sr�zDistribution modified: %sryrLr�rZr[r�r�r�r�r�r7rSr5rUr�r�r�)r�rr~r
r�r��
IndexErrorr�r�r�r�r�r�r�r�rr)r�rr,rr�r?r�)r�r�r�r�r�r�r'r'r(�modify�s<
�

z
Cmd.modifyc
Cs,tt��}t�|�}g}|D]t}|��r8|�t|��q|�|�}z6|djdD]"}|�d�	d|�
�|dg��qRWqty�YqYq0q|D]�}t|�}|�
|�}|dj}	|	dd}
t|
t�r�t|
�nd	}td
t|��td|	d�td|	d
�td|�td|	dd�td�q�dS)Nr�ZInvalidationSummaryr|zcf:/r<r�rrr}r	�URIr��CreatedZ
CreateTime�Nr of pathsZ	Referencer\rT)r�rr�r�r�rJr_r�rr�r�r�rr��
isinstancer:r~r,r))r�r�r�Zrequestsr�r��iZreqr��strwZnr_of_pathsr'r'r(�	invalinfos0


$


z
Cmd.invalinfocs8t�}t|�}t|�}tt�}|D]D}t|�}|��}|s@d}n|ddkrT|d7}||���|�q"t	}g}	|�
�D]�\�}
td��}tt|�
|���}d}
|js�|jr�|�||j�}|r�|d}
|
s�d}
|jr��fdd�|
D�}td|�qx|	��|
|||
f�qx|j�r td	�t	Sd
}d}|	D]�\�}
}}}
|�sJtd�nd
}|�||
|
|j|j�}|��}tdt|��td|�tdt|
��|D]d}|d}|dk�r�tdd|�t}�q�|d}|d7}tdd�td|�tdd||f��q�|t	k�r,|j�r,td��q �q,|t	k�r4|�r4t}|S)N�*���r|zs3://%sZindex_documentcsg|]}t��|��qSr')rZcompose_uri)rOr�r`r'r(rQ[rRz"Cmd.invalidate.<locals>.<listcomp>z[--dry-run] Would invalidate %rz Exiting now because of --dry-runrTrTFrr�rr�r�r�z
Failed: %dr�r	rZ	RequestIdZInfoz,Check progress with: s3cmd cfinvalinfo %s/%sz&Exiting now because of --stop-on-error)rr�r
rr:rrar`rJr�items�next�iterr�r�r�Zwebsite_infoZbucket_location�dry_runr)rr�r�r,r_r~rZ
stop_on_errorrr)r�Zcfgr�r�Zbucket_pathsr�r?Zuobject�ret�paramsrwZbase_urir�r�Z
info_responseZ
fulluri_pathsZ
nb_success�first�resultsr��resultZresult_coder�r'r	r(�
invalidate9s�
�



�

zCmd.invalidateN)rArBrC�__doc__rar�r��staticmethodr�rr�r�r�rrr'r'r'r(r��s"

+
!
	

r�)>Z
__future__rr#r�rv�collectionsrrr�rrrrZxml.etree.ElementTreeZetreeZElementTreer]�ImportErrorZelementtree.ElementTreer
rZ
Exceptionsrr
Z	ExitCodesrrrZ	BaseUtilsrrrrrrr�rrrrZCryptorrrrr�version_inforjrlr�r)r,rar-rDrKrLrmrqrrr�r�r'r'r'r(�<module>
sH 
T1@