o
    )<Id‰  ã                   @   s"   d dl Z dd„ ZG dd„ dƒZdS )é    Nc                 C   s`   g }|   d¡D ]#}t d|¡}|s|d | }n|| d¡vr%|d | }| |¡ qd |¡S )NÚ
ú0^(.*)( ssh| ecdsa)-[^ ]* [A-Za-z0-9+=\/]{60,}.*$ú é   ú,)ÚsplitÚreÚmatchÚgroupÚappendÚjoin)Ú
ssh_keys_sÚoptionÚsearchstringÚssh_keysÚssh_keyr	   © r   úU/home/thorsten/Data/Arbeit/PerFact/Git/ema-modules/Ansible/filter_plugins/ssh_keys.pyÚssh_key_default_option   s   ÿ
r   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚFilterModulec                 C   ó   dd„ }t t||ƒƒS )Nc                 S   s*   | d }d| v rt |d | d ¡dƒ}|S )Nzssh-keyÚportzpermitlisten="localhost:{}"úpermitlisten=)r   Úformat)Úphonehome_configr   r   r   r   Úset_permitlisten_with_port$   s   üzKFilterModule.extract_phonehome_ssh_keys.<locals>.set_permitlisten_with_port©ÚlistÚmap)ÚselfÚphonehome_configsr   r   r   r   Úextract_phonehome_ssh_keys#   s   z'FilterModule.extract_phonehome_ssh_keysc                    s   d‰ ‡ fdd„}t t||ƒƒS )z_Always allow listening on port 10225.
        Necessary to allow the phonehome update.
        zpermitlisten="localhost:10225"c                    s(   t  d| ¡}|sˆ d |  S ˆ d |  S )Nr   r   r   )r   r	   )Ú	ssh_key_sr	   ©r   r   r   Úadd_rescue_option<   s   þz@FilterModule.ssh_key_phonehome_rescue.<locals>.add_rescue_optionr   )r   r   r$   r   r#   r   Ússh_key_phonehome_rescue5   s   	z%FilterModule.ssh_key_phonehome_rescuec                 C   r   )Nc                 S   s   t | ddƒS )Nzno-pty©r   ©r"   r   r   r   Úenforce_no_ptyH   s   z;FilterModule.ssh_key_enforce_no_pty.<locals>.enforce_no_ptyr   )r   r   r(   r   r   r   Ússh_key_enforce_no_ptyG   s   z#FilterModule.ssh_key_enforce_no_ptyc                 C   r   )Nc                 S   ó   t | ddƒS )Nzpermitlisten="localhost:*"r   r&   r'   r   r   r   Úenforce_permitlistenO   ó   zGFilterModule.ssh_key_enforce_permitlisten.<locals>.enforce_permitlistenr   )r   r   r+   r   r   r   Ússh_key_enforce_permitlistenN   ó   z)FilterModule.ssh_key_enforce_permitlistenc                 C   r   )Nc                 S   r*   )Nzpermitopen="127.0.0.1:1"zpermitopen=r&   r'   r   r   r   Úenforce_permitopenW   r,   zCFilterModule.ssh_key_enforce_permitopen.<locals>.enforce_permitopenr   )r   r   r/   r   r   r   Ússh_key_enforce_permitopenV   r.   z'FilterModule.ssh_key_enforce_permitopenc                 C   s   | j | j| j| j| jdœS )N©r!   r0   r)   r-   r%   r1   )r   r   r   r   Úfilters]   s   ûzFilterModule.filtersN)	Ú__name__Ú
__module__Ú__qualname__r!   r%   r)   r-   r0   r2   r   r   r   r   r      s    r   )r   r   r   r   r   r   r   Ú<module>   s    