<!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 ddgZ ddlj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mZmZmZ ddlmZ dd	lmZ dd
lmZ G dd  d eZG dd deZdd ZdddZdS )Helperhelper_readerhelper_writer    N)config)
u2b_if_py2)PY2	IO_ObjectIO_Object_ContentHandlerIO_Object_XMLGenerator
check_portcheck_tcpudp)log)errors)FirewallErrorc                   s   e Zd Zddddddd gffZdZd	d
gZdddgdZdddgddgdZ fddZdd Z	dd Z
dd Zdd Z  ZS )!r   version shortdescriptionfamilymoduleportsz(sssssa(ss))-.N)r   r   helpernameportprotocol)r   r   c                s6   t t| j  d| _d| _d| _d| _d| _g | _d S )Nr   )	superr   __init__r   r   r   r   r   r   )self)	__class__ /usr/lib/python3.6/helper.pyr   ;   s    zHelper.__init__c             C   s.   d| _ d| _d| _d| _d| _| jd d = d S )Nr   )r   r   r   r   r   r   )r   r!   r!   r"   cleanupD   s    zHelper.cleanupc             C   sR   t | j| _t | j| _t | j| _t | j| _t | j| _dd | jD | _dS )z HACK. I haven't been able to make sax parser return
            strings encoded (because of python 2) instead of in unicode.
            Get rid of it once we throw out python 2 support.c             S   s    g | ]\}}t |t |fqS r!   )r   ).0ZpoZprr!   r!   r"   
<listcomp>U   s    z)Helper.encode_strings.<locals>.<listcomp>N)r   r   r   r   r   r   r   )r   r!   r!   r"   encode_stringsL   s    zHelper.encode_stringsc             C   s(   ddg}||kr$t tjd||f d S )NZipv4Zipv6z'%s' not in '%s')r   r   ZINVALID_IPV)r   ZipvZipvsr!   r!   r"   	check_ipvW   s    zHelper.check_ipvc             C   sz   |dkr0xl|D ]}t |d  t|d  qW nF|dkrv|jdsRttjd| t|jdddk rvttjd| d S )	Nr   r      r   nf_conntrack_z('%s' does not start with 'nf_conntrack_'r   zModule name '%s' too short)r   r   
startswithr   r   INVALID_MODULElenreplace)r   r   itemZ
all_configr   r!   r!   r"   _check_config]   s    


zHelper._check_config)r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )__name__
__module____qualname__ZIMPORT_EXPORT_STRUCTUREZDBUS_SIGNATUREZADDITIONAL_ALNUM_CHARSZPARSER_REQUIRED_ELEMENT_ATTRSZPARSER_OPTIONAL_ELEMENT_ATTRSr   r#   r&   r'   r/   __classcell__r!   r!   )r    r"   r   &   s$   
	c               @   s   e Zd Zdd ZdS )helper_ContentHandlerc             C   s>  t j| || | jj|| |dkrd|kr8|d | j_d|kr\| jj|d  |d | j_d|kr|d jdstt	j
d|d  t|d jdddk rtt	j
d	|d  |d | j_nz|d
krnp|dkrnf|dkr:t|d  t|d  |d |d f}|| jjkr$| jjj| ntjd|d |d  d S )Nr   r   r   r   r)   z('%s' does not start with 'nf_conntrack_'r   r(   zModule name '%s' too shortr   r   r   r   z#Port '%s/%s' already set, ignoring.)r	   startElementr.   Zparser_check_element_attrsr   r'   r   r*   r   r   r+   r,   r-   r   r   r   r   appendr   Zwarning)r   r   attrsentryr!   r!   r"   r5   n   s>    
z"helper_ContentHandler.startElementN)r0   r1   r2   r5   r!   r!   r!   r"   r4   m   s   r4   c       	      C   s  t  }| jds ttjd|  | d d	 |_|j|j | |_||_|j	t
jrVdnd|_|j|_t|}tj }|j| d|| f }t|db}tjd }|j| y|j| W n8 tjk
r } zttjd|j  W Y d d }~X nX W d Q R X ~~tr|j  |S )
Nz.xmlz'%s' is missing .xml suffix   FTz%s/%srbznot a valid helper file: %s)r   endswithr   r   ZINVALID_NAMEr   Z
check_namefilenamepathr*   r   ETC_FIREWALLDZbuiltindefaultr4   saxZmake_parserZsetContentHandleropenZInputSourceZsetByteStreamparseZSAXParseExceptionZINVALID_HELPERZgetExceptionr   r&   )	r=   r>   r   handlerparserr   fsourcemsgr!   r!   r"   r      s8    




(c       
      C   sP  |r|n| j }| jr$d|| jf }nd|| jf }tj j|rytj|d|  W n0 tk
r } ztj	d|| W Y d d }~X nX tj j
|}|jtjrtj j| rtj jtjstjtjd tj|d tj|ddd}t|}|j  i }| j|d	< | jr| jd
kr| j|d< | jr<| jd
kr<| j|d< |jd| |jd | jr| jd
kr|jd |jdi  |j| j |jd |jd | jr| jd
kr|jd |jdi  |j| j |jd |jd x>| jD ]4}	|jd |jd|	d |	d d |jd qW |jd |jd |j  |j  ~d S )Nz%s/%sz	%s/%s.xmlz%s.oldzBackup of file '%s' failed: %si  ZwtzUTF-8)modeencodingr   r   r   r   r   
z  r   r   r   r   r(   )r   r   ) r>   r=   r   osexistsshutilZcopy2	Exceptionr   errordirnamer*   r   r?   mkdiriorB   r
   ZstartDocumentr   r   r   r5   ZignorableWhitespacer   Z
charactersZ
endElementr   r   ZsimpleElementZendDocumentclose)
r   r>   _pathr   rH   dirpathrF   rD   r7   r   r!   r!   r"   r      s\     












)N)__all__Zxml.saxrA   rL   rS   rN   Zfirewallr   Zfirewall.functionsr   Zfirewall.core.io.io_objectr   r   r	   r
   r   r   Zfirewall.core.loggerr   r   Zfirewall.errorsr   r   r4   r   r   r!   r!   r!   r"   <module>   s   

 G#