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__/ACL.cpython-36.pyc
3

@tJ[��@sddlmZmZddlZddlmZmZmZmZyddl	j
jZWne
k
r^ddljZYnXejdkZGdd�de�ZGdd	�d	e�ZGd
d�de�ZGdd
�d
e�Zedk�rdZee�Zedej��ej�edej��ej�edej��ee�dS)�)�absolute_import�print_functionN�)�getTreeFromXml�deunicodise�encode_to_s3�decode_from_s3�c@s<eZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
S)�Granteez/http://acs.amazonaws.com/groups/global/AllUsersz.http://acs.amazonaws.com/groups/s3/LogDeliverycCs"d|_d|_d|_d|_d|_dS)N�)�xsi_type�tag�name�display_name�
permission)�self�r�/usr/lib/python3.6/ACL.py�__init__s
zGrantee.__init__cCstd|j|j|jd��S)Nz0Grantee("%(tag)s", "%(name)s", "%(permission)s"))r
rr)�reprr
rr)rrrr�__repr__ szGrantee.__repr__cCs|jdko|jtjkS)N�URI)r
rr
�
ALL_USERS_URI)rrrr�
isAllUsers'szGrantee.isAllUserscCs|j�o|jdkp|jdkS)N�READ�FULL_CONTROL)rr)rrrr�
isAnonRead*szGrantee.isAnonReadcCsNtjd�}tj|dd|jd��}tj||j�}|j|_tj|d�}|j|_|S)NZGrantr
z)http://www.w3.org/2001/XMLSchema-instance)z	xmlns:xsizxsi:type�
Permission)�ETZElementZ
SubElementrr
r�textr)r�el�granteerrrrr�
getElement-s
zGrantee.getElementN)
�__name__�
__module__�__qualname__r�LOG_DELIVERY_URIrrrrr"rrrrr
sr
c@seZdZdd�ZdS)�GranteeAnonReadcCs(tj|�d|_d|_tj|_d|_dS)N�Grouprr)r
rrr
rrr)rrrrr:s

zGranteeAnonRead.__init__N)r#r$r%rrrrrr'9sr'c@seZdZdd�ZdS)�GranteeLogDeliverycCs(tj|�d|_d|_tj|_||_dS)z=
        permission must be either READ_ACP or WRITE
        r(rN)r
rrr
r&rr)rrrrrrBs

zGranteeLogDelivery.__init__N)r#r$r%rrrrrr)Asr)c@s�eZdZdZd!dd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �ZdS)"�ACLsj<AccessControlPolicy><Owner><ID></ID></Owner><AccessControlList></AccessControlList></AccessControlPolicy>NcCs@|s
tj}g|_d|_d|_tt|��}|j|�|j|�dS)Nr)	r*�	EMPTY_ACL�grantees�owner_id�
owner_nickrr�
parseOwner�parseGrants)r�xml�treerrrrOs
zACL.__init__cCs|jd�|_|jd�|_dS)Nz.//Owner//IDz.//Owner//DisplayName)Zfindtextr-r.)rr2rrrr/[szACL.parseOwnercCs�xz|jd�D]l}t�}|jd�}|jd|_|jd�j|_x0|D](}|jdkrX|j|_q@|j|_|j|_	q@W|j
j|�qWdS)Nz.//Grantz
.//Granteez/{http://www.w3.org/2001/XMLSchema-instance}typerZDisplayName)�findallr
�find�attribrrrr
rrr,�append)rr2�grantr!�gr rrrr0_s



zACL.parseGrantscCsLg}xB|jD]8}|jr|j}n|j�r,d}n|j}|j||jd��qW|S)Nz*anon*)r!r)r,rrrr6r)r�aclr!�userrrr�getGrantListmszACL.getGrantListcCs|j|jd�S)N)�idZnick)r-r.)rrrr�getOwneryszACL.getOwnercCs x|jD]}|j�rdSqWdS)NTF)r,r)rr!rrrr|szACL.isAnonReadcCs|j�s|jt��dS)N)r�
appendGranteer')rrrr�
grantAnonRead�szACL.grantAnonReadcCsdd�|jD�|_dS)NcSsg|]}|j�s|�qSr)r)�.0r8rrr�
<listcomp>�sz&ACL.revokeAnonRead.<locals>.<listcomp>)r,)rrrr�revokeAnonRead�szACL.revokeAnonReadcCs|jj|�dS)N)r,r6)rr!rrrr>�szACL.appendGranteecCsR|j�}|j�}x<|jD]2}|jj�|kr|jdkr8dS|jj�|krdSqWdS)NrTF)�lower�upperr,rr)rrrr!rrr�hasGrant�s
zACL.hasGrantcCs�|j||�rdS|j�}d|kr$d}d|kr8|j|d�t�}||_||_d|krl|jj�|_d|_d|_n.d|kr�d|_d|_n|jj�|_d	|_d
|_|j	|�dS)N�ALLr�@ZAmazonCustomerByEmailZEmailAddressz http://acs.amazonaws.com/groups/r(rZ
CanonicalUserZID)
rErD�revoker
rrrCrr
r>)rrrr!rrrr7�s*z	ACL.grantcsL�j���j��d�kr0�fdd�|jD�|_n��fdd�|jD�|_dS)NrFcs6g|].}|jj��kp,|jdk	o,|jj��ks|�qS)N)rrCr)r@r8)rrrrA�szACL.revoke.<locals>.<listcomp>csDg|]<}|jdk	r |jj��ks.|jj��ko:|jj��ks|�qS)N)rrCrrrD)r@r8)rrrrrA�s()rCrDr,)rrrr)rrrrH�s
z
ACL.revokecCsRttj�}d|jd<|jd�}|j|_|jd�}x|jD]}|j|j	��q8W|S)Nz'http://s3.amazonaws.com/doc/2006-03-01/Zxmlnsz.//Owner//IDz.//AccessControlList)
rr*r+r5r4r-rr,r6r")rr2�ownerr9r!rrr�get_printable_tree�s



zACL.get_printable_treecCsttj|j���S)N)rr�tostringrJ)rrrr�__unicode__�szACL.__unicode__cCs(trtj|j�dd�Stj|j��SdS)N�unicode)�encoding)�PY3rrKrJ)rrrr�__str__�szACL.__str__)N)r#r$r%r+rr/r0r;r=rr?rBr>rEr7rHrJrLrPrrrrr*Ls 



r*�__main__s<?xml version="1.0" encoding="UTF-8"?>
<AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
    <ID>12345678901234567890</ID>
    <DisplayName>owner-nickname</DisplayName>
</Owner>
<AccessControlList>
    <Grant>
        <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
            <ID>12345678901234567890</ID>
            <DisplayName>owner-nickname</DisplayName>
        </Grantee>
        <Permission>FULL_CONTROL</Permission>
    </Grant>
    <Grant>
        <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
            <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>
        </Grantee>
        <Permission>READ</Permission>
    </Grant>
</AccessControlList>
</AccessControlPolicy>
    zGrants:)r	r)Z
__future__rr�sysZUtilsrrrrZxml.etree.ElementTreeZetreeZElementTreer�ImportErrorZelementtree.ElementTree�version_inforO�objectr
r'r)r*r#r1r9�printr;rBr?rrrr�<module>	s*
$