+
    i#  c                   sf    R t ^ RIHt ^ RIHtHtHtHt ^ RI	H
t
 ^ RIHt ^ RIHt  ! R R4      tR# )	zipset backend)log)remove_default_create_optionsnormalize_ipset_entrycheck_entry_overlaps_existingcheck_for_overlapping_entries)IPSet)errors)FirewallErrorc                   s   a  ] tR t^t o R tR tR tR tR tR t	R t
RR ltR	 tR
 tR tRR ltRR ltRR ltR tRR ltR tR tR tRR ltR tR tR tR tR tRtV tR# )FirewallIPSetc                s     Wn         / V n        R # N_fw_ipsets)selfZfw   &&;/usr/lib/python3.14/site-packages/firewall/core/fw_ipset.py__init__ZFirewallIPSet.__init__   s        c                s>    V P                   : R V P                  : R2# )Z(Z))Z	__class__r   r      &r   __repr__ZFirewallIPSet.__repr__   s    >>4<<88r   c                s:    V P                   P                  4        R # r	   )r   Zclearr   r   r   cleanupZFirewallIPSet.cleanup    s    r   c                sb    WP                  4       9  d   \        \        P                  V4      hR # r	   )
get_ipsetsr   r   ZINVALID_IPSETr   namer   r   check_ipsetZFirewallIPSet.check_ipset#   s'    (( 4 4d;; )r   c                s&    WP                  4       9   # r	   )r   r   r   r   query_ipsetZFirewallIPSet.query_ipset'   s    (((r   c                sH    \        V P                  P                  4       4      # r	   )Zsortedr   Zkeysr   r   r   r   ZFirewallIPSet.get_ipsets*   s    dll'')**r   c                s2    \        V P                  4      ^ 8  # )i    )lenr   r   r   r   
has_ipsetsZFirewallIPSet.has_ipsets-   s    4<< 1$$r   c                s    V P                  V4       V P                  V,          pV'       d   V P                  V4       V# r	   )r   r   check_applied_objr   r   appliedobj   &&& r   	get_ipsetZFirewallIPSet.get_ipset0   s4    ll4 ""3'
r   c                s    V P                   P                  '       d+   V P                   P                  P                  4       '       d   R # R# )FT)r   nftables_enabledZdirectZhas_runtime_configurationr   r   r   omit_native_ipsetZFirewallIPSet.omit_native_ipset7   s0     xx(((DHHOO,U,U,W,Wr   c                s:   . pV P                   P                  '       d&   VP                  V P                   P                  4       V P                   P                  '       d<   V P                  4       '       g&   VP                  V P                   P                  4       V# r	   )r   r#   appendZnftables_backendZipset_enabledr$   Zipset_backend)r   backendss   & r   r&   ZFirewallIPSet.backends?   sf    88$$$OODHH55688!!!$*@*@*B*BOODHH223r   c                s    VP                   V P                  P                  9  d,   \        \        P
                  R VP                   ,          4      hWP                  VP                  &   R# )z'%s' is not supported by ipset.N)typer   Zipset_supported_typesr   r   ZINVALID_TYPEr   r   r   r    r   r   	add_ipsetZFirewallIPSet.add_ipsetG   sL    88488999##%F%Q  "%SXXr   c                sV   V P                   V,          pVP                  '       d3   V'       g+    V P                  4        F  pVP                  V4       K  	  M\        P                  ! RV4       V P                   V R #   \         d    p\        \        P                  T4      hR p?ii ; i)Nz,Keeping ipset '%s' because of timeout option)
