o
    Žõ±j+  ã                   @   s�   d dl Z d dlmZ d dlmZmZ g d¢ZG dd„ de jƒZG dd„ de jƒZ	G d	d
„ d
e j
ƒZe	jde	jde	jde	jdiZG dd„ dƒZdS )é    N)ÚSID)Ú
MSLDAP_UACÚvn)ÚsnÚcnÚobjectClassÚdistinguishedNameÚnTSecurityDescriptorÚ
objectGUIDÚinstanceTypeÚwhenCreatedÚwhenChangedÚnameÚsecurityIdentifierÚtrustDirectionÚtrustPartnerÚtrustPosixOffsetÚ	trustTypeÚtrustAttributesÚflatNameÚdSCorePropagationDatac                   @   ó   e Zd ZdZdZdZdZdS )Ú	TrustTypeé   é   é   é   N)Ú__name__Ú
__module__Ú__qualname__Ú	DOWNLEVELÚUPLEVELÚMITÚDCE© r$   r$   úŽ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/msldap/ldap_objects/adtrust.pyr   "   ó
    r   c                   @   r   )ÚTrustDirectionr   r   r   r   N)r   r   r   ÚDISABLEDÚINBOUNDÚOUTBOUNDÚBIDIRECTIONALr$   r$   r$   r%   r'   )   r&   r'   c                   @   s@   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdd„ ZdS )ÚTrustAttributesr   r   r   é   é   é    é@   é€   i   i   i   c                    s$   ˆ j sdS d ‡ fdd„ˆ jD ƒ¡S )NÚNONEú|c                 3   s"   � | ]}|j ˆ j @ r|jV  qd S ©N)Úvaluer   )Ú.0Úm©Úselfr$   r%   Ú	<genexpr>@   s   €  z*TrustAttributes.__str__.<locals>.<genexpr>)r5   ÚjoinÚ	__class__r8   r$   r8   r%   Ú__str__=   s   zTrustAttributes.__str__N)r   r   r   ÚNON_TRANSITIVEÚUPLEVEL_ONLYÚQUARANTINED_DOMAINÚFOREST_TRANSITIVEÚCROSS_ORGANIZATIONÚWITHIN_FORESTÚTREAT_AS_EXTERNALÚUSES_RC4_ENCRYPTIONÚ$CROSS_ORGANIZATION_NO_TGT_DELEGATIONÚ(CROSS_ORGANIZATION_ENABLE_TGT_DELEGATIONÚ	PIM_TRUSTr=   r$   r$   r$   r%   r,   0   s    r,   ÚDisabledÚInboundÚOutboundÚBidirectionalc                   @   sH   e Zd Zdd„ Zedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )ÚMSADDomainTrustc                 C   sd   d | _ d | _d | _d | _d | _d | _d | _d | _d | _d | _	d | _
d | _d | _d | _d | _d | _d S r4   ©r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r8   r$   r$   r%   Ú__init__L   s    
zMSADDomainTrust.__init__c                 C   sN  t ƒ }| d  d¡|_| d  d¡|_| d  d¡|_| d  d¡|_| d  d¡|_| d  d¡|_| d  d¡|_| d  d	¡|_	| d  d
¡|_
| d  d¡|_| d  d¡|_| d  d¡|_| d  d¡|_| d  d¡|_| d  d¡|_| d  d¡|_|j
d ur�t |j
¡|_
|jd uršt|jƒ|_|jd ur¥t|jƒ|_|S )NÚ
attributesr   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   )rM   Úgetr   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú
from_bytesr   r'   )ÚentryÚadir$   r$   r%   Ú	from_ldapa   s0   


zMSADDomainTrust.from_ldapc                 C   s„   i d| j “d| j“d| j“d| j“d| j“d| j“d| j“d| j“d	| j“d
| j	“d| j
“d| j“d| j“d| j“d| j“d| j“S )Nr   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   rN   r8   r$   r$   r%   Úto_dict}   sB   ÿþýüûúùø	÷
öõôóòñðzMSADDomainTrust.to_dictc                 C   s    d| j | j| jt| jƒ| jf S )Nz%s %s %s %s %s)r   r   r   r,   r   r   r8   r$   r$   r%   Úget_line‘   s    zMSADDomainTrust.get_linec                 C   sì   d}|d| j  7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d	| j 7 }|d
t| j	ƒ 7 }|d| j
 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|S )Nz== MSADDomainTrust ==
z	sn : %s
z	cn : %s
zdistinguishedName : %s
zobjectGUID : %s
zinstanceType : %s
zwhenCreated : %s
zwhenChanged : %s
zname : %s
zsecurityIdentifier : %s
ztrustDirection : %s
ztrustPartner : %s
ztrustPosixOffset : %s
ztrustType : %s
ztrustAttributes : %s
zflatName : %s
zdSCorePropagationData : %s
)r   r   r   r
   r   r   r   r   Ústrr   r   r   r   r   r   r   r   )r9   Útr$   r$   r%   r=   ”   s$   zMSADDomainTrust.__str__c                    s   |   ¡ ‰ ‡ fdd„|D ƒS )Nc                    s   g | ]	}t ˆ  |¡ƒ‘qS r$   )rX   rQ   )r6   Úx©rY   r$   r%   Ú
<listcomp>ª   s    z+MSADDomainTrust.get_row.<locals>.<listcomp>)rV   )r9   Úattrsr$   r[   r%   Úget_row¨   s   zMSADDomainTrust.get_rowc                 C   s    t | jƒ}t j|v rd}t j|v }n t j|v rd}d}nt j|v s&t j|v r+d}d}nt j|v}d}| j}| jd u r<d}| 	¡ }|t
| jƒ|| jj| jj|dœS )NTFÚ )ÚTargetDomainNameÚTargetDomainSidÚIsTransitiver'   r   ÚSidFilteringEnabled)r,   r   rC   r@   rA   rB   rD   r>   r   ÚupperrX   r   r   r5   r   )r9   ÚtatÚis_transitiveÚsid_filteringÚdnamer$   r$   r%   Úto_bh¬   s.   




úzMSADDomainTrust.to_bhN)r   r   r   rO   ÚstaticmethodrU   rV   rW   r=   r^   ri   r$   r$   r$   r%   rM   K   s    
rM   )ÚenumÚwinacl.dtyp.sidr   Úmsldap.ldap_objects.commonr   r   ÚMSADDomainTrust_ATTRSÚEnumr   r'   ÚIntFlagr,   r(   r)   r*   r+   ÚBH_TRUST_DIR_NAMINGrM   r$   r$   r$   r%   Ú<module>   s   ü	