����JFIF��`�`�����Viewing File: /lib/python3.9/site-packages/firewall/core/__pycache__/fw_ipset.cpython-39.pyc
a

��ib'�@sfdZdgZddlmZddlmZmZmZm	Z	ddl
mZddlm
Z
ddlmZGdd�de�Zd	S)
z
ipset backend�
FirewallIPSet�)�log)�remove_default_create_options�normalize_ipset_entry�check_entry_overlaps_existing�check_for_overlapping_entries)�IPSet)�errors)�
FirewallErrorc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	d6dd�Z
dd�Zdd�Zdd�Z
d7dd�Zd8dd�Zd9dd�Zdd �Zd:d"d#�Zd$d%�Zd&d'�Zd(d)�Zd;d*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�ZdS)<rcCs||_i|_dS�N)�_fw�_ipsets)�self�fw�r�:/usr/lib/python3.9/site-packages/firewall/core/fw_ipset.py�__init__#szFirewallIPSet.__init__cCsd|j|jfS)Nz%s(%r))�	__class__r
�rrrr�__repr__'szFirewallIPSet.__repr__cCs|j��dSr)r
�clearrrrr�cleanup,szFirewallIPSet.cleanupcCs||��vrttj|��dSr)�
get_ipsetsr
r	Z
INVALID_IPSET�r�namerrr�check_ipset/szFirewallIPSet.check_ipsetcCs||��vSr)rrrrr�query_ipset3szFirewallIPSet.query_ipsetcCst|j���Sr)�sortedr
�keysrrrrr6szFirewallIPSet.get_ipsetscCst|j�dkS)Nr)�lenr
rrrr�
has_ipsets9szFirewallIPSet.has_ipsetsFcCs&|�|�|j|}|r"|�|�|Sr)rr
�check_applied_obj�rr�applied�objrrr�	get_ipset<s



