<!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                 @   s^   d Z dgZ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
mZmZ G dd deZdS )zifcfg file parserifcfg    N)log)b2uu2bPY2c               @   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   i | _ g | _|| _| j  d S )N)_config_deletedfilenameclear)selfr	    r   /usr/lib/python3.6/ifcfg.py__init__#   s    zifcfg.__init__c             C   s   i | _ g | _d S )N)r   r   )r   r   r   r   r
   )   s    zifcfg.clearc             C   s   | j j  d S )N)r   r
   )r   r   r   r   cleanup-   s    zifcfg.cleanupc             C   s   | j j|j S )N)r   getstrip)r   keyr   r   r   r   0   s    z	ifcfg.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   set3   s    
z	ifcfg.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__9   s    zifcfg.__str__c             C   sB  | j   yt| jd}W n4 tk
rL } ztjd| j|  W Y d d }~X nX x|D ]}|s^P |j }t|dk sT|d dkrqTdd |jd	dD }t|d
krqTt|d d
kr|d j	dr|d j
dr|d dd |d< |d dkrqTn,| jj|d d k	r tjd| j|j  qT|d | j|d < qTW |j  d S )NrzFailed to load '%s': %s   r   #;c             S   s   g | ]}|j  qS r   )r   ).0xr   r   r   
<listcomp>Q   s    zifcfg.read.<locals>.<listcomp>=   "r   z%%s: Duplicate option definition: '%s')r   r   )r
   openr	   	Exceptionr   errorr   lensplit
startswithendswithr   r   Zwarningclose)r   fmsglineZpairr   r   r   readB   s2    
z
ifcfg.readc          :   C   s  t | jdk rd S g }y.tjddtjj| j tjj| jdd}W n2 t	k
rv } zt
jd|   W Y d d }~X nX d}d}ytj| jddd	}W nN t	k
r } z0tjj| jrt
jd
| j|f   nd }W Y d d }~X ndX x^|D ]T}|sP |jd}t |dk r(|sD|jd d}q|d dkrPd}|j| |jd q|jdd}t |dkr~d}|j|d  q|d j }	|d j }
t |
dkr|
jdr|
jdr|
dd }
|	|kr@|	| jkr| j|	 |
krd}|jd|	| j|	 f  d}n$|	| jkr"d}nd}|j|d  |j|	 qd}qW t | jdkrxF| jj D ]8\}	}
|	|krzqd|sd}|jd|	|
f  d}qdW |r|j  |j  |stj|j d S tjj| jr8ytj| jd| j  W nB t	k
r6 } 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   Zwtz%s.F)modeprefixdirdeletez!Failed to open temporary file: %sZrtzUTF-8)r2   encodingzFailed to open '%s': %sr   Tr   r   r"   r#   r$   z%s=%s
z%s.bakzBackup of '%s' failed: %szFailed to create '%s': %si  r%   )r)   r   tempfileZNamedTemporaryFileospathbasenamer	   dirnamer'   r   r(   ior&   existsr   writer*   r+   r,   r   appendr   r-   r   nameshutilZcopy2IOErrorZmovechmod)r   doneZ	temp_filer/   Zmodifiedemptyr.   r0   pr   r   r   r   r   r>   _   s    





$$zifcfg.writeN)__name__
__module____qualname__r   r
   r   r   r   r   r1   r>   r   r   r   r   r   "   s   	)__doc____all__Zos.pathr8   r<   r7   rA   Zfirewall.core.loggerr   Zfirewall.functionsr   r   r   objectr   r   r   r   r   <module>   s   