
    Id                     &   d dl Z d Z e j                  d      Zd Zd Zd Zd Zd Ze	d	k(  r#d dl
Z
	 e
j                  d
   Z e ee             yy# e$ r9  ede
j                  d    z  e
j                          e
j                   d
       Y Mw xY w)    Nc                     |}	 | j                         }|dd dk(  r|dk7  r|dk7  sJ ||z   }n|dk(  r|}|dk(  r	 ||fS |}	 ||fS C)z+Read a line from an LDIF file, unfolding itN     
)readline)fbufferlinels       =/usr/lib/python3/dist-packages/samba/ms_display_specifiers.py__read_folded_liner      s    D
JJLRa5C< 2:$$,/. !8D rz7 &> &>5     z^([A-Za-z][A-Za-z0-9-]*):c              #   ^  K   d}	 g }	 t        | |      \  }}|dd dk(  r|dk(  s|dk(  rnkt        j                  |      }|r|dd dk(  r|dd }|j                  |       n4t	        d|z  dt
        j                  	       t        j                  d       t        |      r| |dk(  ryw)
z(Read an LDIF entry, only unfolding linesr   Nr   #r   zInvalid line: %sr   )endfile)	r   attr_type_rematchappendprintsysstderrexitlen)r	   r
   entryr   ms        r   __read_raw_entriesr   >   s      F
,Q7KQ!u|DyAG""1%ARS6T>#2AQ(1,#CJJG% ( u:K77 s   B+B-c                 v    | j                  d      dk7  r$| j                  dd      } | j                  dd      S | S )z"Fix a string DN to use ${CONFIGDN}z%<Configuration NC Distinguished Name>r   z
 r   z${CONFIGDN})findreplace)dns    r   fix_dnr$   a   s=     
ww672=ZZr"zzA=QQ	r   c                     g }| D ]C  }|d   dk(  r|j                  |d   d|d          (|j                  |d   d|d          E dj                  |      S )zWrite out entry as LDIF   r   : r   :: r   )r   join)r   outr   s      r   __write_ldif_oner+   k   se    
C 1Q419JJ1Q41./ JJAaD!A$/01 99S>r   c                    g }| D ]  }g }|j                  d      dk7  r$|j                  dd      }|j                  d       n#|j                  dd      }|j                  d       |d   j                         }|dk(  ry|dk(  r|d	k(  r|d
k(  r|dk(  r|dk(  r|dk(  r5|d   j	                         j                         j                         }|dk(  rt        |d         |d<   |j                  |        |} | S )z?Perform required transformations to the Microsoft-provided LDIFz::r   r(   r   r'   r   
changetypedistinguishednameinstancetypenamecnobjectcategoryshowinadvancedviewonlyTRUE)r!   splitr   lowerupperlstriprstripr$   )r   
temp_entryr   tkeyvalues         r   __transform_entryr>   y   s    J (66$<2q!AHHQKa AHHQKdjjl,%%. &=$;""**aDJJL'')002E ad|!!Q(T ELr   c           	          g }ddl m}  || dd      5 }t        |      D ]%  }|j                  t	        t        |                   ' 	 ddd       dj                  |      dz   S # 1 sw Y   xY w)z0Read and transform Microsoft-provided LDIF file.r   )openrzlatin-1)encodingNz

)ior@   r   r   r+   r>   r)   )filenamer*   r@   r	   r   s        r   read_ms_ldifrE      sw     C	hi	0 CA'* 	CEJJ'(9%(@AB	CC ;;sf$$	C Cs   4A%%A.__main__r   z*Usage: %s display-specifiers-ldif-file.txt)r   )rer   compiler   r   r$   r+   r>   rE   __name__r   argvdisplay_specifiers_file
IndexErrorr   r   r    r   r   <module>rN      s   * 
F rzz56 F1h
% z"%((1+
 
,.
/0 
  :chhqkJQTQ[Q[\s   A ;BB