File: //proc/self/root/lib/python3/dist-packages/firewall/core/io/__pycache__/policy.cpython-310.pyc
o
bhAb�� � @ s g d �Z ddlmZ ddlZddlZddlZddlmZ ddlm Z m
Z
mZmZm
Z
mZmZmZ ddlmZmZmZ ddlmZmZmZmZmZmZ ddlmZ ddlmZ dd lm Z dd
l!m"Z" dd� Z#d
d� Z$dd� Z%dd� Z&G dd� de�Z'G dd� de�Z(ddd�Z)ddd�Z*dS ))�Policy�
policy_reader�
policy_writer� N)�config)�checkIP�checkIP6�checkUINT16�coalescePortRange�max_policy_name_len�portInPortRange�portStr�uniqify)�DEFAULT_POLICY_TARGET�POLICY_TARGETS�DEFAULT_POLICY_PRIORITY)� IO_Object�IO_Object_ContentHandler�IO_Object_XMLGenerator�
check_port�check_tcpudp�check_protocol)�rich)�log)�errors)�
FirewallErrorc s� |dkr dS |dkr dS |dkrO| j r2| j jr't�dt| j �� d| _dS t�� d �| j _dS � d | jj vrE| jj �
� d � dS t�d� d � dS |dk�r| j rw| j jrit�dt| j �� d| _dS t�� d � d �| j _dS t� d � t
� d � t� d d
�� d f}tt� fdd�| jj��}|D ].}t|d
|d
�r�t| jt�r�| jjn| jj}t�ttjd|d
� d |f �� dS q�t|d
dd� |D ��\}}|D ]} t| d
�� d f}
| jj�|
� q�|D ]} t| d
�� d f}
| jj�
|
� q�dS |d k�rQ| j �r-| j j�r"t�dt| j �� d| _dS t�� d �| j _dS t� d � � d | jjv�rG| jj�
� d � dS t�d� d � dS |dk�r�| j �r�| j j�rmt�dt| j �� d| _dS d}d� v �rx� d }t�|�| j _dS t�d� d � dS |dk�r�| j �r�| j j�r�t�dt| j �� d| _dS t� � d �| j _dS � d | jj!v�r�| jj!�
� d � dS t�d� d � dS |dk�r| j �r�| j j�r�t�dt| j �� d| _dS t�"� d �| j _dS t�d� d � dS |dk�r7| j �r%| j j�rt�dt| j �� d| _dS t�#� | j _dS | jj$�r1t�d� dS d| j_$dS |dk�r�d}d� v �rG� d }d}
d� v �rR� d }
| j �ry| j j�rit�dt| j �� d| _dS t�%� d � d ||
�| j _dS t� d � t
� d � |�r�t|� |
�r�t&|
��s�t'|
��s�ttj(d |
��t� d d
�� d t|d
�t|
�f}
|
| jj)v�r�| jj)�
|
� dS t�d!� d � d |�r�d"| nd|
�r�d#|
nd� dS |d$k�r�| j �r
| j j�r�t�dt| j �� d| _dS t�*� d � d �| j _dS t� d � t
� d � t� d d
�� d f}tt� fd%d�| jj+��}|D ]1}t|d
|d
��r`t| jt��rG| jjn| jj}t�ttjd|d
� d |f �� dS �q0t|d
d&d� |D ��\}}|D ]} t| d
�� d f}
| jj+�|
� �qr|D ]} t| d
�� d f}
| jj+�
|
� �q�dS |d'k�r�| j �s�t�d(� d| _dS | j j,�r�t�d)t| j �� dS d*}d }d+� v �rΈ d+ }d }d,� v �rو d, }d-� v �r� d- �-� d.v �r�d}t�.|||�| j _,dS |d/v �r]| j �st�d0� d| _dS | j j/�rt�d1� d| _dS |d2k�r"t�0� | j _/n4|d3k�r:d }d4� v �r2� d4 }t�1|�| j _/n|d5k�rFt�2� | j _/n|d6k�rV� d7 }t�3|�| j _/| j j/| _4dS |d8k�r�| j �smt�d9� dS | j j�ryt�d:� dS d }d;� v �r�� d; }|d<v�r�t�d=� d| _dS d }d>� v �r�� d> }|�r�t5|�d?k�r�t�d@� d| _dS t�6||�| j _| j j| _4dS |dAk�r@| j �s�t�d9� dS | j j�r�t�d:� dS d }dB� v �r�� dB }t7|��s�t�dC� d| _dS d }d>� v �r� d> }|�rt5|�d?k�rt�dD� d| _dS d }dE� v �r0� dE }t7|��s0t�dF� d| _dS t�8|||�| j _| j j| _4dS |dGk�rp| j �sPt�dH� dS | j j9�rct�dIt| j �� d| _dS t�:� | j _9| j j9| _4dS |dJk�r�d }d
}dK� v �r�� dK }|dLv�r�t�dM� dK � d| _dS dN� v �r�t;� dN �}tj<||dO�| _ dS |dPk�r�| j4�s�t�dQ� d| _dS | j4j=�r�t�dRt| j �� d| _dS � d }t�>|�| j4_=dS d*S )SN�short�description�servicez;Invalid rule: More than one element in rule '%s', ignoring.T�namez#Service '%s' already set, ignoring.�port�protocol�-c � | d � d kS �N� r � ��x��attrsr% �9/usr/lib/python3/dist-packages/firewall/core/io/policy.py�<lambda>E � z%common_startElement.<locals>.<lambda>r z'%s:%s' already in '%s'c S � g | ]\}}|�qS r% r% ��.0�_port� _protocolr% r% r* �
<listcomp>O � z'common_startElement.<locals>.<listcomp>�valuez$Protocol '%s' already set, ignoring.�
tcp-mss-clamp�pmtuz0Invalid rule: tcp-mss-clamp '%s' outside of rule�
icmp-blockz&icmp-block '%s' already set, ignoring.� icmp-typez-Invalid rule: icmp-block '%s' outside of rule�
masqueradez!Masquerade already set, ignoring.�forward-port� �to-port�to-addrz#to-addr '%s' is not a valid addressz-Forward port %s/%s%s%s already set, ignoring.z >%sz @%s�source-portc r"