
    b                     b    d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlmZ  G d de          Z	dS )    N)BytesIO)Element
SubElement)GPParserc                   2    e Zd ZdZdZg Zd Zd Zd Zd Z	dS )GPAuditCsvParserzutf-8Nc                 J   g | _         t          j         t          j        | j                  t          |                              }t          |          | _        |D ]C}i }t          |          D ]\  }}||| j        |         <   | j         
                    |           Dd S )N)linescsvreadercodecs	getreaderencodingr   nextheader	enumerateappend)selfcontentsr   rowlineixs          7/usr/lib/python3/dist-packages/samba/gp_parse/gp_csv.pyparsezGPAuditCsvParser.parse!   s    
;F,T];;GH<M<MNNOO6ll 	$ 	$CD!# ) )1'(T[^$$Jd####	$ 	$    c                 "   t          |d          5 }t          d          }t          |d          }| j        D ]}t          |d          }||_        | j        D ]t          |d          }fd| j        D             D ]`\  }}t          |d          }||_        |dk    r|dk    r
d|j        d	<   |d
k    r(|dk    r"d         dk    sd         dk    r
d|j        d<   a|                     ||           d d d            d S # 1 swxY w Y   d S )NwbCsvFileRowValuec                 $    g | ]}|         |fS  r#   .0r   r   s     r   
<listcomp>z.GPAuditCsvParser.write_xml.<locals>.<listcomp>8   s!     C C C!$q'1 C C Cr   zPolicy Target TRUEuser_idzSetting ValueSubcategoryRegistryGlobalSaclFileGlobalSaclacl)openr   r   r   textr
   attribwrite_pretty_xml)	r   filenamefrootchildevaluetitler   s	           @r   	write_xmlzGPAuditCsvParser.write_xml.   s   (D!! 	+Q9%%DtU++E[  "5'22


 5 5"4// C C C Ct{ C C C 
5 
5HAu&ug66E!"EJ //AGG28Y/00Q"WWm,0DDDm,0@@@.4U+
5 !!$***+	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   C%DDDc                    d}g | _         |                    d          D ]?}|rd}g | _        |                    d          D ]_}t          |j        t
                    s$|j                            | j                  |_        | j                            |j                   `i }t          |                    d                    D ]|\  }}|j        |j        nd|| j        |         <   t          | j        |         t
                    s9|| j        |                                      | j                  || j        |         <   }| j                             |           Ad S )NTr    Fr!   r'   )
r
   findallr   
isinstancer/   strdecodeoutput_encodingr   r   )r   r4   r   rvr   r   s          r   load_xmlzGPAuditCsvParser.load_xmlJ   s[   
e$$ 	( 	(A ( 7++ / /A%afc22 E!"t/C!D!DK&&qv..../
 %aii&8&899 a aDAq56V5G166RDQ(%dk!nc:: a/3DKN/C/J/J4K_/`/`T[^,
!!$''''	( 	(r   c                 B   ddl m}  ||d| j                  5 }t          j        |t          j                  }|                    | j                   | j        D ](|                    fd| j        D                        )	 d d d            d S # 1 swxY w Y   d S )Nr   )r.   w)r   )quotingc                      g | ]
}|         S r#   r#   r$   s     r   r&   z1GPAuditCsvParser.write_binary.<locals>.<listcomp>f   s     > > >Qa > > >r   )	ior.   r   r   writerQUOTE_MINIMALwriterowr   r
   )r   r2   r.   r3   rH   r   s        @r   write_binaryzGPAuditCsvParser.write_binary_   s   T(C$-888 	@AZ3+<===FOODK(((
 @ @ > > > >$+ > > >????@		@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   A+BBB)
__name__
__module____qualname__r   r   r
   r   r9   rB   rK   r#   r   r   r   r      sd        HFE
$ 
$ 
$+ + +8( ( (*@ @ @ @ @r   r   )
r   r   rG   r   xml.etree.ElementTreer   r   samba.gp_parser   r   r#   r   r   <module>rQ      s   (  



 				       5 5 5 5 5 5 5 5 # # # # # #J@ J@ J@ J@ J@x J@ J@ J@ J@ J@r   