
    5i                     x    d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	 d dl
mZmZmZ eedZ G d de          Zd	S )
    )stat)connect)	UniTargetUniProto)urlparseparse_qs)str_oneint_onebool_one)pagesizeratec                   |    e Zd ZdZdej        ddddddddddfdeded	ed
efdZd Zd Z	d Z
ed             Zd ZdS )MSLDAPTargetaq  
	Describes the connection to the server.
	
	:param host: IP address or hostname of the server
	:type host: str
	:param port: port of the LDAP service running on the server
	:type port: int
	:param proto: Connection protocol to be used
	:type proto: :class:`UniProto`
	:param tree: The tree to connect to
	:type tree: str
	:param proxies: specifies what kind of proxy to be used
	:type proxies: :class:`List[UniProxyTarget]`
	:param timeout: connection timeout in seconds
	:type timeout: int
	:param ldap_query_page_size: Maximum number of elements to fetch in each paged_query call.
	:type ldap_query_page_size: int
	:param ldap_query_ratelimit: rate limit of paged queries. This will cause a sleep (in seconds) between fetching of each page of the query
	:type ldap_query_ratelimit: float
	:param dc_ip: Ip address of the kerberos server (if kerberos is used)
	:type dc_ip: str
	  N
     r   dnsdc_ipdomainhostnamec                 n    t          j        | |||||||||
|	           || _        || _        || _        d S )N)r   ssl_ctxproxiesr   r   r   )r   __init__treeldap_query_page_sizeldap_query_ratelimit)selfipportprotocolr   r   timeoutr   r   r   r   r   r   r   s                 K/home/kali/Ninja/venv/lib/python3.11/site-packages/msldap/commons/target.pyr   zMSLDAPTarget.__init__+   sd    T2tXw8V]ip  |B  LQ  WZ  [  [  [  [$)2$2$    c                 @    d|                                  d| j        S )Nzldap/@)get_hostname_or_ipr   r   s    r#   to_target_stringzMSLDAPTarget.to_target_string1   s%     002222DKK	@@r$   c                     | j         t          j        k    rd}n| j         t          j        k    rd}|d|                                 d| j        S )Nldapsldapz://:)r!   r   CLIENT_SSL_TCP
CLIENT_TCPr'   r    )r   protos     r#   get_hostzMSLDAPTarget.get_host4   sU    	]h---55}+++5 7 7 9 9 9 9499	EEr$   c                 ,    | j         t          j        k    S )N)r!   r   r.   r(   s    r#   is_sslzMSLDAPTarget.is_ssl;   s    	(1	11r$   c                    t          |           }g }|j                                                            d          D ]+}|                    |                    dd                     ,|d         dk    rt          j        }d}n|d         dk    rt          j        }d}n|d         d	k    rt          j        }d}n|d         d
k    rt          j        }d}nh|d         dk    rt                      |d         dk    rt          j        }d}n3|d         dk    rt          j        }d}nt          d|d         z            |j        r|j        }|t          d          d }|j        dvr|j        }t          j        | ||t                     \  }}|d         |d         nd}	|d         |d         nd}
t#          |j        |j        |j        ||j        |j        |	|
|j        |j        |j        |j        |j                  }|S )N+-_r   LDAPr   LDAPSi|  LDAP_SSLLDAP_TCPLDAP_UDPGCi  GC_SSLi  zUnknown protocol! %szPort must be provided!)/ Nr   r   r   )r    r!   r   r   r"   r   r   r   r   r   r   r   )r   schemeuppersplitappendreplacer   r/   r.   NotImplementedError
CLIENT_UDP	Exceptionr    pathr   from_urlmsldaptarget_url_paramsr   r   r!   r   r"   r   r   r   r   r   )connection_urlurl_eschemesitemr!   r    rI   	unitargetextraparamsr   r   targets               r#   rJ   zMSLDAPTarget.from_url>   s4   
>
"
"%'l  ""((-- ) )d
>>$,,s3''((((QZ6!8
44qzW%8
44qzZ%8
44qzZ!8	44qzZ			 qzT!8
44qzX%8
44	)GAJ6	7	77
Z 
*4	\	+	,	,,	$
Z&&
*4$-nhNeff)[(3J(?(K[$$QU( +F 3 ?V		Q$<
. 
"	?   & 
-r$   c                 J    d}| j         D ]}||d| j         |         dz  }|S )Nz==== MSLDAPTarget ====
z: z
)__dict__)r   tks      r#   __str__zMSLDAPTarget.__str__|   s?    "!= - -a4=+++,,11	
(r$   )__name__
__module____qualname____doc__r   r/   strr   r)   r1   r3   staticmethodrJ   rW    r$   r#   r   r      s        ,  #x/B4[_km  GK  de  os  AE  TX  im  y} 3 3  kn 3  {~ 3  NQ 3  cf 3 3 3 3A A AF F F2 2 2 : : ,:z    r$   r   N)osr   sqlite3r   asysocks.unicomm.common.targetr   r   urllib.parser   r   %asysocks.unicomm.utils.paramprocessorr	   r
   r   rK   r   r^   r$   r#   <module>rd      s                > > > > > > > > + + + + + + + + L L L L L L L L L L 
  m m m m m9 m m m m mr$   