VULN_CHECK_I913V6 =jVTdZddlmZddlZddlZddlZddlmZddlm Z m Z m Z m Z m Z mZmZmZddlmZmZmZddlmZmZddlmZmZmZmZddlmZdd lmZdd l m!Z!Gd d eZ"Gd deZ#dZ$ddZ%y)z$ipset io XML handler, reader, writerN)config)checkIPcheckIP6 checkIPnMask checkIP6nMask check_mac check_portcheckInterface checkProtocol) IO_ObjectIO_Object_ContentHandlerIO_Object_XMLGenerator) IPSET_TYPESIPSET_CREATE_OPTIONS)check_icmp_namecheck_icmp_type_codecheck_icmpv6_namecheck_icmpv6_type_code)log)errors) FirewallErrorceZdZddddddidgdZdZgdZdddgdgddZd gd gd Zfd Zd Z e dZ dZ fdZ xZS)IPSet)versionshort descriptiontypeoptionsentriesz (ssssa{ss}as))_-:.Nrname)rripsetoptionentryrvalue)r&r'ctt| d|_d|_d|_d|_g|_i|_d|_ yNrF) superr__init__rrrrr rapplied)self __class__s ;/usr/lib/python3.12/site-packages/firewall/core/io/ipset.pyr-zIPSet.__init__BsB eT#%      cd|_d|_d|_d|_|jdd=|j j d|_yr+)rrrrr rclearr.)r/s r1cleanupz IPSet.cleanupLsA   LLO  r2c<d}d|vr |ddk(rd}|jdsttjd|z|ddj d}|j d}t |t |k7st |d kr!ttj d |d |d t|D]\}}||}|d k(r?d|vr|dk(r|d kDr ttj d|||fz|j d} t | dk7r'ttj d|d|d|d|d | D]J} |dk(r t| r|dk(st| r%ttj d| d|d|d|d |dk(r?|dk(r'ttj d|d|d|d|d |dk(rt} n t} nt} | |r*ttj d|d|d|d|d |dk(rd|vr|j d} t | dk7r'ttj d|d|d|d|d |dk(rt| dr|dk(r8t| ds*ttj d| dd|d|d|d |dk(rt| d r|dk(s t| d rttj d| d d|d|d|d |jdr6|dk(r |dk(r|dk(s'ttj d|d|d|d|d |dk(r t|r|dk(st|rttj d|d|d|d|d |dk(r3t|r|dk(sttj d|d|d |dk(r;d |vr|j d } t | dk7rttj d!|z| dd"k(r|dk7r!ttj d#|d|d t| d s+d$| d vr$ttj d%| d d|d | d j d$\} } t| | rttj d%| d d|d | dd&vr|dk7r!ttj d#|d|d t!| d s+d$| d vr$ttj d'| d d|d | d j d$\} } t#| | rttj d'| d d|d | dd(vr2t%| ds$ttj d)| dd|d t'| d rttj d*| d d+|d t'|r/ttj d*|d|d |d,k(rX|jd-r t)|d.}n t)|}|dks|d0kDsttj d/|d|d |d1k(r$qAQQ"ZZ_F6{a'+"00#UJ@ #)"f,WV_"f,Xf5E"/ & 4 4#)5*f!F# #)'9,"/ & 4 4#' F!D# 6'3H'.H#+#D>+"00#UJ@ $;!ZZ_F6{a'+"00#UJ@ &(1C&(&)1D+"00%ay%VE &(fQi1H&(vay1I+"00%ay%VE}}T*"f, !Q *.> >"/ & 4 4#' F!D# &(d1C&(t1D+"00#UJ@  $2E*E',,>BEJ$;!ZZ_F6{a'+"002E2NayF*!V+"/ & 4 4#)5!2# /vay9cPQ>R"/ & 4 4DJ1Iu U# .4AY__S-ANUE#7u#E&3$*$8$8'-ay%%9'"!"  &==!V+"/ & 4 4#)5!2# 1;6RS9@T"/ & 4 4FLQiQV W# .4AY__S-ANUE#9%#G&3$*$8$8'-ay%%9'"!"  + ,F1I6+"00?Eay%P(q 2+"00:@)UK &d++"00;?G??4("%dB-"%d) Q;'J"6',,7;UC%d+s4y2~',,<@%H $((*F*SU(b&+"00;?G&+"00;?Gs [* [0+[-0+\c |dk(r%|tvrttjd|z|dk(r|jD]}|t vrttj d|z|dvrt t||}|d kr$ttjd|d||d |d k(sjt|j|kDsttj d |z|d k(s||dvsttj||yy#t$r%ttjd|d||dwxYw)Nrz'%s' is not valid ipset typerzipset invalid option '%s'timeouthashsizemaxelemOption ' ': Value '' is not an integerr ' is negativerkz>the number of ipset entries exceeds the maximum set size of %dr8inetr9) rrr INVALID_TYPEkeysrrRrXrY INVALID_VALUErTr INVALID_FAMILY)r/rr_ all_configall_io_objectskey int_values r1 _check_configzIPSet._check_config7s] 6>[(#'')G&)P 9 "v{{}22',,.IC.O<<$'s $4 !1}+"00EH&QT+Vi'C ,= ,I+"00\'( H_>AYE   eVAYq : eT(@r2)__name__ __module__ __qualname__IMPORT_EXPORT_STRUCTUREDBUS_SIGNATUREADDITIONAL_ALNUM_CHARSPARSER_REQUIRED_ELEMENT_ATTRSPARSER_OPTIONAL_ELEMENT_ATTRSr-r5 staticmethodrfrzr __classcell__)r0s@r1rr+s84 %N1( %!)%! __B!LFAAr2rceZdZdZdZy)ipset_ContentHandlerc tj||||jj|||dk(r]d|vr?|dtvr t t jd|dz|d|j_d|vr|d|j_ yy|dk(ry|dk(ry|dk(rgd}d |vr|d }|d d vr t t jd |d z|jjd k(r?|d dvr8t t jd|d d|jjd|d d vr"|s t t jd|d z|d dvr5 t|}|dkr$t t jd|d d|d|d dk(r|dvrt t j||d |jjvr||jj|d <yt!j"d|d yy#t$r%t t jd|d d|dwxYw)Nr&rz%srrrr'rr)r%)r8rirjrkzUnknown option '%s'zhash:mac)r8zUnsupported option 'z ' for type 'r>z&Missing mandatory value of option '%s'rhrlrmrnrror8rpz Option %s already set, ignoring.)r startElementr_parser_check_element_attrsrrrrrrrINVALID_OPTIONrXrYrtrurrwarning)r/r%attrsr)rys r1rz!ipset_ContentHandler.startElementgsX --dD%@ ,,T59 7?= 3'(;(;TE&M=QRR!&v E!$))$4 !" W_  ] "  X E%gV}$PP#))+@5=+Pyy~~+f 0K#))V}diinn6 f !MM#))f NU4"',, =%1s # H.H>ctj|||dk(r0|jjj |j yy)Nr()r endElementr_r append_element)r/r%s r1rzipset_ContentHandler.endElements: ++D$7 7? II   $ $T]] 3 r2N)rrrrrr2r1rrfs8Ov4r2rc*t}|jdsttjd|z|dd|_|j |j ||_||_|jtjrdnd|_ |j|_ t|}tj }|j#||d|}t%|d5}tj&d}|j)| |j+| ddd~~d |j2vrY|j2d d k7rGt5|j6d kDr/t9j:d |j |j6dd=d } t=} | t5|j6kr|j6| | vr?t9j:d |j6| |j6j?| nX |jA|j6| |j2|jB| jE|j6| | dz } | t5|j6kr~ |S#tj,$r0}ttj.d|j1zd}~wwxYw#1swYxYw#t$r;} t9j:d| |j6j?| Yd} ~ d} ~ wwxYw)N.xmlz'%s' is missing .xml suffixFTrFrbznot a valid ipset file: %srir}rz6ipset '%s': timeout option is set, entries are ignoredzEntry %s already set, ignoring.r=z %s, ignoring.)#rrWrr INVALID_NAMEr% check_namefilenamepathrQr ETC_FIREWALLDbuiltindefaultrsax make_parsersetContentHandleropen InputSource setByteStreamparseSAXParseExceptionrR getExceptionrrTr rrsetpoprfradd) rrr&handlerparserr%fsourcemsgr] entries_setes r1 ipset_readerrs GE   V $   !>!I  #2EJ UZZ ENEJ!__V-A-ABEEMMMEM"5)G __ F W%H %D dD Q&Q  LL  U]]" MM) $ +   " Dejj  MM!  A%K c%-- == { * KK95==;K L MM  a  !!%--"2EMM5::N  a 01Q c%--   LC$$ $$&BSEUEUEW&W    <! % OQ/ !!!$$ %sB('KI;4K;J>+J99J>>KK  L1L  Lc|r|n |j}|jr|d|j}n|d|jd}tjj |r t j |d|ztjj|}|jtjrtjj |sgtjj tjs$tjtjdtj|dtj |dd}t#|}|j%d |j&i}|j(r|j(d k7r|j(|d <|j+d ||j-d |j.ro|j.d k7r`|j-d|j+di|j1|j.|j3d|j-d |j4ro|j4d k7r`|j-d|j+di|j1|j4|j3d|j-d |j6j9D]V\} } |j-d| d k7r|j;d| | dn|j;dd| i|j-d X|j<D]X} |j-d|j+di|j1| |j3d|j-d Z|j3d |j-d |j?|jA~y#t$r"}tjd||Yd}~d}~wwxYw)NrFrz%s.oldzBackup of file '%s' failed: %siwtzUTF-8)modeencodingrrrr& z rrr')r%r)r%r()!rrr%osexistsshutilcopy2 ExceptionrerrordirnamerQrrmkdiriorr startDocumentrrrignorableWhitespacer charactersrrrr\ simpleElementr endDocumentclose) r&r_pathr%rdirpathrrrrxr)r(s r1 ipset_writerrs%DejjE ~~0#UZZ0 ww~~d C LLx$ /ggood#G&../w8Oww~~f223 HHV))5 1 %  4'2A$Q'G UZZ E }}", ==i %( % {{u{{b(##D)Wb)5;;'7###D) U.."4##D)]B/5,,-=)##D)mm))+ U##D) B;  ! !(S5,I J  ! !(VSM :##D) ,##D)Wb)5!7###D)  w % GGIu C II6c B B Cs!O P )PP )N)&__doc__xml.saxrrrrfirewallrfirewall.functionsrrrrrr r r firewall.core.io.io_objectr r rfirewall.core.ipsetrrfirewall.core.icmprrrrfirewall.core.loggerrrfirewall.errorsrrrrrrr2r1rsx+     B %)uAIuAv ?43?4D6rEr2