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__/ACL.cpython-39.pyc
a

�9pe�!�@sddlmZmZddlZddlmZmZmZddlm	Z	zddl
mmZ
WneylddlmZ
Yn0ejdkZGdd�de�ZGd	d
�d
e�ZGdd�de�ZGd
d�de�Zedk�rdZee�Zede���e��ede���e��ede���ee�dS)�)�absolute_import�print_functionN�)�getTreeFromXml�encode_to_s3�decode_from_s3)�deunicodise)�rc@sDeZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dS)�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.9/site-packages/S3/ACL.py�__init__s
zGrantee.__init__cCstd|j|j|jd��S)Nz0Grantee("%(tag)s", "%(name)s", "%(permission)s"))rrr)�reprrrrrrrr�__repr__%s
�zGrantee.__repr__cCs|jdko|jtjkS)N�URI)rrr
�
ALL_USERS_URIrrrr�
isAllUsers,szGrantee.isAllUserscCs|��o|jdkp|jdkS)N�READ�FULL_CONTROL�rrrrrr�
isAnonRead/szGrantee.isAnonReadcCs|��o|jdkp|jdkS)NZWRITErrrrrr�isAnonWrite2szGrantee.isAnonWritecCsNt�d�}t�|dd|jd��}t�||j�}|j|_t�|d�}|j|_|S)NZGrantr
z)http://www.w3.org/2001/XMLSchema-instance)z	xmlns:xsizxsi:type�
Permission)�ETZElementZ
SubElementr
rr�textr)r�el�granteerrrrr�
getElement5s
�zGrantee.getElementN)�__name__�
__module__�__qualname__r�LOG_DELIVERY_URIrrrrr r&rrrrr
sr
c@seZdZdd�ZdS)�GranteeAnonReadcCs(t�|�d|_d|_tj|_d|_dS)N�Grouprr)r
rr
rrrrrrrrrBs

zGranteeAnonRead.__init__N�r'r(r)rrrrrr+Asr+c@seZdZdd�ZdS)�GranteeLogDeliverycCs(t�|�d|_d|_tj|_||_dS)z=
        permission must be either READ_ACP or WRITE
        r,rN)r
rr
rr*rr)rrrrrrJs

zGranteeLogDelivery.__init__Nr-rrrrr.Isr.c@s�eZdZdZd%dd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�ZdS)&�ACLsj<AccessControlPolicy><Owner><ID></ID></Owner><AccessControlList></AccessControlList></AccessControlPolicy>NcCs@|s
tj}g|_d|_d|_tt|��}|�|�|�|�dSr)	r/�	EMPTY_ACL�grantees�owner_id�
owner_nickrr�
parseOwner�parseGrants)r�xml�treerrrrWs
zACL.__init__cCs|�d�|_|�d�|_dS)N�.//Owner//IDz.//Owner//DisplayName)Zfindtextr2r3)rr7rrrr4cszACL.parseOwnercCsx|�d�D]h}t�}|�d�}|jd|_|�d�j|_|D](}|jdkrT|j|_q<|j|_|j|_	q<|j
�|�q
dS)Nz.//Grantz
.//Granteez/{http://www.w3.org/2001/XMLSchema-instance}typer!ZDisplayName)�findallr
�find�attribr
r#rrrrr1�append)rr7�grantr%�gr$rrrr5gs



zACL.parseGrantscCsHg}|jD]8}|jr|j}n|��r*d}n|j}|�||jd��q
|S)Nz*anon*)r%r)r1rrrr<r)r�aclr%�userrrr�getGrantListus
zACL.getGrantListcCs|j|jd�S)N)�idZnick)r2r3rrrr�getOwner�szACL.getOwnercCs|jD]}|��rdSqdS�NTF)r1r�rr%rrrr�s
zACL.isAnonReadcCs|jD]}|��rdSqdSrD)r1r rErrrr �s
zACL.isAnonWritecCs|��s|�t��dS�N)r�
appendGranteer+rrrr�
grantAnonRead�szACL.grantAnonReadcCsdd�|jD�|_dS)NcSsg|]}|��s|�qSr)r��.0r>rrr�
<listcomp>��z&ACL.revokeAnonRead.<locals>.<listcomp>�r1rrrr�revokeAnonRead�szACL.revokeAnonReadcCsdd�|jD�|_dS)NcSsg|]}|��s|�qSr)r rIrrrrK�rLz'ACL.revokeAnonWrite.<locals>.<listcomp>rMrrrr�revokeAnonWrite�szACL.revokeAnonWritecCs|j�|�dSrF)r1r<rErrrrG�szACL.appendGranteecCsR|��}|��}|jD]6}|j��|kr|jdkr8dS|j��|krdSqdS)NrTF)�lower�upperr1rr�rrrr%rrr�hasGrant�s

zACL.hasGrantcCs�|�||�rdS|��}d|kr$d}d|kr8|�|d�t�}||_||_d|vrl|j��|_d|_d|_n.d|vr�d|_d|_n|j��|_d	|_d
|_|�	|�dS)N�ALLr�@ZAmazonCustomerByEmailZEmailAddressz http://acs.amazonaws.com/groups/r,rZ
CanonicalUserZID)
rSrQ�revoker
rrrPr
rrGrRrrrr=�s*z	ACL.grantcsL��������d�kr0�fdd�|jD�|_n��fdd�|jD�|_dS)NrTcs6g|].}|j���ks|jdur.|j���ks|�qSrF)rrPrrI)rrrrK�rLzACL.revoke.<locals>.<listcomp>csDg|]<}|jdur |j���ks.|j���kr<|j���ks|�qSrF)rrPrrrQrI�rrrrrK�s.�)rPrQr1)rrrrrWrrV�s
z
ACL.revokecCsNttj�}d|jd<|�d�}|j|_|�d�}|jD]}|�|�	��q6|S)Nz'http://s3.amazonaws.com/doc/2006-03-01/Zxmlnsr8z.//AccessControlList)
rr/r0r;r:r2r#r1r<r&)rr7�ownerr?r%rrr�get_printable_tree�s




zACL.get_printable_treecCstt�|����SrF)rr"�tostringrYrrrr�__unicode__�szACL.__unicode__cCs(trtj|��dd�St�|���SdS)NZunicode)�encoding)�PY3r"rZrYrrrr�__str__�szACL.__str__)N)r'r(r)r0rr4r5rArCrr rHrNrOrGrSr=rVrYr[r^rrrrr/Ts$



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:)Z
__future__rr�sysZ	BaseUtilsrrrZUtilsrZxml.etree.ElementTreeZetreeZElementTreer"�ImportErrorZelementtree.ElementTree�version_infor]�objectr
r+r.r/r'r6r?�printrArNrHrrrr�<module>
s,
'