U
    i©¹d›  ã                   @   sZ   d dl mZmZmZmZ d dlZG dd„ deƒZG dd„ deeƒZG dd„ deeeƒZdS )	é    )ÚPluginÚRedHatPluginÚDebianPluginÚUbuntuPluginNc                   @   s4   e Zd ZdZdZdZdZdd„ Zdd„ Zd	d
„ Z	dS )ÚPostfixzPostfix smtp serverÚpostfix)ZmailÚservices©r   c                 C   s¦   ddddddddd	d
dddddddg}g }d zjt |  d¡dƒP}| ¡ D ]@}| d¡rXqH| d¡}|d  ¡ |krH| |d  ¡ d ¡ qHW 5 Q R X W 5 |£  S X  )NZlmtp_tls_dkey_fileZlmtp_tls_eckey_fileZlmtp_tls_key_fileZsmtp_tls_dkey_fileZsmtp_tls_eckey_fileZsmtp_tls_key_fileZsmtpd_tls_dkey_fileZsmtpd_tls_eckey_fileZsmtpd_tls_key_fileZ"tls_legacy_public_key_fingerprintsZtlsproxy_tls_dkey_fileZtlsproxy_tls_eckey_fileZtlsproxy_tls_key_fileZsmtpd_tls_dh1024_param_fileZsmtpd_tls_dh512_param_fileZtlsproxy_tls_dh1024_param_fileZtlsproxy_tls_dh512_param_fileú/etc/postfix/main.cfÚrú#ú=r   é   )ÚopenÚ	path_joinÚ	readlinesÚ
startswithÚsplitÚstripÚappend)ÚselfÚforbid_attributesÚfpÚcffileÚlineZwords© r   ú</usr/lib/python3/dist-packages/sos/report/plugins/postfix.pyÚforbidden_ssl_keys_files   s8    ï

&z Postfix.forbidden_ssl_keys_filesc              
   C   sþ   d}g }d}t  d¡}z¦t|  d¡dƒŒ}| ¡ D ]|}t  dd|¡}| |¡}|d krXq2| d¡ ¡ }||kr2| d	¡ ¡ }	t	|	ƒd
krŠq2|	 
|¡r¤|	t	|ƒd … }	| |	¡ q2W 5 Q R X W n< tk
rø }
 zd|
jd
 › }|  |¡ W 5 d }
~
X Y nX |S )N)Zlmtp_sasl_password_mapsZsmtp_sasl_password_mapsZpostscreen_dnsbl_reply_mapZsmtp_sasl_auth_cache_namezhash:z
^(.*)=(.*)r
   r   z#.*Ú r   é   r   zError parsing main.cf: )ÚreÚcompiler   r   r   ÚsubÚmatchÚgroupr   Úlenr   r   Ú	ExceptionÚargsZ
_log_error)r   r   r   ÚprefixZoption_formatr   r   ZoptionZ	attributeÚfilepathÚeÚmsgr   r   r   Úforbidden_password_files9   s.    


z Postfix.forbidden_password_filesc                 C   sJ   |   dg¡ |  ddg¡ |  dddg¡ |  |  ¡ ¡ |  |  ¡ ¡ d S )Nz/etc/postfix/ZpostconfZmailqz/etc/postfix/*.keyz/etc/postfix/*.crtz/etc/postfix/ssl/)Úadd_copy_specZadd_cmd_outputZadd_forbidden_pathr   r,   ©r   r   r   r   Úsetup]   s    ÿþýzPostfix.setupN)
Ú__name__Ú
__module__Ú__qualname__Z
short_descZplugin_nameZprofilesÚpackagesr   r,   r/   r   r   r   r   r      s   #$r   c                       s$   e Zd ZdZdZ‡ fdd„Z‡  ZS )ÚRedHatPostfix)z/etc/rc.d/init.d/postfixr	   c                    s   t t| ƒ ¡  |  d¡ d S )Nz	/etc/mail)Úsuperr4   r/   r-   r.   ©Ú	__class__r   r   r/   t   s    zRedHatPostfix.setup)r0   r1   r2   Úfilesr3   r/   Ú__classcell__r   r   r6   r   r4   o   s   r4   c                       s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚDebianPostfixr	   c                    s   t t| ƒ ¡  d S )N)r5   r:   r/   r.   r6   r   r   r/   }   s    zDebianPostfix.setup)r0   r1   r2   r3   r/   r9   r   r   r6   r   r:   y   s   r:   )	Zsos.report.pluginsr   r   r   r   r    r   r4   r:   r   r   r   r   Ú<module>	   s   a
