HEX
Server: nginx/1.30.4
System: Linux d-twindigital-web-1.host-ed.eu 4.18.0-553.141.2.el8_10.x86_64 #1 SMP Wed Jul 8 10:28:18 EDT 2026 x86_64
User: u_twindigital_html (1009)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/S3/__pycache__/CloudFront.cpython-36.pyc
3

@tJ[D��@s�ddlmZddlZddlZddlZddlmZddlmZmZm	Z	m
Z
yddljj
ZWnek
rvddlj
ZYnXddlmZddlmZddlTdd	lmZmZmZmZmZmZmZmZmZdd
lmZddl m Z m!Z!ddl"m"Z"dd
l#m#Z#dZ$dde$iZ%dd�Z&dd�Z'Gdd�de(�Z)Gdd�de(�Z*Gdd�de(�Z+Gdd�de(�Z,Gdd�de(�Z-Gdd �d e(�Z.Gd!d"�d"e(�Z/Gd#d$�d$e(�Z0Gd%d&�d&e(�Z1dS)'�)�absolute_importN)�datetime)�debug�info�warning�error�)�S3)�Config)�*)	�getTreeFromXml�appendXmlTextNode�getDictFromTree�dateS3toPython�getBucketFromHostname�getHostnameFromBucket�deunicodise�urlencode_string�convertHeaderTupleListToDict)�sign_string_v2)�S3Uri�S3UriS3)�ConnMan)�
SortedDictz
2010-11-01z/%(api_ver)s/distribution�api_vercCstjj|d�dS)N�
)�sys�stdout�write)�message�r � /usr/lib/python3.6/CloudFront.py�output"sr"cCs"d|jd�}td||f�dS)Nz%s:�z%s %s)�ljustr")Zlabelrr r r!�
pretty_output%sr%c@s$eZdZdd�Zdd�Zdd�ZdS)�DistributionSummarycCs&|jdkrtd|j��|j|�dS)Nr&z1Expected <DistributionSummary /> xml, got: <%s />)�tag�
ValueError�parse)�self�treer r r!�__init__;s
zDistributionSummary.__init__cCsTt|�|_|jdj�dk|jd<d|jkrPt|jd�tkrP|jdg|jd<dS)N�Enabled�true�CNAME)rr�lower�type�list)r*r+r r r!r)@s
zDistributionSummary.parsecCstd|jd�S)Nzcf://%s�Id)rr)r*r r r!�uriFszDistributionSummary.uriN)�__name__�
__module__�__qualname__r,r)r4r r r r!r&*sr&c@seZdZdd�Zdd�ZdS)�DistributionListcCs.t|�}|jdkr td|j��|j|�dS)Nr8z.Expected <DistributionList /> xml, got: <%s />)rr'r(r))r*�xmlr+r r r!r,Us
zDistributionList.__init__cCsPt|�|_|jdj�dk|jd<g|_x"|jd�D]}|jjt|��q4WdS)N�IsTruncatedr.z.//DistributionSummary)rrr0�
dist_summs�findall�appendr&)r*r+Z	dist_summr r r!r)[s

zDistributionList.parseN)r5r6r7r,r)r r r r!r8Isr8c@s$eZdZdd�Zdd�Zdd�ZdS)�DistributioncCs.t|�}|jdkr td|j��|j|�dS)Nr>z*Expected <Distribution /> xml, got: <%s />)rr'r(r))r*r9r+r r r!r,qs
zDistribution.__init__cCs8t|�|_t|jd�|jd<t|jd�d�|jd<dS)NZLastModifiedTimez.//DistributionConfig)r+�DistributionConfig)rrrr?�find)r*r+r r r!r)ws
zDistribution.parsecCstd|jd�S)Nzcf://%sr3)rr)r*r r r!r4~szDistribution.uriN)r5r6r7r,r)r4r r r r!r>ds
r>c@s6eZdZdZddeiZddd�Zdd�Zd	d
�ZdS)r?zq<DistributionConfig><S3Origin><DNSName/></S3Origin><CallerReference/><Enabled>true</Enabled></DistributionConfig>z0http://cloudfront.amazonaws.com/doc/%(api_ver)s/rNcCsD|dkrtj}|dkrt|�}|jdkr6td|j��|j|�dS)Nr?z0Expected <DistributionConfig /> xml, got: <%s />)r?�EMPTY_CONFIGrr'r(r))r*r9r+r r r!r,�s
zDistributionConfig.__init__cCst|�|_|jdj�dk|jd<d|jkr6g|jd<t|jd�tkrZ|jdg|jd<dd�|jdD�|jd<d|jkr�d|jd<d|jkr�d|jd<|jd	�}|r�t|d
�}t|d�\|d<}|s�td|d�td
|�|jd<n
d|jd<dS)Nr-r.r/cSsg|]}|j��qSr )r0)�.0�cnamer r r!�
<listcomp>�sz,DistributionConfig.parse.<locals>.<listcomp>�Comment��DefaultRootObjectz
.//Loggingr�Bucketz%Logging to unparsable bucket name: %szs3://%(Bucket)s/%(Prefix)s�Logging)	rrr0r1r2r<rrr)r*r+Z
logging_nodesZlogging_dict�successr r r!r)�s&







