HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/lib/python3/dist-packages/cloudinit/config/__pycache__/cc_rsyslog.cpython-38.pyc
U

Ӈg/.�	@s�UdZddlZddlZddlZddlZddlZddlmZmZm	Z	ddl
mZddlm
Z
ddlmZddlmZmZddlmZdd	lmZd
egedgd�Zeed
<dddiiddgdd�Zddgd�ddgd�ddgd�d�Ze�e�Ze�d�Ze�d�Z ed�dd�Z!d3dd�Z"d4d d!�Z#e$ee$d"�d#d$�Z%d%d&�Z&d5d'd(�Z'Gd)d*�d*�Z(d6d+d,�Z)edd-�d.d/�Z*e+e
ee,dd0�d1d2�Z-dS)7z-Rsyslog: Configure system logging via rsyslog�N)�	lifecycle�subp�util)�Cloud)�Config)�
MetaSchema)�ALL_DISTROS�Distro)�loggers)�PER_INSTANCEZ
cc_rsyslog�rsyslog)�idZdistrosZ	frequencyZactivate_by_schema_keys�metaz/etc/rsyslog.dz20-cloud-config.conf�autoZrsyslogdF)�
config_dir�config_filename�service_reload_command�remotes�configs�	check_exe�packages�install_rsyslogz/usr/local/etc/rsyslog.d)rrzsysutils/rsyslogz/usr/pkg/etc/rsyslog.d)ZfreebsdZopenbsdZnetbsdz[ ]*[#]+[ ]*z_^(?P<proto>[@]{0,2})(([\[](?P<bracket_addr>[^\]]*)[\]])|(?P<addr>[^:]*))([:](?P<port>[0-9]+))?$)�distrocCs4t}t�t�}|j|kr0tj|||jgdd�}|S)z�Construct a distro-specific rsyslog config dictionary by merging
       distro specific changes into base config.

    @param distro: String providing the distro class name.
    @returns: Dict of distro configurations for ntp clients.
    T)�reverse)�DISTRO_OVERRIDES�copy�RSYSLOG_CONFIGZosfamilyrZ
mergemanydict�name)rZdcfg�cfg�r�=/usr/lib/python3/dist-packages/cloudinit/config/cc_rsyslog.py�distro_default_rsyslog_configFs


r!cCs(t�|�rdS|dkrdg}||�dS)aiInstall rsyslog package if not already installed.

    @param install_func: function.  This parameter is invoked with the contents
    of the packages parameter.
    @param packages: list.  This parameter defaults to ['rsyslog'].
    @param check_exe: string.  The name of a binary that indicates the package
    the specified package is already installed.
    Nr)rZwhich)Zinstall_funcrrrrr rTs
	
rcCs.|dkr |�dd�}|�d|�Stj|dd�S)Nr�rsyslog_svcnamerz
try-reloadT)Zcapture)�
get_option�manage_servicer)r�command�servicerrr �
reload_syslogesr')rr�returnc
Cs"|�di�}t|�}t|�d�t�rhtjddd�d|�d�i}d|krT|d|d<d|krh|d|d	<dgtfd	|d	tfd|dtfd
|d
tfd|dttffd|dtfd
|d
tfd|dtff}|D]L\}}}||kr�|||<q�t|||�s�t	d|�d|�dt
||�����q�|S)z�Return an updated config.

    Support converting the old top level format into new format.
    Raise a `ValueError` if some top level entry has an incorrect type.
    rz)The rsyslog key with value of type 'list'z22.2)Z
deprecatedZdeprecated_versionrZrsyslog_filenamerZrsyslog_dirrrrrrrzInvalid type for key `z`. Expected type(s): z. Current type: )�getr!�
isinstance�listrZ	deprecate�str�dict�bool�
ValueError�type)rr�mycfgZ
distro_configZfillup�key�defaultZvtypesrrr �load_configls@���
�r4c
	Cs�g}t|�D]�\}}t|t�rNd|kr8t�d|d�q|d}|�d|�}n|}|}|��}|stt�d|d�qtj�	||�}d}||kr�d}|�
|�z*d}	|�d	�s�d	}	tj
|||	|d
�Wqtk
r�t�td|�YqXq|S)N�contentz%No 'content' entry in config entry %s��filenamezEntry %s has an empty filenameZab�wb��
)�omodezFailed to write to %s)�	enumerater*r-�LOG�warningr)�strip�os�path�join�append�endswithrZ
write_file�	ExceptionZlogexc)
r�	def_fname�cfg_dir�filesZcur_posZentr5r7r;Zendlrrr �apply_rsyslog_changes�s<
�

