o
    O6uf2  ã                   @   sX   d dl Z d dlmZmZmZmZ G dd„ deƒZG dd„ deeƒZG dd„ deeƒZdS )	é    N)ÚPluginÚ	PluginOptÚIndependentPluginÚ	CosPluginc                   @   s(   e Zd ZdZdZdZdd„ Zdd„ ZdS )	ÚLogsBasezSystem logsÚlogs©ÚsystemÚhardwareÚstoragec           	         s¨  d}d|g}g }ˆ   |¡r>tˆ  |¡ddd��}| ¡ D ]}| d¡r.|t | ¡ d ¡7 }qW d   ƒ n1 s9w   Y  |D ]}ˆ   ˆ  |¡¡sKq@ˆ  |¡}|ˆ  d|¡7 }q@|D ]}| d	¡rh|dd … }ˆ  |¡rrˆ  	|¡ q[ˆ  	g d
¢¡ ˆ  
d¡ ˆ  
d¡ t‡ fdd„dD ƒƒ}|r½ˆ  d¡r½ˆ jddgdd� ˆ jddd� ˆ jddd� ˆ  d¡r»ˆ  	ddg¡ d S d S ˆ  d¡sËˆ  	g d¢¡ d S ˆ  	g d¢¡ d S )Nzetc/rsyslog.confú/etc/syslog.confÚrzUTF-8)Úencodingz$IncludeConfigé   z^\S+\s+(-?\/.*$)\s+ú-)
r   z/etc/rsyslog.confz/etc/rsyslog.dz/var/log/boot.logz/var/log/installerz/var/log/messages*z/var/log/secure*z/var/log/udevz/var/log/dist-upgradeú/var/log/auth.logzjournalctl --disk-usagezls -alRh /var/log/c                 3   s"   � | ]}ˆ   ˆ  |d ¡¡V  qdS )zlog/journal/N)Úpath_existsÚ	path_join)Ú.0Úp©Úself© ú9/usr/lib/python3/dist-packages/sos/report/plugins/logs.pyÚ	<genexpr>?   s   € ÿz!LogsBase.setup.<locals>.<genexpr>)z/varz/runzsystemd-journaldÚjournal_fullÚjournal_alléd   )ÚtagsÚpriorityÚthisÚjournal_since_boot)Úbootr   ÚlastÚjournal_last_bootÚall_logsz/var/log/journal/*z/run/log/journal/*)	z/var/log/syslogz/var/log/syslog.1z/var/log/syslog.2*z/var/log/kern.logz/var/log/kern.log.1z/var/log/kern.log.2*r   z/var/log/auth.log.1z/var/log/auth.log.2*)z/var/log/syslog*z/var/log/kern.log*z/var/log/auth.log*)r   Úopenr   Ú	readlinesÚ
startswithÚglobÚsplitÚdo_regex_find_allÚpath_isfileÚadd_copy_specÚadd_cmd_outputÚanyÚ
is_serviceÚadd_journalÚ
get_option)	r   ÚrsyslogÚconfsr   ÚconfÚlineÚconfigÚiÚjournalr   r   r   Úsetup   sV   

€þÿ



€

ÿ
ÿ

þÿ
zLogsBase.setupc                 C   s   |   ddd¡ d S )Nz/etc/rsyslog*z (ActionLibdbiPassword |pwd=)(.*)z\1[********])Údo_path_regex_subr   r   r   r   Úpostproc_   s
   ýzLogsBase.postprocN)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesr:   r<   r   r   r   r   r      s    Kr   c                   @   s   e Zd ZdZdZdZdS )ÚIndependentLogsaì  
    This plugin will collect logs traditionally considered to be "system" logs,
    meaning those such as /var/log/messages, rsyslog, and journals that are
    not limited to unit-specific entries.

    Note that the --since option will apply to journal collections by this
    plugin as well as the typical application to log files. Most users can
    expect typical journal collections to include the "full" journal, as well
    as journals limited to this boot and the previous boot.
    r   r   N)r=   r>   r?   Ú__doc__rA   rB   r   r   r   r   rC   g   s    rC   c                       s,   e Zd Zedddd�gZ‡ fdd„Z‡  ZS )ÚCosLogsúlog-daysé   z"the number of days logs to collect)ÚnameÚdefaultÚdescc                    sF   t ƒ  ¡  |  d¡r|  d¡ d S |  dd¡}| jd|› d�d� d S )Nr%   zjournalctl -o exportrF   rG   r   Údays)Úsince)Úsuperr:   r2   r.   r1   )r   rK   ©Ú	__class__r   r   r:   }   s
   

zCosLogs.setup)r=   r>   r?   r   Úoption_listr:   Ú__classcell__r   r   rN   r   rE   w   s    ÿÿrE   )	r)   Úsos.report.pluginsr   r   r   r   r   rC   rE   r   r   r   r   Ú<module>   s
   Z