
    g<                         S SK r S SKrS SKrS SKJrJr  S SKJr  S SKJ	r	  S SK
JrJr   " S S\5      r " S S	\5      r " S
 S\5      r " S S\5      rg)    N)Element
SubElement)ConfigParser)StringIO)GPParserENTITY_USER_IDc                   H    \ 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)GPIniParser    Nc                     [        [        R                  S S9U l        [        U R                  l        U R                  R                  [        UR                  U R                  5      5      5        g )N	dict_typeinterpolation)
r   collectionsOrderedDictini_confstroptionxform	read_filer   decodeencoding)selfcontentss     7/usr/lib/python3/dist-packages/samba/gp_parse/gp_ini.pyparseGPIniParser.parse#   sI    ${/F/F379$'!)G HI    c                 f    [        US5      n[        US5      n[        US5      nX6l        XGl        U$ )N	ParameterKeyValue)r   text)r   section_xmlsectionkey_inival_inichildkeyvalues           r   build_xml_parameterGPIniParser.build_xml_parameter+   s5    ;4&5'*
r   c                     UR                  S5      R                  nUR                  S5      R                  nUc  SnU R                  R                  X#U5        X44$ )Nr    r!    )findr"   r   set)r   	param_xmlr$   r(   r)   s        r   load_xml_parameterGPIniParser.load_xml_parameter4   sP    nnU#((w',,=E'.|r   c                 :    [        US5      nX#R                  S'   U$ )NSectionname)r   attrib)r   root_xmlsec_inir$   s       r   build_xml_sectionGPIniParser.build_xml_section=   s    Xy1!(vr   c                 Z    UR                   S   nU R                  R                  U5        U$ )Nr5   r6   r   add_section)r   r#   section_names      r   load_xml_sectionGPIniParser.load_xml_sectionC   s*    "))&1!!,/r   c           	      X   [        US5       n[        S5      nU R                  R                  5        HJ  nU R	                  X45      nU R                  R                  USS9 H  u  pgU R                  XTUU5        M     ML     U R                  X25        S S S 5        g ! , (       d  f       g = f)NwbIniFileT)raw)openr   r   sectionsr9   itemsr*   write_pretty_xml)r   filenamefrootr8   r$   r%   r&   s           r   	write_xmlGPIniParser.write_xmlI   s    (D!Q9%D==11300?(,(;(;G(;(N$G,,Ww-46 )O 4 !!$* "!!s   BB
B)c                    [        [        R                  S S9U l        [        U R                  l        UR                  S5       H=  nU R                  U5      nUR                  S5       H  nU R                  XC5        M     M?     g )Nr   r4   r   )	r   r   r   r   r   r   findallr?   r1   )r   rK   sr>   params        r   load_xmlGPIniParser.load_xmlZ   si    ${/F/F379$'!i(A003L;/''< 0 )r   c                     [         R                  " USU R                  5       nU R                  R	                  U5        S S S 5        g ! , (       d  f       g = f)Nzwb+)codecsrE   r   r   write)r   rI   rJ   s      r   write_binaryGPIniParser.write_binaryf   s6    [[5$--8AMM" 988s   A
Ar   )__name__
__module____qualname____firstlineno__r   r   r*   r1   r9   r?   rL   rR   rW   __static_attributes__ r   r   r
   r
       s0    HJ+"