r   r   r&   set_destroy	Exceptionr   r   COMMAND_FAILEDr    debug1)r   r   Zkeepr    backendmsg   &&&   r   remove_ipsetZFirewallIPSet.remove_ipsetN   s    ll4 ;;;t@#}}G''-  /
 JJEtLLL	  @#F$9$93??@s   (A> >B(	B##B(Nc                s   V P                   V,          pV'       d   TMV P                  4        EF  pVP                  R 8X  d   VP                  4       pW9   d   RVP                  9  g^   VP                  R,          R8X  gF   VP
                  WQ,          ^ ,          8w  g(   \        VP                  4      WQ,          ^,          8w  d    VP                  V4       V P                  P                  '       d    VP                  VP                  VP
                  VP                  4       RVn        RVP                  9   d   VP                  R,          R8w  d   EK,   TP!                  TP                  4       TP"                   F   p TP%                  TP                  T4       K"  	  EK{   VP'                  VP                  VP
                  VP"                  VP                  R4       RVn        EK  	  R#   \         d    p\        \        P                  T4      hRp?ii ; i  \         d    p\        \        P                  T4      hRp?ii ; i  \         d    p\        \        P                  T4      hRp?ii ; i  \         d    p\        \        P                  T4      hRp?ii ; i  \         d    p\        \        P                  T4      hRp?ii ; i)ipsettimeout0NT)r   r&   r   Zset_get_active_terseoptionsr'   rm_def_cr_optsr*   r+   r   r   r,   r   _individual_callsZ
set_creater   	set_flushentriesset_addset_restore)r   r   r&   r    r.   Zactiver/   entrys   &&&     r   apply_ipsetZFirewallIPSet.apply_ipsetZ   s5   ll4 #+x@G||w& 557>S[[0{{9-4xx6<?2%ckk2fl1oEH++D1 xx)))!&&sxx3;;G #'CK CKK/CKK	4Jc4Q D%%chh/ ![[EH%8 )'''#((CKKd #'CKY A % H+F,A,A3GGH ! D'(=(=sCCD ! D'(=(=sCCD % H+F,A,A3GGH ! D'(=(=sCCDsx   G561H"II<*=J)5H HH"I-III9I44I9<J&J!!J&)K4KKc                s    V P                  4        FK  pV P                  V,          pR Vn        \        P                  ! RV,          4       V P                  W!4       KM  	  R# )FzApplying ipset '%s'N)r   r   r   r    r-   r=   )r   r&   r   r    s   &&  r   apply_ipsetsZFirewallIPSet.apply_ipsets   sH    OO%D,,t$CCKJJ,t34T, &r   c                sB   V P                  4        FP  pVP                  R 8X  d   K  V P                  4        F&  p V P                  V4       VP	                  V4       K(  	  KR  	  R#   \
         d-   pTP                  \        P                  8w  d   Th Rp?Kb  Rp?ii ; i)ZnftablesN)	r&   r   r   check_appliedr*   r   Zcoder   NOT_APPLIED)r   r.   r2   r/   s   &   r   flushZFirewallIPSet.flush   s    }}G||z)*"&&u-''. +	 ' % "xx6#5#55!	 6"s   "A''B2!BBc                s:    V P                  WR 7      P                  # )r   )r"   r'   )r   r   r   s   &&&r   get_typeZFirewallIPSet.get_type   s    ~~d~4999r   c                sl    \        V P                  VR R7      P                  P                  R4      4      # )TrB   Z,)r   r"   r'   Zsplitr   r   r   get_dimensionZFirewallIPSet.get_dimension   s+    4>>$>5::@@EFFr   c                sJ    V P                  V4      pV P                  V4       R # r	   )r"   r   r   r   r       && r   r?   ZFirewallIPSet.check_applied   s    nnT"s#r   c                sr    VP                   '       g%   \        \        P                  VP                  4      hR # r	   )r   r   r   r@   r   r(   r   r   r   ZFirewallIPSet.check_applied_obj   s'    {{{ 2 2CHH== r   c                s    V P                  WR 7      pRVP                  9   d   VP                  R,          R8X  d   R# R# )rB   ZfamilyZinet6Zipv6Zipv4)r"   r5   r   r!   r   
