B
    EfU                 @   sz   d Z ddlmZ ddlmZ ddlT ddlmZ eedddZ	dd
dZ
dd Zdd Zedkrve  e  e  d	S )u   auth2ldif преобразовывает CmfAuth в LDIF.

Подробнее:
python3 -m cmf.bin.auth2ldif --help

Пример:
python3 -m cmf.bin.auth2ldif
    )make_models)init_ds)*)OrderedMultiDict)domainpasswordc             C   s  g }t  }| jddd\}}t }|dd|  |d| |dd || t }|dd| d	|  |d| |dd |dd
 || t }|dd| d	|  |dd |dd || xtj D ]}t }|dd|j d| d	|  |d|j |d|j |d|j |d|j	 |dd |dd |dd |dd |dd |dd |dd |dd |dd |d|j
 |d|j |dd|j d  |d!|j |jd k	rxt|jd"D ]n}| }|d#d| d$| d	|  ||krvt  ||< ||| d%< t || d&< || d& |j qW || qW t }|dd'| d	|  |d(d) |dd* |d+d, || x| D ]}	t }|dd||	 d%  d$| d	|  |d||	 d%   |dd- x4||	 d& D ]$}
|d.d|
 d| d	|  qTW || qW t }|dd/| d	|  |dd0 |d!|  || |S )1N.   )maxsplitZdnzdc=ZdcZobjectClassZdcObjectz,dc=Zorganizationzou=people,dc=ZouZpeopleZorganizationalUnitzcn=z,ou=people,dc=ZcnZgnZuidZmailtopZcontactZinetOrgPersonZshadowAccountZposixAccountuserZorganizationalPersonZ	uidNumberZ	gidNumberZhomeDirectoryz/home//ZuserPassword,ZmemberOfz,ou=Groups,dc=namememberszou=Groups,dc=ZobjectclassZorganizationalunitgroupsdescriptionzgeneric groups branchZgroupOfNamesmemberzcn=readonly,ou=people,dc=readonly)dictrsplitr   addappendZmodelsZCmfAuthlistZloginZemailZ	posix_uidZ	posix_gidZ	pass_hashr   setsplitstripkeys)r   r   resultr   ZsldZtldZmdegkm r#   ./modules/auth/bin/auth2ldif.py	auth2ldif   s    


 


&$
r%   Nc             C   sJ   xD| D ]<}x,|j ddD ]\}}t| d||d qW t|d qW d S )NT)Zmulti:)file)itemsprint)ldifr'   r   r!   vr#   r#   r$   
print_ldifb   s    
r,   c              C   sX   dd l } | j| jd}|jdddd |jddd	d |jd
dd| ddd | S )Nr   )formatter_classz--domainzyour company domain namezexample.com)helpdefaultz
--passwordzpassword for cn=readonlyZ123z--outputz-ozsend output to filew-)r.   typer/   )argparseArgumentParserArgumentDefaultsHelpFormatteradd_argumentFileType
parse_args)r3   parserr#   r#   r$   r8   i   s    
r8   c              C   s$   t  } t| j| j}t|| j d S )N)r8   r%   r   r   r,   output)argsr*   r#   r#   r$   main   s    r<   __main__)N)__doc__Zcmfr   Zcmf.data_providers.baser   Zcmf.includeZwerkzeug.datastructuresr   strr%   r,   r8   r<   __name__r#   r#   r#   r$   <module>   s   R
