
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
³Y„jî  ã               @   sB   d Z dgZddlmZ ddlmZ ddlmZ G dd„ deƒZ	dS )zmodules backendÚmodulesé    )ÚrunProg)Úlog)ÚCOMMANDSc               @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )r   c             C   s   t d | _t d | _d S )NZmodprobeZrmmod)r   Ú_load_commandÚ_unload_command)Úself© r	   ú/usr/lib/python3.6/modules.pyÚ__init__   s    
zmodules.__init__c             C   s
   d| j  S )Nz%s)Ú	__class__)r   r	   r	   r
   Ú__repr__$   s    zmodules.__repr__c             C   sª   g }i }y„t ddƒ�p}xh|D ]`}|s&P |jƒ }|jƒ }|j|d ƒ |d dkrp|d jdƒdd	… ||d < qg ||d < qW W dQ R X W n tk
r    Y nX ||fS )
z6 get all loaded kernel modules and their dependencies z/proc/modulesÚrr   é   ú-ú,Né   éÿÿÿÿ)ÚopenÚstripÚsplitÚappendÚFileNotFoundError)r   ÚmodsÚdepsÚfÚlineZsplitsr	   r	   r
   Úloaded_modules'   s     
 zmodules.loaded_modulesc             C   s"   t jd| j| j|ƒ t| j|gƒS )Nz	%s: %s %s)r   Údebug2r   r   r   )r   Úmoduler	   r	   r
   Úload_module<   s    zmodules.load_modulec             C   s"   t jd| j| j|ƒ t| j|gƒS )Nz	%s: %s %s)r   r   r   r   r   )r   r   r	   r	   r
   Úunload_module@   s    zmodules.unload_modulec             C   sT   ||krdS x0|| D ]$}| j |||ƒ ||kr|j|ƒ qW ||krP|j|ƒ dS )z  get all dependants of a module N)Úget_depsr   )r   r   r   ÚretÚmodr	   r	   r
   r"   D   s    zmodules.get_depsc             C   s®   g }| j ƒ \}}| jd||ƒ x*dD ]"}||kr$|j|ƒ |jd|ƒ q$W x^|D ]V}|dks˜|jdƒs˜|jd	ƒs˜|jd
ƒs˜|jdƒs˜|jdƒs˜|jdƒrP| j|||ƒ qPW |S )z) get all loaded firewall-related modules Znf_conntrackÚnf_conntrack_ipv4Únf_conntrack_ipv6r   Ú	ip_tablesÚ
ip6_tablesÚebtablesZiptable_Z	ip6table_Znf_Zxt_Zipt_Zip6t_)r%   r&   r   )r'   r(   r)   )r   r"   ÚremoveÚinsertÚ
startswith)r   r   Zmods2r   Zbad_bad_moduler$   r	   r	   r
   Úget_firewall_modulesO   s    


zmodules.get_firewall_modulesc             C   s>   x8| j ƒ D ],}| j|ƒ\}}|dkr
tjd||f ƒ q
W dS )z% unload all firewall-related modules r   z Failed to unload module '%s': %sN)r-   r!   r   Zdebug1)r   r   Zstatusr#   r	   r	   r
   Úunload_firewall_modulesd   s    zmodules.unload_firewall_modulesN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r!   r"   r-   r.   r	   r	   r	   r
   r      s   N)
Ú__doc__Ú__all__Zfirewall.core.progr   Zfirewall.core.loggerr   Zfirewall.configr   Úobjectr   r	   r	   r	   r
   Ú<module>   s
   