509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
èhj	  ã               @   s8   d dl Z d dlZd dlmZ ejƒ ZG dd„ deƒZdS )é    N)ÚReaderc                   sB   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	d
„Zdd„ Z‡  Z	S )ÚFilesz�
    A class used to represent a Log Files Reader

    Args:
        path -- the path where SSSD logs are to
           be read (default /var/log/sssd/)
    c                s*   t ƒ jƒ  g | _| j|ƒ| _| jƒ | _d S )N)ÚsuperÚ__init__Ú	log_filesÚresolve_pathÚpathÚget_domain_logfilesÚdomains)Úselfr   )Ú	__class__© ú"/usr/lib/python3.6/source_files.pyr      s    
zFiles.__init__c             c   sz   xt| j D ]j}y,t|ƒ�}x|D ]
}|V  qW W dQ R X W q tk
rp } ztjdƒ tj|ƒ wW Y dd}~X qX qW dS )zH
        Yields:
            str: The next line in the log file
        Nz(Could not find domain log file, skipping)r   ÚopenÚFileNotFoundErrorÚloggerZwarning)r   ÚfilesÚfileÚlineÚerrr   r   r   Ú__iter__   s    



zFiles.__iter__c             C   s   |j dƒr|S |d S d S )Nú/)Úendswith)r   r   r   r   r   r   '   s    
zFiles.resolve_pathFc          	      sr   g }ddddddddd	g	}|r0t j | jd
 ƒ}nt j | jd ƒ}x,|D ]$‰ t‡ fdd„|D ƒƒsF|jˆ ƒ qFW |S )z> Retrieve list of SSSD log files, exclude rotated (.gz) files ZifpZnssZpamZsudoZautofsZsshZpacZkcmz.gzz*.logzsssd_*c             3   s   | ]}|ˆ kV  qd S )Nr   )Ú.0Ús)r   r   r   ú	<genexpr>7   s    z,Files.get_domain_logfiles.<locals>.<genexpr>)Úglobr   ÚanyÚappend)r   ÚchildZdomain_filesZexclude_listZ	file_listr   )r   r   r	   -   s    

zFiles.get_domain_logfilesc             C   s‚   g | _ || jjkr&| j j| jd ƒ nX|| jjkrF| j j| jd ƒ n8|| jjkr~| j|ƒ}|sdt‚x|D ]}| j j|ƒ qjW dS )zb
        Switch the reader to interact with a certain SSSD component
        NSS, PAM, BE
        zsssd_nss.logzsssd_pam.logN)	r   Z	ComponentZNSSr   r   ZPAMZBEr	   ÚIOError)r   Z	componentr   r
   Zdomr   r   r   Úset_component<   s    

zFiles.set_component)F)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r	   r!   Ú__classcell__r   r   )r   r   r   	   s   
r   )r   ZloggingZsssd.source_readerr   Z	getLoggerr   r   r   r   r   r   Ú<module>   s   