get_familyZFirewallIPSet.get_family   s5    nnTn3s{{"{{8$/r   c                sv   V P                  VR R7      p\        V4      p\        P                  ! W#P                  VP
                  4       W#P                  9   d$   \        \        P                  RV: RV: R24      h\        W#P                  4        V P                  4        F  pVP                  VP                  V4       K!  	  RVP                  9  g   VP                  R,          R8X  d   VP                  P                  V4       R# R#   \         d    p\        \        P                   T4      hRp?ii ; i)TrB   'z' already is in 'r3   r4   N)r"   r   r   check_entryr5   r'   r9   r   r   ZALREADY_ENABLEDr   r&   r:   r   r%   r+   r,   r   r   r<   r    r.   r/   r0   r   	add_entryZFirewallIPSet.add_entry   s    nnT4n0%e,%chh7KK&&UD(Q  	&e[[9	*==?%0 +
 +s{{9/E/L""5) 0M  	< 5 5s;;	<s   3D D8D33D8c                s   V P                  VR R7      p\        V4      pW#P                  9  d$   \        \        P
                  RV: RV: R24      h V P                  4        F  pVP                  VP                  V4       K!  	  RVP                  9  g   VP                  R,          R8X  d   VP                  P                  V4       R# R#   \         d    p\        \        P                  T4      hRp?ii ; i)TrB   rH   z
' not in 'r3   r4   N)r"   r   r9   r   r   ZNOT_ENABLEDr&   Z
set_deleter   r5   Zremover+   r,   rJ   r0   r   remove_entryZFirewallIPSet.remove_entry   s    nnT4n0%e, # 2 2%QU4VWW	*==?""388U3 +
 +s{{9/E/L""5) 0M  	< 5 5s;;	<s   3C C8C33C8c                s    V P                  VR R7      p\        V4      pRVP                  9   d3   VP                  R,          R8w  d   \        \        P
                  V4      hW#P                  9   # )TrB   r3   r4   )r"   r   r5   r   r   ZIPSET_WITH_TIMEOUTr9   )r   r   r<   r    r!   r   query_entryZFirewallIPSet.query_entry   sZ    nnT4n0%e,#I(>#(E 9 94@@##r   c                s@    V P                  VR R7      pVP                  # )TrB   )r"   r9   rE   rF   r   get_entriesZFirewallIPSet.get_entries   s    nnT4n0{{r   c                s   V P                  VR R7      p\        V4       V F.  p\        P                  ! WCP                  VP
                  4       K0  	  RVP                  9  g   VP                  R,          R8X  d   W#n         V P                  4        F  pVP                  VP                  4       K   	  R Vn
         T P                  4        F  pT P                  P                   '       d2   TP                   F  pTP#                  TP                  T4       K!  	  KP  TP%                  TP                  TP
                  TP                  TP                  R4       K  	  R Tn
        R#   \         d    p\        \        P                  T4      hRp?ii ; i  \         d    p\        \        P                  T4      hRp?ii ; i)TrB   r3   r4   N)r"   r   r   rI   r5   r'   r9   r&   r8   r   r   r+   r   r   r,   r   r7   r:   r;   )r   r   r9   r    r<   r.   r/   s   &&&    r   set_entriesZFirewallIPSet.set_entries   sT   nnT4n0%g.Ee[[#((; CKK'3;;y+AS+H!K	==?!!#((+ +
 CK	==?88---!$%8 "- ''#((CKKd + CK'  	< 5 5s;;	<  	< 5 5s;;	<s1   2E' =B!F 'F2FFF>F99F>r
   )Fr	   )T)Z__name__Z
__module__Z__qualname__Z__firstlineno__r   r   r   r   r   r   r   r"   r$   r&   r)   r1   r=   r>   rA   rC   rD   r?   r   rG   rK   rL   rM   rN   rO   Z__static_attributes__Z__classdictcell__)Z__classdict__s   @r   r   r      s     9
<)+%%
/'b-":G$>***"$! !r   r   N)Z__doc__Zfirewall.core.loggerr    Zfirewall.core.ipsetr   r6   r   r   r   Zfirewall.core.io.ipsetr   Zfirewallr   Zfirewall.errorsr   r   ) r   r   <module>rP      s.     $  )  )z zr   