a 7Irj@sJdZdgZddlZddlmZddlmZddlmZGddde Z dS)z!Transaction classes for firewalldFirewallTransactionN)log)errors) FirewallErrorc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#S)$rcCs(||_i|_g|_g|_g|_g|_dSN)fwrules pre_funcs post_funcs fail_funcsmodules)selfrr@/usr/lib/python3.9/site-packages/firewall/core/fw_transaction.py__init__!s zFirewallTransaction.__init__cCs2|j|jdd=|jdd=|jdd=dSr)rclearr r r )r rrrr)s   zFirewallTransaction.clearcCs|j|jg|dSr)r setdefaultnameappendr backendrulerrradd_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)rrremoverrrr remove_rule9szFirewallTransaction.remove_rulecGs|j||fdSr)r rr funcargsrrradd_pre=szFirewallTransaction.add_precGs|j||fdSr)r rrrrradd_post@szFirewallTransaction.add_postcGs|j||fdSr)r rrrrradd_failCszFirewallTransaction.add_failcCs||jvr|j|dSr)r rr 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'rrrremove_modulesRsz"FirewallTransaction.remove_modulescCstdt||dfi}|sb|jD]8}t|j|D]$}||g|j| |q8q&n$|jD]}||g |j|qh||j fS)Nz%s.prepare(%s, %s)z...) rdebug4typerreversedrrrget_backend_by_name reverse_ruleextendr )r enabler backend_namerrrrprepareVs    zFirewallTransaction.preparec Cstdt||f||\}}|d}d}g}|D]j}z|j|||WnDty}z,d}|}tt t |WYd}~qtyz}z$tt t |WYd}~n d}~00q"|jD]`\} }z | |WnHty}z.tt t d| ||fWYd}~n d}~00qttj||dS)Nz%s.execute(%s)FTz#Calling fail func %s(%s) failed: %s)rr*r+r2prerr ExceptionZdebug1 traceback format_excerrorrZhandle_modulesr,r-r.r rrZCOMMAND_FAILEDpost)r r0rr r8ZerrorMsgZdoner1msgZ module_returnstatusZ undo_rulesrrrrrrexecutefsZ   $   zFirewallTransaction.executecCs.tdt||jD]\}}||qdS)Nz%s.pre())rr*r+r rrrrr4szFirewallTransaction.precCs.tdt||jD]\}}||qdS)Nz %s.post())rr*r+r rrrrr9szFirewallTransaction.postN)__name__ __module__ __qualname__rrrrrrr r!r"r%r&r(r)r2r<r4r9rrrrr s"@) __doc____all__r6Zfirewall.core.loggerrZfirewallrZfirewall.errorsrobjectrrrrrs