
    Id                         d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 d dl
mZ d ZdZdZ G d d	e      Z G d
 de      Zd Z G d de      Zy)    )minidom)BytesIO)ElementTree
fromstringtostring)md5)	get_bytes      c                       e Zd Zy)GPNoParserExceptionN__name__
__module____qualname__     9/usr/lib/python3/dist-packages/samba/gp_parse/__init__.pyr   r           r   r   c                       e Zd Zy)GPGeneralizeExceptionNr   r   r   r   r   r   #   r   r   r   c                 T    d }| t         k(  rd}|S | t        k(  rd}|S | t        k(  rd}|S )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                   D    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)GPParserzutf-16zutf-8c                      y Nr   )selfcontentss     r   parsezGPParser.parse<       r   c                 h    t        |d      5 }|j                  d       d d d        y # 1 sw Y   y xY w)Nwz4<?xml version="1.0" encoding="utf-8"?><UnknownFile/>)openwrite)r&   filenamefs      r   	write_xmlzGPParser.write_xml?   s4    (C  	LAGGJK	L 	L 	Ls   (1c                      y r%   r   r&   r.   s     r   load_xmlzGPParser.load_xmlC   r)   r   c                     t        d      )Nz"This file has no parser available.)r   r2   s     r   write_binaryzGPParser.write_binaryF   s    !"FGGr   c                    t        |      }t               }|j                  || j                  d       t	        j
                  |j                               }|j                  |j                  | j                               y )NT)encodingxml_declaration)r7   )r   r   r-   output_encodingr   parseStringgetvaluetoprettyxml)r&   xml_elementhandleettemporary_bytesminidom_parseds         r   write_pretty_xmlzGPParser.write_pretty_xmlI   sl     %!)
4+?+?!% 	 	' ,,_-E-E-GH^//9M9M/NOr   c                     t        t        |            j                         }t        |      }|t	        d      t        t
              }|j                  t        |      d      }dj                  ||      S )NzNo such entity type_z&SAMBA__{}__{}__;)	r   r	   	hexdigestr!   r   r   centerlenformat)r&   namer   
identifierr    longests         r   new_xml_entityzGPParser.new_xml_entityT   si    4)335
(2'(=>> ((;<??3w<5"))(J??r   c                 8   g }|j                  d      }|j                  d        |D ]  }|j                  }||dk(  r||v r(||   |_        |j                  |j                  |f       C| j	                  |t
              |_        |j                  |j                  |f       |j                  ||j                  fg        |j                  d      }|j                  d        |D ]  }|j                  }||dk(  r||v r(||   |_        |j                  |j                  |f       C| j	                  |t              |_        |j                  |j                  |f       |j                  ||j                  fg        |j                  d      }	|	j                  d        |	D ]  }|j                  }||dk(  r|j                  d	      }
|
j                  d	      d
   }|j                  |      }||t        |      z   d  }|d | |z   }||v r&||   |z   |_        ||   }|j                  ||f       | j	                  |t              }||z   |_        |j                  ||f       |j                  ||fg        |j                  | j                  ||             t        |      }|D ]2  }t!        |d
         }|j#                  |j#                  dd      |      }4 t%        |d      5 }|j'                  |       d d d        |S # 1 sw Y   |S xY w)Nz.//*[@user_id="TRUE"]c                     | j                   S r%   tagxs    r   <lambda>z)GPParser.generalize_xml.<locals>.<lambda>g   s
    aee r   )key z.//*[@acl="TRUE"]c                     | j                   S r%   rO   rQ   s    r   rS   z)GPParser.generalize_xml.<locals>.<lambda>y   s
    !%% r   z.//*[@network_path="TRUE"]c                     | j                   S r%   rO   rQ   s    r   rS   z)GPParser.generalize_xml.<locals>.<lambda>   s
     r   \r      &s   &amp;wb)findallsorttextappendrL   r   updater   lstripsplitfindrG   r   extendcustom_entitiesr   r	   replacer,   r-   )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entbr/   s                      r   generalize_xmlzGPParser.generalize_xmlb   s0    << 78O, 	@DyyH8r>?*+H5	H 56 //0>@	 H 56&&499(='>?	@ ||/0			( 	@DyyH8r>?*+H5	H 56 //0?A	 H 56&&499(='>?	@  ll#?@/ 	=DyyH8r>t,H"...q1K#==5L K0@!@!ABI.<H?*+H5	A	(2 23,,X-@B"Y.	 23&&6(:';<1	=8 	,,T?CDd^
 	PCSV$D#++DLLx,H$OJ	P (D! 	 QGGJ	  	  s   3LLc                     g S r%   r   )r&   rf   rh   s      r   rd   zGPParser.custom_entities   s    	r   N)r   r   r   r7   r9   r(   r0   r3   r5   rB   rL   rw   rd   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   