HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/firewall/core/io/__pycache__/service.cpython-310.pyc
o

bhAb�.�@s�gd�ZddlmZddlZddlZddlZddlmZddlm	Z	m
Z
mZmZm
Z
mZmZddlmZddlmZddlmZGdd	�d	e	�ZGd
d�de
�Zdd
�Zddd�ZdS))�Service�service_reader�service_writer�N)�config)�	IO_Object�IO_Object_ContentHandler�IO_Object_XMLGenerator�
check_port�check_tcpudp�check_protocol�
check_address)�log)�errors)�
FirewallErrorcs�eZdZdddddgfddgfdddifd	dgfd
dgfddgfddgff
Zd
dgZdddd�Zddgddgdgdgddgddgdgdgd�Z�fdd�Zdd�Zdd�Z	�Z
S) r)�version�)�shortr)�descriptionr�ports)rr�modulesr�destination�	protocols�source_ports�includes�helpers�_�-N)rr�service�namer�port�protocol�value�ipv4�ipv6r)rrr �moduler�source-port�include�helpercsNtt|���d|_d|_d|_g|_g|_g|_i|_	g|_
g|_g|_dS�Nr)
�superr�__init__rrrrrrrrrr��self��	__class__��:/usr/lib/python3/dist-packages/firewall/core/io/service.pyr*Cs
zService.__init__cCshd|_d|_d|_|jdd�=|jdd�=|jdd�=|j��|jdd�=|j	dd�=|j
dd�=dSr()rrrrrrr�clearrrrr+r/r/r0�cleanupPs
zService.cleanupc	Cs,|dkr$|D]}|ddkrt|d�t|d�qt|d�qdS|dkr3|D]}t|�q*dS|dkrJ|D]}t|d�t|d�q9dS|dkrh|D]}|dvr^ttjd	|��t|||�qPdS|d
kr�|D]%}|�d�r�|�dd�}d|vr�|�dd
�}t	|�dkr�ttj
|��qndSdS)Nrrr�rrr�r"r#z'%s' not in {'ipv4'|'ipv6'}r�
nf_conntrack_rr�)r	r
rrr�INVALID_DESTINATIONr�
startswith�replace�len�INVALID_MODULE)	r,r�item�
all_config�all_io_objectsr�protorr$r/r/r0�
_check_config\sJ�
�����
��zService._check_config)�__name__�
__module__�__qualname__�IMPORT_EXPORT_STRUCTURE�ADDITIONAL_ALNUM_CHARS�PARSER_REQUIRED_ELEMENT_ATTRS�PARSER_OPTIONAL_ELEMENT_ATTRSr*r2r@�
__classcell__r/r/r-r0r%s:
���
rc@seZdZdd�ZdS)�service_ContentHandlercCs<t�|||�|j�||�|dkr,d|vrt�d|d�d|vr*|d|j_dSdS|dkr2dS|dkr8dS|dkr�|ddkrrt|d�t|d	�|d|d	f}||jj	vre|jj	�
|�dSt�d
|d|d	�dSt|d	�|d	|jjvr�|jj�
|d	�dSt�d|d	�dS|d	kr�t|d�|d|jjvr�|jj�
|d�dSt�d|d�dS|d
kr�t|d�t|d	�|d|d	f}||jj
vr�|jj
�
|�dSt�d|d|d	�dS|dk�rdD]$}||v�rt|||�||jjv�rt�d|�q�|||jj|<q�dS|dk�rV|d}|�d��r>|�dd�}d|v�r>|�dd�}||jjv�rN|jj�
|�dSt�d|�dS|dk�ry|d|jjv�ro|jj�
|d�dSt�d|d�dS|dk�r�|d|jjv�r�|jj�
|d�dSt�d|d�dSdS)Nrrz'Ignoring deprecated attribute name='%s'rrrrrr z#Port '%s/%s' already set, ignoring.z$Protocol '%s' already set, ignoring.r!r%z)SourcePort '%s/%s' already set, ignoring.rr4z2Destination address for '%s' already set, ignoringr$r5rrz"Module '%s' already set, ignoring.r&z#Include '%s' already set, ignoring.r'z"Helper '%s' already set, ignoring.)r�startElementr<�parser_check_element_attrsr
�warningrr	r
r�appendrrrrrr8r9rrr)r,r�attrs�entry�xr$r/r/r0rJ�s�������

���

�
�
��z#service_ContentHandler.startElementN)rArBrCrJr/r/r/r0rI�srIc	Cst�}|�d�sttjd|��|dd�|_|�|j�||_||_|�	t
j�r+dnd|_|j|_
t|�}t��}|�|�d||f}t|d��4}t�d�}|�|�z|�|�Wntjys}z
ttjd|����d}~wwWd�~~|S1s�wY~~|S)	Nz.xmlz'%s' is missing .xml suffix���FT�%s/%s�rbznot a valid service file: %s)r�endswithrr�INVALID_NAMEr�
check_name�filename�pathr8r�
ETC_FIREWALLD�builtin�defaultrI�sax�make_parser�setContentHandler�open�InputSource�
setByteStream�parse�SAXParseException�INVALID_SERVICE�getException)	rWrXr�handler�parserr�f�source�msgr/r/r0r�sJ
�


�����
�	�	rc
CsJ|r|n|j}|jrd||jf}nd||jf}tj�|�rCz
t�|d|�WntyB}z
t�	d||�WYd}~nd}~wwtj�
|�}|�tj
�ritj�|�sitj�tj
�sct�tj
d�t�|d�tj|ddd�}t|�}|��i}|jr�|jd	kr�|j|d
<|�d|�|�d�|jr�|jd	kr�|�d
�|�di�|�|j�|�d�|�d�|jr�|jd	kr�|�d
�|�di�|�|j�|�d�|�d�|jD]}	|�d
�|�d|	d|	dd��|�d�q�|jD]}
|�d
�|�dd|
i�|�d�q�|jD]}	|�d
�|�d|	d|	dd��|�d��q|jD]}|�d
�|�dd|i�|�d��q/t|j �dk�r^|�d
�|�d|j �|�d�|j!D]}|�d
�|�dd|i�|�d��qa|j"D]}
|�d
�|�dd|
i�|�d��qz|�d�|�d�|�#�|�$�~dS)NrRz	%s/%s.xmlz%s.oldzBackup of file '%s' failed: %si��wtzUTF-8)�mode�encodingrrr�
z  rrrrr3)rr r r!r%r$rrr&r')%rXrWr�os�exists�shutil�copy2�	Exceptionr
�error�dirnamer8rrY�mkdir�ior_r�
startDocumentrrJ�ignorableWhitespacer�
characters�
endElementrr�
simpleElementrrrr:rrr�endDocument�close)rrX�_pathrrj�dirpathrhrfrNrr r$r&r'r/r/r0r�s���













�









r)N)�__all__�xml.saxr\rorwrq�firewallr�firewall.core.io.io_objectrrrr	r
rr�firewall.core.loggerr
r�firewall.errorsrrrIrrr/r/r/r0�<module>s$]Q