
    g                         S SK Jr  S SKJr  S SKJrJrJr  S SKJ	r	  S SK
Jr  S rSrSr " S S	\5      r " S
 S\5      rS r " S S\5      rg)    )minidom)BytesIO)ElementTree
fromstringtostring)md5)	get_bytes      c                       \ rS rSrSrg)GPNoParserException     N__name__
__module____qualname____firstlineno____static_attributes__r       9/usr/lib/python3/dist-packages/samba/gp_parse/__init__.pyr   r           r   r   c                       \ rS rSrSrg)GPGeneralizeException#   r   Nr   r   r   r   r   r   #   r   r   r   c                 Z    S nU [         :X  a  SnU$ U [        :X  a  SnU$ U [        :X  a  SnU$ )NUSER_IDSDDL_ACLNETWORK_PATH)ENTITY_USER_IDENTITY_SDDL_ACLENTITY_NETWORK_PATH)ent_typetype_strs     r   entity_type_to_stringr%   '   sF    H>! O 
_	$ O 
(	(!Or   c                   L    \ rS rSrSrSrS rS rS rS r	S r
S	 rS
 rS rSrg)GPParser8   zutf-16zutf-8c                     g Nr   )selfcontentss     r   parseGPParser.parse<       r   c                 r    [        US5       nUR                  S5        S S S 5        g ! , (       d  f       g = f)Nwz4<?xml version="1.0" encoding="utf-8"?><UnknownFile/>)openwrite)r+   filenamefs      r   	write_xmlGPParser.write_xml?   s'    (C AGGJK !  s   (
6c                     g r*   r   r+   r4   s     r   load_xmlGPParser.load_xmlC   r/   r   c                     [        S5      e)Nz"This file has no parser available.)r   r9   s     r   write_binaryGPParser.write_binaryF   s    !"FGGr   c                     [        U5      n[        5       nUR                  X@R                  SS9  [        R
                  " UR                  5       5      nUR                  UR                  U R                  S95        g )NT)encodingxml_declaration)r@   )r   r   r3   output_encodingr   parseStringgetvaluetoprettyxml)r+   xml_elementhandleettemporary_bytesminidom_parseds         r   write_pretty_xmlGPParser.write_pretty_xmlI   sj     %!)
+?+?!% 	 	' ,,_-E-E-GH^//9M9M/NOr   c                     [        [        U5      5      R                  5       n[        U5      nUc  [	        S5      e[        [
        5      nUR                  [        U5      S5      nSR                  XC5      $ )NzNo such entity type_z&SAMBA__{}__{}__;)	r   r	   	hexdigestr%   r   r"   centerlenformat)r+   namer#   
identifierr$   longests         r   new_xml_entityGPParser.new_xml_entityT   sg    4)335
(2'(=>> ((;<??3w<5"))(??r   c                 F   / nUR                  S5      nUR                  S S9  U H  nUR                  nUb  US:X  a  M  Xs;   a(  X7   Ul        UR                  UR                  U45        MG  U R	                  U[
        5      Ul        UR                  UR                  U45        UR                  XvR                  4/5        M     UR                  S5      nUR                  S S9  U H  nUR                  nUb  US:X  a  M  Xs;   a(  X7   Ul        UR                  UR                  U45        MG  U R	                  U[        5      Ul        UR                  UR                  U45        UR                  XvR                  4/5        M     UR                  S5      n	U	R                  S S9  U	 H  nUR                  nUb  US:X  a  M  UR                  S	5      n
U
R                  S	5      S
   nUR                  U5      nX|[        U5      -   S  nUS U U-   nXs;   a$  X7   U-   Ul        X7   nUR                  X45        M  U R	                  U[        5      nX-   Ul        UR                  X45        UR                  X~4/5        M     UR                  U R                  X5      5        [        U5      nU H3  n[!        US
   5      nUR#                  UR#                  SS5      U5      nM5     [%        US5       nUR'                  U5        S S S 5        U$ ! , (       d  f       U$ = f)Nz.//*[@user_id="TRUE"]c                     U R                   $ r*   tagxs    r   <lambda>)GPParser.generalize_xml.<locals>.<lambda>g   s    aeer   )key z.//*[@acl="TRUE"]c                     U R                   $ r*   rZ   r\   s    r   r^   r_   y   s    !%%r   z.//*[@network_path="TRUE"]c                     U R                   $ r*   rZ   r\   s    r   r^   r_      s    r   \r      &s   &amp;wb)findallsorttextappendrV   r    updater!   lstripsplitfindrQ   r"   extendcustom_entitiesr   r	   replacer2   r3   )r+   rootout_fileglobal_entitiesentitiesuser_idselemold_textaclsshare_pathsstrippedfile_serverserver_index	remainingto_put
output_xmlententbr5   s                      r   generalize_xmlGPParser.generalize_xmlb   s    << 78O,DyyH8r>*+5	H 56 //0>@	 H 56&&99(='>?  ||/0			(DyyH8r>*+5	H 56 //0?A	 H 56&&99(='>?   ll#?@/DyyH8r>t,H"...q1K#==5L K0@!@!ABI.<H*+5	A	(2 23,,X-@B".	 23&&(:';<1  8 	,,TCDd^
CSV$D#++DLLx,H$OJ  (D!QGGJ "  "! s   5L
L c                     / $ r*   r   )r+   rr   rt   s      r   rp   GPParser.custom_entities   s    	r   r   N)r   r   r   r   r@   rB   r-   r6   r:   r=   rK   rV   r   rp   r   r   r   r   r'   r'   8   s:    HOLH	P@Sjr   r'   N)xml.domr   ior   xml.etree.ElementTreer   r   r   hashlibr   samba.commonr	   r    r!   r"   	Exceptionr   r   r%   objectr'   r   r   r   <module>r      sV   (   C C  "  	) 		I 	
"Av Ar   