Edit File: helper.cpython-36.pyc
3 Ye� ������������������@���s����d�ddgZ�ddljZddlZddlZddlZddlmZ�ddlm Z �ddl mZmZm Z mZmZmZ�ddlmZ�dd lmZ�dd lmZ�G�dd���d�e�ZG�dd ��d e �Zdd��Zddd�ZdS�)�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�Zd�Zddddddd gffZdZd d gZdddgd�Zd ddgddgd�Z��fdd�Zdd��Z dd��Z dd��Zdd��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����zHelper.__init__c�������������C���s.���d|�_�d|�_d|�_d|�_d|�_|�jd�d��=�d�S�)Nr���)r���r���r���r���r���r���)r���r!���r!���r"����cleanupD���s����zHelper.cleanupc�������������C���sR���t�|�j�|�_t�|�j�|�_t�|�j�|�_t�|�j�|�_t�|�j�|�_dd��|�jD��|�_dS�)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�qS�r!���)r���)�.0ZpoZprr!���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����zHelper.encode_stringsc�������������C���s(���ddg}||kr$t�tjd||f���d�S�)NZipv4Zipv6z'%s' not in '%s')r���r���ZINVALID_IPV)r���ZipvZipvsr!���r!���r"���� check_ipvW���s����zHelper.check_ipvc�������������C���sz���|dkr0xl|D�]}t�|d���t|d���qW�nF|dkrv|jd�sRttjd|���t|jdd��dk�rvttjd|���d�S�) Nr���r�������r���� nf_conntrack_z('%s' does not start with 'nf_conntrack_'r���zModule name '%s' too short)r���r���� startswithr���r����INVALID_MODULE�len�replace)r���r����itemZ all_configr���r!���r!���r"���� _check_config]���s���� zHelper._check_config)r���r���)r���r���)r���r���)r���r���)r���r���)r���r���)�__name__� __module__�__qualname__ZIMPORT_EXPORT_STRUCTUREZDBUS_SIGNATUREZADDITIONAL_ALNUM_CHARSZPARSER_REQUIRED_ELEMENT_ATTRSZPARSER_OPTIONAL_ELEMENT_ATTRSr���r#���r&���r'���r/���� __classcell__r!���r!���)r ���r"���r���&���s$��� c���������������@���s���e�Zd�Zdd��ZdS�)�helper_ContentHandlerc�������������C���s>��t�j|�||��|�jj||��|dkr�d|kr8|d�|�j_d|kr\|�jj|d���|d�|�j_d|kr�|d�jd�s�tt j d|d����t|d�jdd��dk�r�tt j d |d����|d�|�j_ nz|d kr�np|dkr�nf|dk�r:t|d���t|d ���|d�|d �f}||�jjk�r$|�jjj|��ntjd|d�|d ���d�S�)Nr���r���r���r���r)���z('%s' does not start with 'nf_conntrack_'r���r(���zModule name '%s' too shortr���r���r���r���z#Port '%s/%s' already set, ignoring.)r ����startElementr.���Zparser_check_element_attrsr���r'���r���r*���r���r���r+���r,���r-���r���r���r���r����appendr ���Zwarning)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���}|�jd�s ttjd|����|�d�d ��|_|j|j��|�|_||_|j t j�rVdnd|_|j|_ t|�}tj��}|j|��d||�f�}t|d��b}tjd��}|j|��y|j|��W�n8�tjk r��}�zttjd|j�����W�Y�d�d�}~X�nX�W�d�Q�R�X�~~t�r|j���|S�) Nz.xmlz'%s' is missing .xml suffix����FTz%s/%s�rbznot a valid helper file: %s���)r����endswithr���r���ZINVALID_NAMEr���Z check_name�filename�pathr*���r���� ETC_FIREWALLDZbuiltin�defaultr4����saxZmake_parserZsetContentHandler�openZInputSourceZ setByteStream�parseZSAXParseExceptionZINVALID_HELPERZgetExceptionr���r&���) r=���r>���r����handler�parserr����f�source�msgr!���r!���r"���r�������s8���� (c������� ������C���sP��|r|n|�j�}|�jr$d||�jf�}nd||�jf�}tj�j|�r�ytj|d|���W�n0�tk r��}�ztj d||��W�Y�d�d�}~X�nX�tj�j |�}|jtj �r�tj�j|��r�tj�jtj �s�tjtj d��tj|d��tj|ddd�}t|�}|j���i�}|�j|d <�|�j�r|�jd k�r|�j|d<�|�j�r<|�jd k�r<|�j|d<�|jd |��|jd��|�j�r�|�jd k�r�|jd��|jdi���|j|�j��|jd��|jd��|�j�r�|�jd k�r�|jd��|jdi���|j|�j��|jd��|jd��x>|�jD�]4} |jd��|jd| d�| d�d���|jd���q�W�|jd ��|jd��|j���|j���~d�S�)Nz%s/%sz %s/%s.xmlz%s.oldzBackup of file '%s' failed: %si���ZwtzUTF-8)�mode�encodingr���r���r���r���r���� z r���r���r���r���r(���)r���r���) r>���r=���r����os�exists�shutilZcopy2� Exceptionr ����error�dirnamer*���r���r?����mkdir�iorB���r ���Z startDocumentr���r���r���r5���ZignorableWhitespacer���Z charactersZ endElementr���r���Z simpleElementZendDocument�close) r���r>����_pathr���rH����dirpathrF���rD���r7���r���r!���r!���r"���r�������s\���� )N)�__all__Zxml.saxrA���rL���rS���rN���Zfirewallr���Zfirewall.functionsr���Zfirewall.core.io.io_objectr���r���r ���r ���r���r���Zfirewall.core.loggerr ���r���Zfirewall.errorsr���r���r4���r���r���r!���r!���r!���r"����<module>���s��� G#