a «°iëã@sJdZdgZddlZddlmZddlmZddlmZGdd„de ƒZ dS)z!Transaction classes for firewalldÚFirewallTransactionéN)Úlog)Úerrors)Ú FirewallErrorc@s”eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#S)$rcCs(||_i|_g|_g|_g|_g|_dS©N)ÚfwÚrulesÚ pre_funcsÚ post_funcsÚ fail_funcsÚmodules)Úselfr©rú@/usr/lib/python3.9/site-packages/firewall/core/fw_transaction.pyÚ__init__!s zFirewallTransaction.__init__cCs2|j ¡|jdd…=|jdd…=|jdd…=dSr)rÚclearr r r )r rrrr)s   zFirewallTransaction.clearcCs|j |jg¡ |¡dSr)rÚ setdefaultÚnameÚappend©r ÚbackendÚrulerrrÚadd_rule/szFirewallTransaction.add_rulecCs|D]}| ||¡qdSr)r)r rrrrrrÚ add_rules2szFirewallTransaction.add_rulescCs|j|jvo||j|jvSr)rrrrrrÚ query_rule6szFirewallTransaction.query_rulecCs2|j|jvr.||j|jvr.|j|j |¡dSr)rrÚremoverrrrÚ remove_rule9szFirewallTransaction.remove_rulecGs|j ||f¡dSr)r r©r ÚfuncÚargsrrrÚadd_pre=szFirewallTransaction.add_precGs|j ||f¡dSr)r rrrrrÚadd_post@szFirewallTransaction.add_postcGs|j ||f¡dSr)r rrrrrÚadd_failCszFirewallTransaction.add_failcCs||jvr|j |¡dSr)r r©r ÚmodulerrrÚ add_moduleFs zFirewallTransaction.add_modulecCs||jvr|j |¡dSr)r rr#rrrÚ remove_moduleJs z!FirewallTransaction.remove_modulecCs|D]}| |¡qdSr)r%©r r r$rrrÚ add_modulesNszFirewallTransaction.add_modulescCs|D]}| |¡qdSr)r&r'rrrÚremove_modulesRsz"FirewallTransaction.remove_modulescCst dt|ƒ|df¡i}|sb|jD]8}t|j|ƒD]$}| |g¡ |j |¡  |¡¡q8q&n$|jD]}| |g¡  |j|¡qh||j fS)Nz%s.prepare(%s, %s)z...) rÚdebug4ÚtyperÚreversedrrrÚget_backend_by_nameÚ reverse_ruleÚextendr )r ÚenablerÚ backend_namerrrrÚprepareVs  ÿ  zFirewallTransaction.preparec Cst dt|ƒ|f¡| |¡\}}| ¡d}d}g}|D]j}z|j |||¡WnDtyš}z,d}|}t t   ¡¡t  |¡WYd}~qtyz}z$t t   ¡¡t  |¡WYd}~n d}~00q"|jD]`\} }z | |ŽWnHtyâ}z.t t   ¡¡t  d| ||f¡WYd}~n d}~00q†ttj|ƒ‚| ¡dS)Nz%s.execute(%s)FÚTz#Calling fail func %s(%s) failed: %s)rr*r+r2ÚprerrÚ ExceptionZdebug1Ú tracebackÚ format_excÚerrorrZhandle_modulesr,r-r.r rrZCOMMAND_FAILEDÚpost)r r0rr r8ZerrorMsgZdoner1ÚmsgZ module_returnÚstatusZ undo_rulesrrrrrrÚexecutefsZ   ÿ$ ÿ  zFirewallTransaction.executecCs.t dt|ƒ¡|jD]\}}||ŽqdS)Nz%s.pre())rr*r+r rrrrr4¦szFirewallTransaction.precCs.t dt|ƒ¡|jD]\}}||ŽqdS)Nz %s.post())rr*r+r rrrrr9¬szFirewallTransaction.postN)Ú__name__Ú __module__Ú __qualname__rrrrrrr r!r"r%r&r(r)r2r<r4r9rrrrr s"@) Ú__doc__Ú__all__r6Zfirewall.core.loggerrZfirewallrZfirewall.errorsrÚobjectrrrrrÚs