VULN_CHECK_I913V6 =j~! ddlZddlmZddlmZddlmZmZm Z ddl m Z ddl m Z ddlmZmZddlZdggd gd d ZiZiZiZej-D]{Zgee<eee<eeD]bZeej5d ezeej5d ededeej5dezeej7dezd}GddZy)N)runProg)log)tempFilereadfile splitArgs)COMMANDS) ipXtables FirewallError INVALID_IPVBROUTING) PREROUTING POSTROUTINGOUTPUT)INPUTrFORWARD)broutenatfilterz -N %s_directz-I z 1 -j _directz-I %s_direct 1 -j RETURNz %s_directceZdZdZdZdZdZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdZddZdZdZdZdZddZdZy)ebtablesebFct|j|_td|jz|_|j |_|j |_|jg|_ y)Nz %s-restore) ripv_command_restore_command_detect_restore_noflush_optionrestore_noflush_option_detect_concurrent_optionconcurrent_option fill_existsavailable_tablesselfs ;/usr/lib/python3.12/site-packages/firewall/core/ebtables.py__init__zebtables.__init__*s^ * ()@ A&*&I&I&K#!%!?!?!A  "ctjj|j|_tjj|j |_yN)ospathexistsrcommand_existsrrestore_command_existsr$s r&r"zebtables.fill_exists2s6 ggnnT]];&(ggnnT5J5J&K#r(cNd}t|jddg}|ddk(rd}|S)Nz --concurrent-Lr)rr)r%r!rets r&r z"ebtables._detect_concurrent_option6s6dmmnd%;< q6Q; .   r(cLg} |j|dy#t$rYywxYw)NoffFT) set_rules ValueError)r%ruless r&rz'ebtables._detect_restore_noflush_option@s5  NN5% (  s  ##cg}|jr)|j|vr|j|j||Dcgc]}d|z c}z }tjd|j|j dj |t|j |\}}|dk7r-td|j ddj |d||Scc}w)Nz%s %s: %s %s r' ' failed: ) r!appendrdebug2 __class__rjoinrr7)r%args_argsitemstatusr3s r&__runzebtables.__runJs  ! !d&<&)r%addrMrNr8s r&build_chain_ruleszebtables.build_chain_rules`s]  LL$tU3 4 LL$tUCxH I  LL$tU3 4 r(cNd|g}|r|d|t|gz }n|d|gz }||z }|S)NrQrRz-D)rI)r%rVrMrNindexrBrHs r& build_rulezebtables.build_ruleks?e}  T5#e*- -D T5M !D   r(c.tj|yr*)r common_check_passthroughr%rBs r&check_passthroughzebtables.check_passthroughts**40r(c,tj|Sr*)r common_reverse_passthroughr]s r&reverse_passthroughzebtables.reverse_passthroughws33D99r(ct}d}i}|D]}|dd}|j|dD]H} |j|} t|| dzk\s'|j | |j | }Jt |D]J\} } tjD]2} | | vs| jdr| jdr+d| z|| <4L|j|gj||D]C}|jd|z||D]%}|jdj|dz'E|jt!j"|j$} t'j(d |j*|j,d |j$| j.fzg} | jd t1|j,| |j$ \}}t'j2d kDrjt5|j$}|Sd} |D]L}t'j6d| |fzdd|jdst'j6dd| dz } Nt!j8|j$|dk7r-t d|j,ddj| d|y#t $rYwxYw)Nr)rQz--table"z"%s"z*%s r; r:z%s: %dz --noflush)stdinz%8d: %sr)nofmtnlr1)rhr<r=)rrJrYlenpopr7 enumeratestring whitespace startswithendswith setdefaultr>writerAcloser+statnamerr?r@rst_sizergetDebugLogLevelrdebug3unlink)r%r8 log_denied temp_filerM table_rules_rulerHoptielementcrtrBrEr3lineslines r&r6zebtables.set_ruleszszJ  E8D    %), 3A4yAE) $ )(o 7**AG|**3/G4D4DS4I"(7"2Q +.  " "5" - 4 4T :58!E OOGeO ,#E* 56+! wwy~~&  NN  ! !   5 5   K  5 5t9>>R     !A %Y^^,E !DJJyAt94A!D==. 2Q/FA " )..! Q;(,(=(=sxx~sS  e"sJ99 KKcF|j||j|Sr*)rJ_ebtables__run)r%rHrzs r&set_rulezebtables.set_rules D!zz$r(NcZg}|r|gntj}|D]c}||jvr|j|# |j d|dg|jj||j|e|S#t $rt jd|zYwxYw)NrQr2z#ebtables table '%s' does not exist.)rLkeysr#r>rr7rdebug1)r%rMr3tabless r&get_available_tableszebtables.get_available_tabless!%';';'=E--- 5!NJJeT23))007JJu% "NJJDuLMNsAB!B*)B*ciSr*)r%rMs r&get_zone_table_chainszebtables.get_zone_table_chainss r(cg}tjD]0}||jvrdD]}|jd||g2|S)N)z-FrUz-ZrQrLrrr>)r%r8rMflags r&build_flush_ruleszebtables.build_flush_rulessT$))+ED5577+ dE401+ , r(c g}|dk(rdn|}tjD]9}||jvrt|D]}|jd|d||g;|S)NPANICDROPrQz-Pr)r%policypolicy_detailsr8_policyrMrNs r&build_set_policy_ruleszebtables.build_set_policy_rulessi"g-&6$))+ED5577(/ dE4@A0,  r(cgSr*rr$s r&build_default_tableszebtables.build_default_tabless r(cBg}tD]}||jvrt|dd}|dk7r |tvr|jt|d|g}|D]D}t |t r|j ||z(|j |t|zF|S)Nr5rQ) DEFAULT_RULESr LOG_RULESextend isinstancelistr>r)r%rz default_rulesrM_default_rulesprefixrHs r&build_default_ruleszebtables.build_default_ruless "ED5577*51!4NU"u '9%%i&67E]F&dD)!(($7!(()D/)AB '#r(c ||jk(Sr*)r)r%rs r&is_ipv_supportedzebtables.is_ipv_supportedsdhhr(r*)r5)__name__ __module__ __qualname__rrupolicies_supportedr'r"r rrrJrOrWrZr^rar6rrrrrrrrrr(r&rr%s{ C D#L! T L 1:CJ    r(r)os.pathr+firewall.core.progrfirewall.core.loggerrfirewall.functionsrrrfirewall.configr firewall.corer firewall.errorsr r rmrLrr OUR_CHAINSrrMsetrNr>rVrrr(r&rs&$<<$#6 l 2,     ! ! #EM%Ju 'e##NU$:;e##eU$KLe##$>$FG5kE12 ($\\r(