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rt|j
|_
|jd urt|j|_|jd urt|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   	