U
    -Ø_g9  ã                   @   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©ÚsystemZhardwareZstoragec           	         s¸  d}d|g}g }ˆ   |¡rhtˆ  |¡ddd4}| ¡ D ]$}| d¡r8|t | ¡ d ¡7 }q8W 5 Q R X |D ]0}ˆ   ˆ  |¡¡s‚qlˆ  |¡}|ˆ  d|¡7 }ql|D ].}| d	¡r¼|dd … }ˆ  |¡r¢ˆ  	|¡ q¢ˆ  	dd
ddddddddg
¡ ˆ  
d¡ ˆ jddd t‡ fdd„dD ƒƒ}|rzˆ  d¡rzˆ jddgdd ˆ jdd d! ˆ jd"d#d! ˆ  d$¡r´ˆ  	d%d&g¡ n:ˆ  d$¡s¤ˆ  	d'd(d)d*d+d,dd-d.g	¡ nˆ  	d/d0d1g¡ d S )2Nzetc/rsyslog.confz/etc/syslog.confÚrzUTF-8)Úencodingz$IncludeConfigé   z^\S+\s+(-?\/.*$)\s+ú-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-upgradez/var/log/auth.logzjournalctl --disk-usagez/var/logT)Ú	recursivec                 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-journaldZjournal_fullZjournal_alléd   )ÚtagsZpriorityÚthisZjournal_since_boot)Zbootr   ZlastZ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*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ÚsplitZdo_regex_find_allZpath_isfileZadd_copy_specÚadd_cmd_outputZadd_dir_listingÚanyZ
is_serviceÚadd_journalÚ
get_option)	r   ZrsyslogZconfsr   ÚconfÚlineZconfigÚiZjournalr   r   r   Úsetup   s~    

"


ö
ÿ
ÿþ÷ýzLogsBase.setupc                 C   s   |   ddd¡ d S )Nz/etc/rsyslog*z (ActionLibdbiPassword |pwd=)(.*)z\1[********])Zdo_path_regex_subr   r   r   r   Úpostproc_   s
    ýzLogsBase.postprocN)Ú__name__Ú
__module__Ú__qualname__Z
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__r-   r.   r   r   r   r   r/   g   s   r/   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ÚdefaultZdescc                    sD   t ƒ  ¡  |  d¡r |  d¡ n |  dd¡}| jd|› dd d S )Nr   zjournalctl -o exportr2   r3   r   Údays)Zsince)Úsuperr(   r$   r!   r#   )r   r6   ©Ú	__class__r   r   r(   }   s
    

zCosLogs.setup)r*   r+   r,   r   Zoption_listr(   Ú__classcell__r   r   r8   r   r1   w   s
   ÿÿr1   )	r   Zsos.report.pluginsr   r   r   r   r   r/   r1   r   r   r   r   Ú<module>	   s   Z