zFirewallIPSet.get_ipsetcCs|jjr|jj��rdSdS)NFT)r�nftables_enabledZdirectZhas_runtime_configurationrrrr�omit_native_ipsetCszFirewallIPSet.omit_native_ipsetcCs<g}|jjr|�|jj�|jjr8|��s8|�|jj�|Sr)rr&�appendZnftables_backendZ
ipset_enabledr'Z
ipset_backend)r�backendsrrrr)KszFirewallIPSet.backendscCs0|j|jjvr ttjd|j��||j|j<dS)Nz'%s' is not supported by ipset.)�typerZipset_supported_typesr
r	ZINVALID_TYPEr
r�rr$rrr�	add_ipsetSs
�zFirewallIPSet.add_ipsetc
Cs||j|}|jrd|sdz|��D]}|�|�qWqpty`}zttj|��WYd}~qpd}~00nt�	d|�|j|=dS)Nz,Keeping ipset '%s' because of timeout option)
r
r#r)�set_destroy�	Exceptionr
r	�COMMAND_FAILEDr�debug1)rrZkeepr$�backend�msgrrr�remove_ipsetYs

$zFirewallIPSet.remove_ipsetNcCs,|j|}|r|n|��D�]
}|jdkr�|��}||vr�d|jvsz|jddksz|j||dkszt|j�||dkr�z|�|�Wn0ty�}zt	t
j|��WYd}~n
d}~00|jj
�r�z|�|j|j|j�Wn2t�y}zt	t
j|��WYd}~n.d}~00d|_d|jv�r4|jddk�r4qz|�|j�Wn2t�yv}zt	t
j|��WYd}~n
d}~00|jD]L}z|�|j|�Wn2t�y�}zt	t
j|��WYd}~n
d}~00�q~qz|�|j|j|j|jd�Wn2t�y}zt	t
j|��WYd}~qd}~00d|_qdS)N�ipset�timeout�0r�T)r
r)rZset_get_active_terse�optionsr*�rm_def_cr_optsr-r.r
r	r/r�_individual_callsZ
set_creater#�	set_flush�entries�set_add�set_restore)rrr)r$r1Zactiver2�entryrrr�apply_ipsetesX

��
��"
"�"
(�"zFirewallIPSet.apply_ipsetcCs<|��D].}|j|}d|_t�d|�|�||�qdS)NFzApplying ipset '%s')rr
r#rr0r@)rr)rr$rrr�apply_ipsets�s

zFirewallIPSet.apply_ipsetscCsz|��D]l}|jdkrq|��D]R}z|�|�|�|�Wq typ}z|jtjkr\|�WYd}~q d}~00q qdS)NZnftables)	r)rr�
check_appliedr-r
�coder	�NOT_APPLIED)rr1r4r2rrr�flush�s

zFirewallIPSet.flushTcCs|j||d�jS)N�r#)r%r*)rrr#rrr�get_type�szFirewallIPSet.get_typecCst|j|dd�j�d��S)NTrF�,)rr%r*�splitrrrr�
get_dimension�szFirewallIPSet.get_dimensioncCs|�|�}|�|�dSr)r%r!�rrr$rrrrB�s
zFirewallIPSet.check_appliedcCs|jsttj|j��dSr)r#r
r	rDrr+rrrr!�s�zFirewallIPSet.check_applied_objcCs.|j||d�}d|jvr*|jddkr*dSdS)NrFZfamilyZinet6Zipv6Zipv4)r%r8r"rrr�
get_family�s

zFirewallIPSet.get_familyc
Cs�|j|dd�}t|�}t�||j|j�||jvrFttj	d||f��t
||j�z |��D]}|�|j
|�q\Wn0ty�}zttj|��WYd}~n.d}~00d|jvs�|jddkr�|j�|�dS)NTrFz'%s' already is in '%s'r5r6)r%rr�check_entryr8r*r<r
r	ZALREADY_ENABLEDrr)r=rr.r/r(�rrr?r$r1r2rrr�	add_entry�s

�"zFirewallIPSet.add_entryc
Cs�|j|dd�}t|�}||jvr4ttjd||f��z |��D]}|�|j|�q>Wn0t	y�}zttj
|��WYd}~n.d}~00d|jvs�|jddkr�|j�|�dS)NTrFz'%s' not in '%s'r5r6)
r%rr<r
r	ZNOT_ENABLEDr)Z
set_deleterr.r/r8�removerNrrr�remove_entry�s

�"zFirewallIPSet.remove_entrycCsD|j|dd�}t|�}d|jvr:|jddkr:ttj|��||jvS�NTrFr5r6)r%rr8r
r	ZIPSET_WITH_TIMEOUTr<)rrr?r$rrr�query_entry�s
zFirewallIPSet.query_entrycCs|j|dd�}|jS)NTrF)r%r<rKrrr�get_entries�szFirewallIPSet.get_entriesc
Cs4|j|dd�}t|�|D]}t�||j|j�qd|jvsJ|jddkrP||_z|��D]}|�|j	�qZWn0t
y�}zttj
|��WYd}~nd}~00d|_zP|��D]B}|jjr�|jD]}|�|j	|�q�q�|�|j	|j|j|jd�q�Wn2t
�y(}zttj
|��WYd}~nd}~00d|_dSrR)r%rrrMr8r*r<r)r;rr.r
r	r/r#rr:r=r>)rrr<r$r?r1r2rrr�set_entries�s0"
�
"zFirewallIPSet.set_entries)F)F)N)N)T)T)�__name__�
__module__�__qualname__rrrrrrr r%r'r)r,r3r@rArErGrJrBr!rLrOrQrSrTrUrrrrr"s2


1


		N)�__doc__�__all__Zfirewall.core.loggerrZfirewall.core.ipsetrr9rrrZfirewall.core.io.ipsetrZfirewallr	Zfirewall.errorsr
�objectrrrrr�<module>s
Back to Directory �������}�!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�������������������������������������������������������������������������������� ������w�!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������ ��?��_��+��?��(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(�����