Current File : //lib/python3.9/site-packages/firewall/core/io/__pycache__/helper.cpython-39.pyc
a

���g2�@s�gd�ZddlmZddlZddlZddlZddlmZddlm	Z	m
Z
mZmZm
Z
ddlmZddlmZddlmZGdd	�d	e	�ZGd
d�de
�Zdd
�Zddd�ZdS))�Helper�
helper_reader�
helper_writer�N)�config)�	IO_Object�IO_Object_ContentHandler�IO_Object_XMLGenerator�
check_port�check_tcpudp)�log)�errors)�
FirewallErrorcsveZdZdddddddgffZdZd	d
gZdddgd
�Zgd�ddgd�Z�fdd�Zdd�Z	dd�Z
dd�Z�ZS)r)�version�)�shortr)�descriptionr)�familyr)�moduler�ports)rrz(sssssa(ss))�-�.Nr)rr�helper)�namerr�port�protocol)rrcs6tt|���d|_d|_d|_d|_d|_g|_dS�Nr)	�superr�__init__rrrrrr��self��	__class__��;/usr/lib/python3.9/site-packages/firewall/core/io/helper.pyr:szHelper.__init__cCs.d|_d|_d|_d|_d|_|jdd�=dSr)rrrrrrrr"r"r#�cleanupCszHelper.cleanupcCs(ddg}||vr$ttjd||f��dS)NZipv4Zipv6z'%s' not in '%s')r
rZINVALID_IPV)rZipvZipvsr"r"r#�	check_ipvKs

�zHelper.check_ipvcCsv|dkr,|D]}t|d�t|d�qnF|dkrr|�d�sNttjd|��t|�dd��dkrrttjd|��dS)	Nrr�r�
nf_conntrack_�('%s' does not start with 'nf_conntrack_'r�Module name '%s' too short)r	r
�
startswithr
r�INVALID_MODULE�len�replace)rr�itemZ
all_configZall_io_objectsrr"r"r#�
_check_configQs
��zHelper._check_config)
�__name__�
__module__�__qualname__ZIMPORT_EXPORT_STRUCTUREZDBUS_SIGNATUREZADDITIONAL_ALNUM_CHARSZPARSER_REQUIRED_ELEMENT_ATTRSZPARSER_OPTIONAL_ELEMENT_ATTRSrr$r%r/�
__classcell__r"r"r r#r%s(���	rc@seZdZdd�ZdS)�helper_ContentHandlercCs>t�|||�|j�||�|dkr�d|vr8|d|j_d|vr\|j�|d�|d|j_d|vr�|d�d�s�tt	j
d|d��t|d�dd��dkr�tt	j
d	|d��|d|j_
nz|d
kr�np|dkr�nf|dk�r:t|d�t|d
�|d|d
f}||jjv�r$|jj�|�nt�d|d|d
�dS)Nrrrrr'r(rr&r)rrrrz#Port '%s/%s' already set, ignoring.)r�startElementr.Zparser_check_element_attrsrr%rr*r
rr+r,r-rr	r
r�appendrZwarning)rr�attrs�entryr"r"r#r5bsF��
�
�z"helper_ContentHandler.startElementN)r0r1r2r5r"r"r"r#r4asr4c	Cst�}|�d�s ttjd|��|dd�|_|�|j�||_||_|�	t
j�rVdnd|_|j|_
t|�}t��}|�|�d||f}t|d��n}t�d�}|�|�z|�|�Wn:tjy�}z ttjd|����WYd}~n
d}~00Wd�n1�s
0Y~~|S)	Nz.xmlz'%s' is missing .xml suffix���FT�%s/%s�rbznot a valid helper file: %s)r�endswithr
rZINVALID_NAMErZ
check_name�filename�pathr*r�
ETC_FIREWALLDZbuiltin�defaultr4�saxZmake_parserZsetContentHandler�openZInputSourceZ
setByteStream�parseZSAXParseExceptionZINVALID_HELPERZgetException)	r=r>r�handler�parserr�f�source�msgr"r"r#r�s:
�


��:rc

CsL|r|n|j}|jr$d||jf}nd||jf}tj�|�r�zt�|d|�Wn2ty�}zt�	d||�WYd}~n
d}~00tj�
|�}|�tj
�r�tj�|�s�tj�tj
�s�t�tj
d�t�|d�tj|ddd�}t|�}|��i}|j|d	<|j�r|jd
k�r|j|d<|j�r<|jd
k�r<|j|d<|�d
|�|�d�|j�r�|jd
k�r�|�d�|�di�|�|j�|�d�|�d�|j�r�|jd
k�r�|�d�|�di�|�|j�|�d�|�d�|jD]4}	|�d�|�d|	d|	dd��|�d��q�|�d
�|�d�|��|��~dS)Nr:z	%s/%s.xmlz%s.oldzBackup of file '%s' failed: %si�ZwtzUTF-8)�mode�encodingrrrrr�
z  rrrrr&)rr) r>r=r�os�exists�shutil�copy2�	Exceptionr�error�dirnamer*rr?�mkdir�iorBrZ
startDocumentrrrr5ZignorableWhitespacerZ
charactersZ
endElementrrZ
simpleElementZendDocument�close)
rr>�_pathrrH�dirpathrFrDr7rr"r"r#r�s\$













r)N)�__all__Zxml.saxrArLrTrNZfirewallrZfirewall.core.io.io_objectrrrr	r
Zfirewall.core.loggerrrZfirewall.errorsr
rr4rrr"r"r"r#�<module>s<#