JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/firewall/core/__pycache__/fw_ipset.cpython-39.opt-1.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  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg