<!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j5                 @   s~   d dl Zd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZmZ ddddd	d
dddddddgZG dd deZdS )    N)config)log)b2uu2bPY2DefaultZoneMinimalMarkCleanupOnExitCleanupModulesOnExitLockdownIPv6_rpfilterIndividualCalls	LogDeniedAutomaticHelpersFirewallBackendFlushAllOnReloadRFC3964_IPv4AllowZoneDriftingc               @   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 )firewalld_confc             C   s   i | _ g | _|| _| j  d S )N)_config_deletedfilenameclear)selfr    r   $/usr/lib/python3.6/firewalld_conf.py__init__&   s    zfirewalld_conf.__init__c             C   s   i | _ g | _d S )N)r   r   )r   r   r   r   r   ,   s    zfirewalld_conf.clearc             C   s   | j j  g | _d S )N)r   r   r   )r   r   r   r   cleanup0   s    
zfirewalld_conf.cleanupc             C   s   | j j|j S )N)r   getstrip)r   keyr   r   r   r   4   s    zfirewalld_conf.getc             C   s8   t |j }t |j | j|< || jkr4| jj| d S )N)r   r   r   r   remove)r   r    valueZ_keyr   r   r   set7   s    
zfirewalld_conf.setc             C   sH   d}x2| j j D ]$\}}|r$|d7 }|d||f 7 }qW trDt|S |S )N 
z%s=%s)r   itemsr   r   )r   sr    r"   r   r   r   __str__=   s    zfirewalld_conf.__str__c             C   s  | j   yt| jd}W n8 tk
rR } ztjd| j| | jdtj | jdt	tj
 | jdtjrpdnd | jdtjrdnd | jd	tjrdnd | jd
