Sindbad~EG File Manager
3
�f�
� @ s* d dl mZmZmZ G dd� dee�ZdS )� )�Plugin�IndependentPlugin� PluginOptc @ sB e Zd ZdZdZdZedded d
�gZdd� Z d
d� Z
dd� ZdS )�SshzSecure shell serviceZssh�services�security�system�identity� userconfsTz5Changes whether module will collect user .ssh configs)�defaultZval_typeZdescc C sB | j ddd�� ddg}| j|� | j|� | jd�r>| j� d S )NZsshd_configZ
ssh_config)z/etc/ssh/sshd_config$z/etc/ssh/ssh_config$z/etc/ssh/ssh_configz/etc/ssh/sshd_configr
)Z
add_file_tags�
add_copy_spec�included_configsZ
get_option�user_ssh_files_permissions)�self�sshcfgs� r �/usr/lib/python3.6/ssh.py�setup s
z Ssh.setupc C s� y�x�|D ]�}|j d�d }t| j|�ddd��X}xP|D ]H}t|j � �dks6|jd�rVq6|j� jd�r6|j � }| j|d |d � q6W W d
Q R X qW W n tk
r� Y nX d
S )z Include subconfig files �/� �rzUTF-8)�encodingr �#�include)ZtagsN���)�split�open� path_join�len�
startswith�lowerr � Exception)r r Zsshcfg�tagZcfgfile�lineZconfargr r r r
0 s
(zSsh.included_configsc C s� | j d�}|d r`y,t| jd�ddd��}|j� }W dQ R X W ql tk
r\ | jd� dS X n|d j� }xV|D ]N}y4| j|jd
�d d�}| j|�r�| j d
|� �� W qr t
k
r� Y qrX qrW dS )z�
Iterate over .ssh folders in user homes to see their permissions.
Bad permissions can prevent SSH from allowing access to given user.
z
getent passwdZstatusz/etc/passwdr zUTF-8)r NzCouldn't read /etc/passwd�output�:� z.sshzls -laZ )Zexec_cmdr r � readlinesr! Z
_log_error�
splitlinesr Z
path_isdirZadd_cmd_output�
IndexError)r Z
users_dataZpasswd_fileZusers_data_linesZusr_lineZhome_dirr r r r C s"