<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</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 }yt 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
   