
    5ie                     l    d dl mZ d dlmZ ddlmZ ddlmZmZm	Z	m
Z
mZmZmZ d Zd Zd Zd	 Zd
 ZdS )   )Filter)LDAPBase    )ObjectIdentifier)r   FiltersAttributeDescriptionSubstringFilterMatchingRuleAssertion
Substrings	Substringc                    | d         dk    rt| d d                              d          \  }}t          dt          |                                |                                t	          |          dd          i          S |dk    r0t          dt          |                                           i          S |                    d          rz|                    d          ret          dt          |                                 t          t          d	t	          |d
d                   i          g          d          i          S |                    d          du ret          dt          |                                 t          t          dt	          |d
d                    i          g          d          i          S |                    d          du ret          dt          |                                 t          t          dt	          |d d                   i          g          d          i          S t          d|                                 t	          |          di          S )N:extensibleMatchF)matchingRuletype
matchValuednAttributes*present
substringsanyr   )r   r   TfinalinitialequalityMatchattributeDescassertionValue)splitr   r
   encoderfc4515_encoder   
startswithendswithr	   r   r   )attrvaluenameoid_raws       K/home/kali/Ninja/venv/lib/python3.11/site-packages/msldap/protocol/query.pyequalityr)   	   s   HOOss)//#&&-$	-~~''{{}}#E**	/ /   
 
  sll	$T[[]]33 
 
  s *s 3 3 *	?kkmmuQrT{++	 
 
  	 	$ $  	 	
 	
 	 st##	?kkmm.qrr++	 
 
  	 	$ $  	 	
 	
 	 nnST!!	?kkmmN5":..	 
 
  	 	$ $  	 	
 	
 	 
{{}}&u--  
 
     c                 p   | j         dk    r| j        dk    rt          | j        | j                  S | j        dk    rd}n| j        dk    rd}n| j        dk    rd}t          || j                                        t          | j                  d	i          S | j         d
k    r| j        dk    s| j        dk    rH| j        dk    rd}n| j        dk    rd}t          |t          d | j	        D                       i          S | j        dk    r+t          dt          | j	        d                   i          S d S d S )Nfilter=z<=lessOrEqualz>=greaterOrEqualz~=approxMatchr   group&|andorc                 ,    g | ]}t          |          S  )query_syntax_converter_inner).0fs     r(   
<listcomp>z0query_syntax_converter_inner.<locals>.<listcomp>c   s!    III033IIIr*   !notr   )r   compr)   r$   valr   r    r!   r   filtersr8   )ftrkeys     r(   r8   r8   G   sl   X	h#ooCHcg&&&D
CCD
CCD
C
x((&sw//     x7	h#ooS
x3SS	SS 7IIS[IIIJJ    	C
)#+a.99     	r*   c                 H    t          j        |           }t          |          S )z
	Converts and LDAP query string into a ASN1 Filter object.
	warning: the parser has a name collision with the asn1 strucutre!
	)LFparser8   )ldap_query_stringflts     r(   query_syntax_converterrH   k   s"    
 
x!""$S)))r*   c                 *    t          j        |           S )N)r   escape)texts    r(   escape_filter_charsrL   t   s    ?4   r*   c                    d}d}|t          |           k     r| |         dk    re|t          |           dz
  k     rO	 |t          | |dz   |dz            d                                          z  }|dz  }n2# t          $ r |dz  }Y n!w xY w|| |                                         z  }|dz  }|t          |           k     |S )	Nr   r*   \   r            \)lenintto_bytes
ValueErrorr    )r%   ibyte_strs      r(   r!   r!   w   s    3u::~~Ah$AE

Q..E!a%Q,',,55777HFAA
   HHH a!!!Hq&! 	3u::~~ 	s   8A4 4BBN)ldap_filterr   rD   ldap_filter.filterr   asn1crypto.corer   msldap.protocol.messagesr   r   r	   r
   r   r   r)   r8   rH   rL   r!   r7   r*   r(   <module>r]      s    % % % % % % ( ( ( ( ( ( , , , , , ,                 
; ; ;|" " "H* * *! ! !    r*   