rIcCs
zt�|�\}}|��}Wntk
r8|d}}YnX|����}d}t|�dkr\|}n"t|�dkrr|\}}ntd|��t�|�}|s�td|��|�d�}|�d�p�|�d�}|�d�}	|�d	�r�|�	d
�s�td|��|r�|s�|}t
|||||	d�}
|
��|
S)
Nr6�zline had multiple spaces: %szInvalid host specification '%s'�proto�addrZbracket_addr�port�[�]z"host spec had invalid brackets: %s�r�matchrKrLrM)�
COMMENT_RE�splitr?r/�len�HOST_PORT_RErQ�group�
startswithrD�SyslogRemotesLine�validate)�liner�dataZcommentZtoksrQZ	host_portrKrLrM�trrr �parse_remotes_line�s>



�r]c@s.eZdZd
dd�Zdd�Zdd�Zdd	�ZdS)rXNcCs\|sd}||_||_|sd}|dkr*d}n|dkr6d}||_||_|rRt|�|_nd|_dS)Nz*.*�udp�@�@@�tcp)rrQrKrL�intrM)�selfrrQrKrLrMrrr �__init__�szSyslogRemotesLine.__init__c
CsZ|jrHzt|j�Wn2tk
rF}ztd|j�|�W5d}~XYnX|jsVtd��dS)Nzport '%s' is not an integerzaddress is required)rMrbr/rL)rc�errr rYs��zSyslogRemotesLine.validatecCsd|j|j|j|j|jfS)Nz.[name=%s match=%s proto=%s address=%s port=%s]rP)rcrrr �__repr__s�zSyslogRemotesLine.__repr__cCs�|jd}|jdkr|d7}n|jdkr0|d7}d|jkrN|d|jd7}n
||j7}|jrl|d	|j7}|jr�|d
|j7}|S)N� r^r_rar`�:rNrOz:%sz # %s)rQrKrLrMr)rcZbufrrr �__str__s





zSyslogRemotesLine.__str__)NNNNN)�__name__�
__module__�__qualname__rdrYrfrirrrr rX�s�
	rXcCs�|sdSg}|dk	r|�|�|��D]\\}}|s4q&z|�tt||d���Wq&tk
r�}zt�d|||�W5d}~XYq&Xq&|dk	r�|�|�d�|�dS)N)rz!failed loading remote %s: %s [%s]r:)rC�itemsr,r]r/r=r>rB)r�header�footer�linesrrZrerrr �remotes_to_rsyslog_cfg)s
$
rq)�cloudr(c	Csxz|j�dd�Wntjk
r*YdSX|j�dd�|j��t�tj��|j�dd�t�d�W5QRXdS)z�
    This helper function bundles the necessary steps to disable BSD base syslog
    ``rc(8)`` reads its configuration on start, so after disabling syslogd, we
    need to tell rc to reload its config
    �enabledZsyslogdN�disableZonestopzOsyslogd is running before cloud-init! Please report this as bug to the porters!)	rr$r�ProcessExecutionErrorZreload_init�
contextlib�suppressr=�error)rrrrr � disable_and_stop_bsd_base_syslog;s
�ry)rrrr�argsr(c

Cs^d|krt�d|�dSt||j�}|d}|drL|�t|dddd��|j�dd�}|d	d
kr�t|jj|d|dd
�t	�
�r�|j�d|�t|�|ds�t�d�dSt
|d|d|dd�}|s�t�d�dSzt|j|dd�}Wn:tjk
�r0}	zd}t�dt|	��W5d}	~	XYnX|�rZt��t�|j�t�d||�dS)Nrz;Skipping module named %s, no 'rsyslog' key in configurationrrz# begin remotesz
# end remotes)rnror"rTrr)rr�enablez.Empty config rsyslog['configs'], nothing to dorr)rrFrGz0restart of syslog not necessary, no changes mader)r%FzFailed to reload syslog %sz%s configured %s files)r=�debugr4rrCrqr#rZinstall_packagesrZis_BSDr$ryrIr'rrur>r,r
Z
reset_loggingZ
setup_loggingr)
rrrrrzr1rr&ZchangesZ	restartedrerrr �handleSsb����
�
�
"r})Nr)r)N)NN).�__doc__rvrZloggingr@�reZ	cloudinitrrrZcloudinit.cloudrZcloudinit.configrZcloudinit.config.schemarZcloudinit.distrosrr	Z
cloudinit.logr
Zcloudinit.settingsrr�__annotations__rrZ	getLoggerrjr=�compilerRrUr!rr'r-r4rIr]rXrqryr,r+r}rrrr �<module>sf��
����

�

/)
&?