tjrdnd | jdtjrdnd | jdtj | jdtj | jdtj | jdtjr
dnd | jdtjr"dnd | jdtjr:dnd  W Y d d }~X nX  x|D ]}|shP |j }t|dk s\|d d.krq\dd |jdD }t|dkrtjd|j  q\nr|d tkrtjd|j  q\nN|d dkrtjd|j  q\n*| jj|d d k	r:tjd|j  q\|d | j|d < q\W |j  | jdstjdtj | jdt	tj | jd}yt| W nP ttfk
r   |d k	rtj d |r|ndtj
 | jdt	tj
 Y nX | jd}| s|j! d/krJ|d k	r2tj d#|r(|ndtj | jdtjrDdnd | jd}| sj|j! d0kr|d k	rtj d$|r|ndtj | jdtjrdnd | jd	}| s|j! d1kr|d k	rtj d%|r|ndtj | jd	tjrdnd | jd
}| s"|j! d2kr^|d k	rFtj d&|r<|ndtj | jd
tjrXdnd | jd}| s~|j! d3kr|d k	rtj d'|r|ndtj | jdtjrdnd | jd}| s|tj"kr|d k	rtj d(|tj | jdt	tj | jd}| s&|j! tj#kr\|d k	rJtj d)|r@|ndtj | jdt	tj | jd}| s~|j! tj$kr|d k	rtj d*|r|ndtj | jdt	tj | jd}| s|j! d4kr
|d k	rtj d+|r|ndtj | jdt	tj | jd}| s*|j! d5kr`|d k	rNtj d,|rD|ndtj | jdt	tj | jd}| s|j! d6kr|d k	rtj d-|r|ndtj | jdt	tj d S )7NrzFailed to load '%s': %sr   r   r	   yesnor
   r   r   r   r   r   r   r   r   r      r   #;c             S   s   g | ]}|j  qS r   )r   ).0xr   r   r   
<listcomp>b   s    z'firewalld_conf.read.<locals>.<listcomp>=   zInvalid option definition: '%s'zInvalid option: '%s'r$   zMissing value: '%s'z!Duplicate option definition: '%s'z0DefaultZone is not set, using default value '%s'z7MinimalMark '%s' is not valid, using default value '%d'falsetruez7CleanupOnExit '%s' is not valid, using default value %sz>CleanupModulesOnExit '%s' is not valid, using default value %sz2Lockdown '%s' is not valid, using default value %sz7IPv6_rpfilter '%s' is not valid, using default value %sz9IndividualCalls '%s' is not valid, using default value %sz3LogDenied '%s' is invalid, using default value '%s'z:AutomaticHelpers '%s' is not valid, using default value %sz9FirewallBackend '%s' is not valid, using default value %sz:FlushAllOnReload '%s' is not valid, using default value %sz6RFC3964_IPv4 '%s' is not valid, using default value %sz;AllowZoneDrifting '%s' is not valid, using default value %s)r-   r.   )r+   r4   r*   r5   )r+   r4   r*   r5   )r*   r5   r+   r4   )r*   r5   r+   r4   )r*   r5   r+   r4   )r*   r5   r+   r4   )r*   r5   r+   r4   )r*   r5   r+   r4   )%r   openr   	Exceptionr   errorr#   r   ZFALLBACK_ZONEstrZFALLBACK_MINIMAL_MARKZFALLBACK_CLEANUP_ON_EXITZ FALLBACK_CLEANUP_MODULES_ON_EXITZFALLBACK_LOCKDOWNZFALLBACK_IPV6_RPFILTERZFALLBACK_INDIVIDUAL_CALLSZFALLBACK_LOG_DENIEDZFALLBACK_AUTOMATIC_HELPERSZFALLBACK_FIREWALL_BACKENDZFALLBACK_FLUSH_ALL_ON_RELOADZFALLBACK_RFC3964_IPV4ZFALLBACK_ALLOW_ZONE_DRIFTINGr   lensplit
valid_keysr   r   closeint
ValueError	TypeErrorZwarninglowerZLOG_DENIED_VALUESZAUTOMATIC_HELPERS_VALUESZFIREWALL_BACKEND_VALUES)r   fmsglineZpairr"   r   r   r   readF   s   
























zfirewalld_conf.readc          :   C   s  t | jdk rd S g }tjjtjs2tjtjd y.tj	ddtjj
| j tjj| jdd}W n2 tk
r } ztjd|   W Y d d }~X nX d}d}ytj| jdd	d
}W nP tk
r } z0tjj| jrtjd| j|f   nd }W Y d d }~X n6X x0|D ]&}|sP |jd}t |dk rH|s2|jd d}n|d dkrpd}|j| |jd n|jd}t |dkrd}|j|d  q|d j }	|d j }
|	|kr.|	| jkr| j|	 |
krd}|jd|	| j|	 f  d}n$|	| jkrd}nd}|j|d  |j|	 nd}qW t | jdkrx^| jj D ]P\}	}
|	|krjqT|	dkrxqT|s|jd d}|jd|	|
f  d}qTW |r|j  |j  |stj|j d S tjj| jr@ytj| jd| j  W nB tk
r> } z$tj|j td| j|f W Y d d }~X nX ytj|j| j W nB tk
r } z$tj|j td| j|f W Y d d }~X nX tj| jd d S )Nr,   i  Zwtz%s.F)modeprefixdirdeletez!Failed to open temporary file: %sZrtzUTF-8)rF   encodingzFailed to open '%s': %sr%   Tr   r-   r2   r3   z%s=%s
r   r   z%s.oldzBackup of '%s' failed: %szFailed to create '%s': %si  )r   r   ) r:   r   ospathexistsr   ZETC_FIREWALLDmkdirtempfileZNamedTemporaryFilebasenamer   dirnamer7   r   r8   ior6   r   writer;   r   appendr&   r=   r!   nameshutilZcopy2IOErrorZmovechmod)r   doneZ	temp_filerC   ZmodifiedemptyrB   rD   pr    r"   r   r   r   rS      s    









$$zfirewalld_conf.writeN)__name__
__module____qualname__r   r   r   r   r#   r(   rE   rS   r   r   r   r   r   %   s   	 r   )Zos.pathrK   rR   rO   rV   Zfirewallr   Zfirewall.core.loggerr   Zfirewall.functionsr   r   r   r<   objectr   r   r   r   r   <module>   s   