a i@sBdZdgZddlmZddlmZddlmZGdddeZ dS)zmodules backendmodules)runProg)log)COMMANDSc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)rcCstd|_td|_dS)NZmodprobeZrmmod)r _load_command_unload_commandselfr 9/usr/lib/python3.9/site-packages/firewall/core/modules.py__init__s zmodules.__init__cCs d|jS)Nz%s) __class__rr r r __repr__$szmodules.__repr__cCsg}i}ztddx}|D]b}|s&q~|}|}||d|ddkrp|dddd||d<qg||d<qWdn1s0YWntyYn0||fS) z6 get all loaded kernel modules and their dependencies z /proc/modulesrr-,N)openstripsplitappendFileNotFoundError)r modsdepsflineZsplitsr r r loaded_modules's    0 zmodules.loaded_modulescCs"td|j|j|t|j|gSNz %s: %s %s)rdebug2r rrr moduler r r load_module<szmodules.load_modulecCs"td|j|j|t|j|gSr)rrr rrr r r r unload_module@szmodules.unload_modulecCsP||vr dS||D]$}||||||vr||q||vrL||dS)z get all dependants of a module N)get_depsr)r r!rretmodr r r r$Ds  zmodules.get_depscCsg}|\}}|d||dD]"}||vr"|||d|q"|D]V}|dvs|ds|ds|ds|ds|d s|d rJ||||qJ|S) z) get all loaded firewall-related modules Z nf_conntrack)Znf_conntrack_ipv4Znf_conntrack_ipv6r)Z ip_tablesZ ip6_tablesZebtablesZiptable_Z ip6table_Znf_Zxt_Zipt_Zip6t_)rr$removeinsert startswith)r rZmods2rZbad_bad_moduler&r r r get_firewall_modulesOs.  zmodules.get_firewall_modulescCs:|D],}||\}}|dkrtd||fqdS)z% unload all firewall-related modules rz Failed to unload module '%s': %sN)r*r#rZdebug1)r r!statusr%r r r unload_firewall_modulesds zmodules.unload_firewall_modulesN) __name__ __module__ __qualname__r rrr"r#r$r*r,r r r r rs N) __doc____all__Zfirewall.core.progrZfirewall.core.loggerrZfirewall.configrobjectrr r r r s