U
    pVcU                     @   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 || t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	rt|jd"D ]n}| }|d#d| d$| d	|  ||krpt  ||< ||| d%< t || d&< || d& |j q|| qt }|dd'| d	|  |d(d) |dd* |d+d, || | D ]}	t }|dd||	 d%  d$| d	|  |d||	 d%   |dd- ||	 d& D ]$}
|d.d|
 d| d	|  qF|| qt }|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gn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   sB   | D ]8}|j ddD ]\}}t| d||d qt|d q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/   typer0   )argparseArgumentParserArgumentDefaultsHelpFormatteradd_argumentFileType
parse_args)r4   parserr$   r$   r%   r9   i   s,        r9   c                  C   s$   t  } t| j| j}t|| j d S )N)r9   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-   r9   r=   __name__r$   r$   r$   r%   <module>   s   	R