=#r   r
   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )GPTIniParserk   zutf-8c                   >  [         TU ]  U5        g ! [         ah    [        [        R
                  S S9U l        [        U R                  l        U R                  R                  [        UR                  S5      5      5         g f = f)Nr   z
iso-8859-1)superr   UnicodeDecodeErrorr   r   r   r   r   r   r   r   r   )r   r   	__class__s     r   r   GPTIniParser.parsen   sk    		MGM(#! 	M(;3J3J7;=DM(+DMM% MM##HX__\-J$KL	Ms    A/BBrY   )rZ   r[   r\   r]   r   r   r^   __classcell__rf   s   @r   ra   ra   k   s    H
M 
Mr   ra   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )GPScriptsIniParser{   c                    > [         TU ]  XX45      n[        R                  " SU5      nUb   UR	                  S5      nSUR
                  S'   U$ )Nz\d+CmdLine$r!   TRUEnetwork_path)rd   r*   rematchr.   r6   )	r   r#   r$   r%   r&   parent_returncmdliner)   rf   s	           r   r*   &GPScriptsIniParser.build_xml_parameter|   sT    3K4;F ((>73!&&w/E+1ELL(r   r_   )rZ   r[   r\   r]   r*   r^   rh   ri   s   @r   rk   rk   {   s    	 	r   rk   c                   F   ^  \ rS rSrU 4S jrU 4S jrS rS rS rSr	U =r
$ )GPFDeploy1IniParser   c                   > [         T
U ]  XX45      nUR                  5       S:X  a|  UR                  S5      nUR	                  U5        UR                  5       R                  S5      R                  S5      nU H$  n[        US5      n	Xl        SU	R                  S'   M&     U$ US:X  a   UR                  S5      nSUR                  S'   U$ )Nfolder_redirectionr!   ;rn   user_idFullPathro   )
rd   r*   lowerr.   removestripsplitr   r"   r6   )r   r#   r$   r%   r&   rr   r(   sid_listsidr)   rf   s             r   r*   'GPFDeploy1IniParser.build_xml_parameter   s    3K4;F ==?22
  $$W-C  %}},,S177<H"=': 
*0Y'   	 *$#((1-3

>*r   c                   > UR                  5       S:X  a  UR                  S5      R                  nUR                  S5      n[	        U5      S:X  a  US   R                  S-   nO+SR                  U Vs/ s H  ofR                  PM     sn5      nU R                  R                  X#U5        X54$ [        TU ]%  X5      $ s  snf )Nry   r    r!      r   rz   )
r}   r.   r"   rO   lenjoinr   r/   rd   r1   )r   r0   r$   r(   valuesr)   xrf   s          r   r1   &GPFDeploy1IniParser.load_xml_parameter   s    ==?22..',,C&&w/F6{a q	,&!9&Q&&&!9:MMgE2< w))== ":s   3B=c                     [        US5      nUR                  5       S:w  aE  UR                  5       S:w  a1  UR                  S5      u  pEXCR                  S'   XSR                  S'   U$ X#R                  S'   U$ )Nr4   ry   version_fdeploy_GUIDfdeploy_SIDr5   )r   r}   r   r6   )r   r7   r8   r$   guidr   s         r   r9   %GPFDeploy1IniParser.build_xml_section   sm    Xy1MMO33MMOy(c*ID-1NN>*,/NN=)  &-NN6"r   c                     SUR                   ;   a  UR                   S   nO&UR                   S   nUR                   S   nUS-   U-   nU R                  R                  U5        U$ )Nr5   r   r   r   r<   )r   r#   r>   r   r   s        r   r?   $GPFDeploy1IniParser.load_xml_section   sf    ['''&--f5L%%n5D$$]3C#:+L!!,/r   c                 "   / nUR                  S5      nUR                  S S9  U He  nUR                  S   nXb;   a  X&   nO;U R                  U[        5      nUR                  Xv45        UR                  Xg4/5        XuR                  S'   Mg     U$ )Nz.//Section[@fdeploy_SID]c                     U R                   $ )N)tag)r   s    r   <lambda>5GPFDeploy1IniParser.custom_entities.<locals>.<lambda>   s    !%%r   )r(   r   )rO   sortr6   new_xml_entityr   appendupdate)r   rK   global_entitiesentitiesfdeploy_sidsr   
old_attrib
new_attribs           r   custom_entities#GPFDeploy1IniParser.custom_entities   s    ||$>?0CM2J,,8
!00^L
 89&&(@'AB(2JJ}%   r   r_   )rZ   r[   r\   r]   r*   r1   r9   r?   r   r^   rh   ri   s   @r   rv   rv      s!    8>(
 r   rv   )rU   r   rp   xml.etree.ElementTreer   r   configparserr   ior   samba.gp_parser   r   r
   ra   rk   rv   r_   r   r   <module>r      sS   (   	 5 %  3H#( H#VM; M 
 
\+ \r   