zDistributionConfig.parsecCs"tjd�}tj|jd<tdd|�}td|jdd|�td|jd|�x"|jdD]}td|j�|�qVW|jdr�td|jd|�td	t|jd	�j�|�t|jd
�r�td
t|jd
�|�|jd�rtjd�}tdt	|jdj
��|�td
|jdj�|�|j|�tj
|�S)Nr?�xmlns�S3OriginrF�DNSName�CallerReferencer/rEr-rGrIrHZPrefix)�ET�Elementr?rKZattribr
rr0�strr�bucket�objectr=�tostring)r*r+Zs3orgrCZ
logging_elr r r!�__str__�s$



zDistributionConfig.__str__)NN)	r5r6r7rA�cloudfront_api_versionrKr,r)rUr r r r!r?�s

r?c@s$eZdZdd�Zdd�Zdd�ZdS)�InvalidationcCs.t|�}|jdkr td|j��|j|�dS)NrWz*Expected <Invalidation /> xml, got: <%s />)rr'r(r))r*r9r+r r r!r,�s
zInvalidation.__init__cCst|�|_dS)N)rr)r*r+r r r!r)�szInvalidation.parsecCs
t|j�S)N)rQr)r*r r r!rU�szInvalidation.__str__N)r5r6r7r,r)rUr r r r!rW�srWc@s$eZdZdd�Zdd�Zdd�ZdS)�InvalidationListcCs.t|�}|jdkr td|j��|j|�dS)NrXz.Expected <InvalidationList /> xml, got: <%s />)rr'r(r))r*r9r+r r r!r,�s
zInvalidationList.__init__cCst|�|_dS)N)rr)r*r+r r r!r)�szInvalidationList.parsecCs
t|j�S)N)rQr)r*r r r!rUszInvalidationList.__str__N)r5r6r7r,r)rUr r r r!rX�srXc@s4eZdZddgfdd�Zdd�Zdd�Zdd	�ZdS)
�InvalidationBatchNcCsL|r||_n,|sd}d|tjtj�d�tjdd�f|_g|_|j|�dS)N�0z%s.%s.%sz%Y%m%d%H%M%Si�i')�	referencer�strftimeZnow�random�randint�paths�add_objects)r*r[�distributionr_r r r!r,szInvalidationBatch.__init__cCs|jj|�dS)N)r_�extend)r*r_r r r!r`szInvalidationBatch.add_objectscCs|jS)N)r[)r*r r r!�
get_referenceszInvalidationBatch.get_referencecCsbtjd�}x>|jD]4}t|�dks.|ddkr6d|}tdt|�|�qWtd|j|�tj|�S)NrYrr�/�PathrN)rOrPr_�lenr
rr[rT)r*r+�pathr r r!rU s
zInvalidationBatch.__str__)r5r6r7r,r`rcrUr r r r!rYsrYc@seZdZddd�ddd�ddd�ddd�ddd�ddd�dd	d�dd	d�dd
d�d�	ZdZd
Zdd�Zdd�Zgd
d
d
fdd�Zggd
d
d
d
fdd�Z	dd�Z
dd�Zdd�Zd0dd�Z
dd�Zd d!�Zd"d#�Zd
d
d
d
efd$d%�Zd1d&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd
S)2�
CloudFrontZPOSTrF)�method�resourceZDELETEz/%(dist_id)s�GETz/%(dist_id)s/config�PUTz/%(dist_id)s/invalidationz(/%(dist_id)s/invalidation/%(request_id)s)	�
CreateDist�
DeleteDist�GetList�GetDistInfo�
GetDistConfig�
SetDistConfig�
Invalidate�GetInvalList�GetInvalInfo�NcCs
||_dS)N)�config)r*rwr r r!r,;szCloudFront.__init__cCs4|jd�}t|d�|d<|djdr0td��|S)Nro�data�	dist_listr:z3List is truncated. Ask s3cmd author to add support.)�send_requestr8r�NotImplementedError)r*�responser r r!roBs

zCloudFront.GetListc
Cs�t�}d|jd<|j�|jdd<t|�|jd<||jd<|dkrR|j�|jd<n
||jd<x0|D](}|jdj|�d	krb|jdj|�qbW|r�t|�|jd
<t|�}td|�|j	d|d
�}	t
|	d�|	d<|	S)NTr-rLrMrNrGrEr/rrIz&CreateDistribution(): request_body: %srm)�bodyrxra)r?rZ	host_namerQZ
public_url�countr=rrrzr>)
r*r4�
cnames_add�comment�logging�default_root_object�dist_configrC�request_bodyr|r r r!�CreateDistributionJs$



zCloudFront.CreateDistributioncCs|jdkrtd|��td|�|j|�}|d}	|dkrF||	jd<|dkrX||	jd<|dkrj||	jd<x0|D](}
|	jdj|
�d	krp|	jdj|
�qpWx6|D].}
x(|	jdj|
�d	kr�|	jdj|
�q�Wq�W|dkr�|d
kr�d
|	jd<nt|�|	jd<|j||	|dd
�}|S)N�cfzExpected CFUri instead of: %szChecking current status of %sr�r-rErGr/rFrI�headers�etag)	r1r(rrqr~r=�removerrr)r*�cfurir�
cnames_remover��enabledr�r�r|�dcrCr r r!�ModifyDistribution_s.






zCloudFront.ModifyDistributioncCs�|jdkrtd|��td|�|j|�}|djdr�td�d|djd<|j||d|dd	�}td
�td�xN|j|�}|d}|jd
dkr�|jddkr�td�Ptd�tjd�q|Wt	dd�}|dd	|d<|j
d|j�|d�}|S)Nr�zExpected CFUri instead of: %szChecking current status of %sr�r-z)Distribution is ENABLED. Disabling first.Fr�r�z,Waiting for Distribution to become disabled.z+This may take several minutes, please wait.ra�StatusZDeployedzDistribution is now disabledzStill waiting...�
T)�ignore_casezif-matchrn)�dist_idr�)r1r(rrqrrrrp�time�sleeprrzr�)r*r�r|�dr�r r r!�DeleteDistribution|s0



zCloudFront.DeleteDistributioncCs<|jdkrtd|��|jd|j�d�}t|d�|d<|S)Nr�zExpected CFUri instead of: %srp)r�rxra)r1r(rzr�r>)r*r�r|r r r!rp�s

zCloudFront.GetDistInfocCs<|jdkrtd|��|jd|j�d�}t|d�|d<|S)Nr�zExpected CFUri instead of: %srq)r�rxr�)r1r(rzr�r?)r*r�r|r r r!rq�s

zCloudFront.GetDistConfigcCsn|dkr"td�|j|�dd}td|�t|�}td|�tdd�}||d<|jd	|j�||d
�}|S)Nz1SetDistConfig(): Etag not set. Fetching it first.r�r�zSetDistConfig(): Etag = %sz!SetDistConfig(): request_body: %sT)r�zif-matchrr)r�r}r�)rrqrQrrzr�)r*r�r�r�r�r�r|r r r!rr�s

zCloudFront.SetDistConfigcCs�|dk	rx|s|rxg}d|}xT|D]L}|j|�s:||krf|rH|j|�|rp|j|dt|���q$|j|�q$W|}|j|�}	t|�dkr�yZtj�}
tt|
�d��}|jtdj	|�d��WdQRXt
dt|��t
d|
�WnYnXtd��g}x�|	D]�}
t|
j
�|d�}td	|�|jd
|
j
�t|�d�}|
j
�|d<|d
dk�rtt|d�j}|d|d<td|�|j|��qW|S)Nrdi��wrz2Request to invalidate %d paths (max 999 supported)z"All the paths are now saved in: %szToo many paths to invalidate)rar_z%InvalidateObjects(): request_body: %srs)r�r}r��status��rxr3�
request_idz!InvalidateObjects(): response: %s)�endswithr=rf�get_dist_name_for_bucket�UtilsZ	mktmpfile�openrr�joinr�ParameterErrorrYr�rrzrQrWr)r*r4r_Zdefault_index_fileZinvalidate_default_index_on_cfZ#invalidate_default_index_root_on_cfZ	new_pathsZdefault_index_suffixrg�cfurisZtmp_filename�fpZ	responsesr�Z
invalbatchr|�
inval_infor r r!�InvalidateObjects�sF


"
zCloudFront.InvalidateObjectscCs<|jdkrtd|��|jd|j�d�}t|d�|d<|S)Nr�zExpected CFUri instead of: %srt)r�rx�
inval_list)r1r(rzr�rX)r*r�r|r r r!rt�s

zCloudFront.GetInvalListcCsV|jdkrtd|��|j�dkr*td��|jd|j�|j�d�}t|d�|d<|S)Nr�zExpected CFUri instead of: %szExpected CFUri with Request IDru)r�r�rx�inval_status)r1r(r�rzr�rW)r*r�r|r r r!ru�s
zCloudFront.GetInvalInfoc
Csb|dkrtdd�}|j|}|r(d|d<|j||||�}|j�}	td|d|df�|	jj|d|d||d�|	jj�}
i}|
j|d	<|
j	|d
<t
|
j��|d<|
j�|d<t
j|	�td|�|d	d
k�r:t|�}|�r6td|�tt|��td|j|��tj|j|��|j||||dd�S|�|d	dk�sV|d	dk�r^t|��|S)NT)r�z
text/plainzcontent-typezsend_request(): %s %srirjr�r��reasonrxzCloudFront: response: %ri�zRetrying failed request: %szWaiting %d sec...r)�retries��i+)r�
operations�create_request�get_connectionr�c�requestZgetresponser�r�rZ
getheaders�readr�putZCloudFrontErrorr�unicode�
_fail_waitr�r�rz)
r*Zop_namer�r�r}r�r��	operationr��connZ
http_responser|�er r r!rz�s:





zCloudFront.send_requestcCs�t|d||d�}|s$tdd�}d|krFd|kr@|d|d<|d=d|krbtjdtj��|d<t|jj�dkr�|jj�|jj|d	<|j	|�}d
|jj
d||d<i}||d<||d
<|d|d<|S)Nrj)r�r�T)r�Zdatez
x-amz-datez%a, %d %b %Y %H:%M:%S +0000rzx-amz-security-tokenzAWS �:Z
Authorizationr�ri)�cloudfront_resourcerr�r\�gmtimerfrwZaccess_tokenZrole_refresh�sign_requestZ
access_key)r*r�r�r�r�rj�	signaturer�r r r!r�s(


zCloudFront.create_requestcCs$|d}t|�}td||f�|S)Nz
x-amz-datez"CloudFront.sign_request('%s') = %s)rr)r*r�Zstring_to_signr�r r r!r�5szCloudFront.sign_requestcCstj|jjdd�}|S)NT)Zssl)r�getrwZcloudfront_host)r*r�r r r!r�;szCloudFront.get_connectioncCs|j|ddS)Nr�)�_max_retries)r*r�r r r!r�?szCloudFront._fail_waitcCsH|jdkr|gS|jdkr&td|��td|�tjdkr�|j�}it_x�|djD]�}d}d|jkr�t|jdd�d	}n8d
|jkrVt|jd
d�d	}|dt	|j
���}nqVtjj|d�dkr�t�tj|<tj|j
|j��qVWtdtj�ytj|j
�Stk
�rB}zt|�td|��WYdd}~XnXdS)
Nr��s3z,CloudFront or S3 URI required instead of: %sz_get_dist_name_for_bucket(%r)ryrFrLrMr�CustomOriginz
dist_list: %sz>Unable to translate S3 URI to CloudFront distribution name: %s)r1r�rrhryror;rrrfrRr��set�addr4�	Exception)r*r4r|r�Z
distListIndexr�r r r!r�Cs2




z#CloudFront.get_dist_name_for_bucket)N)NNN)r5r6r7r�r�ryr,ror�r�r�rprqrrr�rtrurzr�r�r�r�r�r r r r!rh*s<

.
$
rhc@sneZdZdZGdd�de�Ze�Zedd��Zedd��Z	edd	��Z
ed
d��Zedd
��Zedd��Z
dS)�Cmdz3
    Class that implements CloudFront commands
    c@s4eZdZgZgZdZdZdZdZdd�Z	dd�Z
dS)zCmd.OptionsNcCsdd�t|�D�S)NcSsg|]}|jd�r|�qS)Zcf_)�
startswith)rB�optr r r!rDwsz+Cmd.Options.option_list.<locals>.<listcomp>)�dir)r*r r r!�option_listvszCmd.Options.option_listcCsttj||�dS)N)�setattrr��options)r*Zoption�valuer r r!�
update_optionyszCmd.Options.update_option)r5r6r7�
cf_cnames_add�cf_cnames_remove�
cf_comment�	cf_enable�
cf_logging�cf_default_root_objectr�r�r r r r!�Optionsnsr�cCs8tt��}g}x$|D]}|jt|��}|j|�qW|S)N)rhr
r�rrb)�argsr�r��argZurisr r r!�_parse_args~s

zCmd._parse_argscCstt��}|s�|j�}x�|djD]�}d|jkrFtj|jdd�}n"d|jkrdd|jdd}nd}td|�td|j��td	|jd	�d
|jkr�tddj	|jd
��td
|jd
�td|jd�t
d�q"W�n0tj|�}�x"|D�]}|j
|�}|d}|jd}d|jk�r6tj|jdd�}n$d|jk�rVd|jdd}nd}td|�td|j��td	|jd	�d
|jk�r�tddj	|jd
��td
|jd
�td|jd�td|jd�td|jd�td|jd�p�d�td|dd�q�WdS)NryrLrMr�z
http://%s/z	<unknown>�Origin�DistId�
DomainNamer/�CNAMEsz, r�r-rFrar?rEZDfltRootObjectrGrIZDisabled�Etagr�r�)rhr
ror;rr�httpurl_to_s3urir%r4r�r"r�r�rp)r�r�r|r��originr�r�r�r r r!r�sL








zCmd.infocCsptt��}g}xX|D]P}t|�}|jdkr6td|��|j�rJtd|��|j�sZtd��|j|�qW|sttd��x�|D]�}td|�|j	|t
jjt
jj
t
jjt
jjd�}|d}|jd	}td
�tdtj|jdd
��td|j��td|jd�tddj|jd��td|jd�td|jd�td|jd�td|jd�td|dd�qzWdS)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)rr�r�r�rar?zDistribution created:r�rLrMr�r�r�z, r/rEr�r-rGr�r�r�)rhr
rr1r�rSZis_dns_compatibler=rr�r�r�r�r�r�r�r"r%rr�r4r�)r�r�Zbucketsr�r4r|r�r�r r r!�create�s>




z
Cmd.createcCs\tt��}tj|�}xB|D]:}|j|�}|ddkrHtd||df�td|�qWdS)Nr�i�z(Distribution %s could not be deleted: %sr�zDistribution %s deleted)rhr
r�r�r�rr")r�r�r�r�r|r r r!�delete�s



z
Cmd.deletecCsjtt��}t|�dkrtd��ytj|�d}Wntk
rLtd��YnX|j|tjj	tjj
tjjtjjtjj
tjjd�}|ddkr�td||d	f�td
|�|j|�}|d}|jd}td
tj|jdd��td|j��td|jd�td|jd�tddj|jd��td|jd�td|jd�td|jd�td|dd�dS)Nrz7Too many parameters. Modify one Distribution at a time.rz No valid Distribution URI found.)rr�r�r�r�r�r�i�z)Distribution %s could not be modified: %sr�zDistribution modified: %srar?r�rLrMr�r�r�r�z, r/rEr-rGr�r�r�)rhr
rfr�r�r��
IndexErrorr�r�r�r�r�r�r�r�rr"rprr%rr�r4r�)r�r�r�r|r�r�r r r!�modify�s:


z
Cmd.modifycCs0tt��}tj|�}g}xx|D]p}|j�r:|jt|��q|j|�}y:x4|djdD]"}|jdj	d|j
�|dg��qVWWqwYqXqWx�|D]�}t|�}|j|�}|dj}	|	dd}
t
|
t�r�t|
�nd	}td
t|��td|	d�td|	d
�td|�td|	dd�td�q�WdS)Nr�ZInvalidationSummaryrdzcf:/r3r�rYrerZURIr�ZCreatedZ
CreateTimezNr of pathsZ	ReferencerNrF)rhr
r�r�r�r=rQrtrr�r�rru�
isinstancer2rfr%r")r�r�r�Zrequestsr�r��iZreqr��str_Znr_of_pathsr r r!�	invalinfo�s0



&



z
Cmd.invalinfoN)r5r6r7�__doc__rSr�r��staticmethodr�rr�r�r�r�r r r r!r�is	,"
 r�)2Z
__future__rrr�r]rr�rrrrZxml.etree.ElementTreeZetreeZElementTreerO�ImportErrorZelementtree.ElementTreer	r
Z
Exceptionsr�rr
rrrrrrrZCryptorrrrrrVr�r"r%rSr&r8r>r?rWrXrYrhr�r r r r!�<module>	s@,I'A