JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/firewall/core/io/__pycache__/io_object.cpython-39.pyc

a

	�	i�-�@s�dZgd�ZddlmZddlmmZddlZddlmZddl	m
Z
ddl	mZddlm
Z
Gdd	�d	e�ZGd
d�de�ZGdd
�d
e�ZGdd�de�ZGdd�dejj�ZGdd�dej�Zdd�Zdd�Zdd�Zdd�ZdS)z5Generic io_object handler, io specific check methods.)�	IO_Object�IO_Object_ContentHandler�IO_Object_XMLGenerator�
check_port�check_tcpudp�check_protocol�
check_address�N)�OrderedDict)�	functions)�errors)�
FirewallErrorc@s�eZdZdZdZdZgZiZiZdd�Z	dd�Z
dd	�Zd
d�Zdd
�Z
dd�Zifdd�Zdd�Zdd�Zdd�Zdd�ZdS)rz; Abstract IO_Object as base for icmptype, service and zone �z()cCs"d|_d|_d|_d|_d|_dS)N�F)�filename�path�name�defaultZbuiltin��selfr
r
�>/usr/lib/python3.9/site-packages/firewall/core/io/io_object.py�__init__-s
zIO_Object.__init__c	Cs2g}|jD]}|�t�t||d���q
t|�S)Nr)�IMPORT_EXPORT_STRUCTURE�append�copy�deepcopy�getattr�tuple)r�ret�xr
r
r�
export_config4s
zIO_Object.export_configcCsTi}tdd�|jD��}|D]2}t||�s:tt||�t�rt�t||��||<q|S)NcSsg|]}|d|df�qS�r�r
��.0rr
r
r�
<listcomp><�z0IO_Object.export_config_dict.<locals>.<listcomp>)�dictrr�
isinstance�boolrr)r�conf�type_formats�keyr
r
r�export_config_dict:szIO_Object.export_config_dictc	Cs�|�||�t|j�D]z\}\}}t||t�rzg}t�}||D] }||vrB|�|�|�|�qB~t||t	�
|��qt||t	�
||��qdS�N)�check_config�	enumeraterr'�list�setr�add�setattrrr)	rr)�all_io_objects�i�elementZdummyZ_confZ_setrr
r
r�
import_configBs
zIO_Object.import_configcCs||�||�|D]f}t||�s0ttjd�|���t||t�r`t||tt	�
t�||����qt||t�||��qdS)Nz-Internal error. '{}' is not a valid attribute)
�check_config_dict�hasattrrrZ
UNKNOWN_ERROR�formatr'r0r3r	�fromkeysrr)rr)r4r+r
r
r�import_config_dictRs
"zIO_Object.import_config_dictcCstt|t�s(ttjd|td�t|�f��t|�dkr@ttjd��|D]*}|��sD||j	vrDttjd||f��qDdS)N�'%s' not of type %s, but %srr!zname can't be emptyz'%s' is not allowed in '%s')
r'�strrr�INVALID_TYPE�type�lenZINVALID_NAME�isalnum�ADDITIONAL_ALNUM_CHARS)rr�charr
r
r�
check_name^s

��
�zIO_Object.check_namecCsht|�t|j�kr0ttjdt|�t|j�f��i}t|j�D]\}\}}||||<q>|�||�dS)Nz structure size mismatch %d != %d)rArrrr?r/r8)rr)r4Z	conf_dictr5r�yr
r
rr.ks��zIO_Object.check_configcCsptdd�|jD��}|D]R}|dd�|jD�vrBttjd�|���|�||||�|�|||||�qdS)NcSsg|]}|d|df�qSr r
r"r
r
rr$wr%z/IO_Object.check_config_dict.<locals>.<listcomp>cSsg|]\}}|�qSr
r
)r#rrFr
r
rr$yr%zoption '{}' is not valid)r&rrrZINVALID_OPTIONr:�_check_config_structure�
_check_config)rr)r4r*r+r
r
rr8vszIO_Object.check_config_dictcCsdSr-r
)rZdummy1Zdummy2Zdummy3Zdummy4r
r
rrH~szIO_Object._check_configc	CsTt|t|��s,ttjd|t|�t|�f��t|t�rnt|�dkrRttjd|��|D]}|�||d�qVn�t|t�r�t|�t|�kr�ttjd|t|�f��t	|�D]\}}|�|||�q�n�t|t
��rPt|���d\}}|��D]b\}}t|t|���s"ttjd|t|�t|�f��t|t|��s�ttjd|t|�t|�f��q�dS)Nr=r!zlen('%s') != 1rzlen('%s') != %d)r'r@rrr?r0rArGrr/r&�items)	rr)Z	structurerr5�valueZskeyZsvaluer+r
r
rrG�sJ��
�
������z!IO_Object._check_config_structurecCs�|��}d}||jvr`d}|j|dur`|j|D],}||vrJ|�|�q2ttjd||f��q2||jvr�d}|j|D]}||vrx|�|�qx|s�ttjd|��|D]}ttjd||f��q�dS)NFTzMissing attribute %s for %szUnexpected element %sz%s: Unexpected attribute %s)ZgetNames�PARSER_REQUIRED_ELEMENT_ATTRS�removerrZPARSE_ERROR�PARSER_OPTIONAL_ELEMENT_ATTRS)rr�attrsZ_attrs�foundrr
r
r�parser_check_element_attrs�s2

�
�
�z$IO_Object.parser_check_element_attrsN)�__name__�
__module__�__qualname__�__doc__rZDBUS_SIGNATURErCrKrMrrr,r7r<rEr.r8rHrGrPr
r
r
rr$s"
!rcs$eZdZ�fdd�Zdd�Z�ZS)�UnexpectedElementErrorcstt|���||_dSr-)�superrUrr�rr��	__class__r
rr�szUnexpectedElementError.__init__cCs
d|jS)NzUnexpected element '%s')rrr
r
r�__str__�szUnexpectedElementError.__str__�rQrRrSrrZ�
__classcell__r
r
rXrrU�srUcs$eZdZ�fdd�Zdd�Z�ZS)�MissingAttributeErrorcstt|���||_||_dSr-)rVr]rr�	attribute�rrr^rXr
rr�szMissingAttributeError.__init__cCsd|j|jfS)Nz$Element '%s': missing '%s' attribute�rr^rr
r
rrZ�s
�zMissingAttributeError.__str__r[r
r
rXrr]�sr]cs$eZdZ�fdd�Zdd�Z�ZS)�UnexpectedAttributeErrorcstt|���||_||_dSr-)rVrarrr^r_rXr
rr�sz!UnexpectedAttributeError.__init__cCsd|j|jfS)Nz'Element '%s': unexpected attribute '%s'r`rr
r
rrZ�s
�z UnexpectedAttributeError.__str__r[r
r
rXrra�srac@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)rcCs||_d|_dS�Nr)�item�_element)rrcr
r
rr�sz!IO_Object_ContentHandler.__init__cCs
d|_dSrb�rdrr
r
r�
startDocument�sz&IO_Object_ContentHandler.startDocumentcCs
d|_dSrbre)rrrNr
r
r�startElement�sz%IO_Object_ContentHandler.startElementcCs*|dkr|j|j_n|dkr&|j|j_dS)N�short�description)rdrcrhrirWr
r
r�
endElement�sz#IO_Object_ContentHandler.endElementcCs|j|�dd�7_dS)N�
� )rd�replace)rZcontentr
r
r�
characters�sz#IO_Object_ContentHandler.charactersN)rQrRrSrrfrgrjrnr
r
r
rr�s
rc@seZdZdd�Zdd�ZdS)rcCsNtjj�|�|j|_|j|_ig|_|jd|_	g|_
d|_d|_d|_
dS)N���zutf-8F)�sax�handler�ContentHandlerr�write�_write�flushZ_flushZ_ns_contextsZ_current_contextZ_undeclared_ns_maps�	_encodingZ_pending_start_elementZ_short_empty_elements)r�outr
r
rr�szIO_Object_XMLGenerator.__init__cCsF|�d|�|��D] \}}|�d|t�|�f�q|�d�dS)z* slightly modified startElement()
        �<z %s=%sz/>N)rtrI�saxutilsZ	quoteattr)rrrNrJr
r
r�
simpleElement�sz$IO_Object_XMLGenerator.simpleElementN)rQrRrSrrzr
r
r
rr�srcCs�t�|�}|dkr$ttjd|��n`|dkr>ttjd|��nF|durXttjd|��n,t|�dkr�|d|dkr�ttjd|��dS)	N���zport number in '%s' is too bigroz'%s' is invalid port rangezport range '%s' is ambiguous�rr!)r
ZgetPortRangerrZINVALID_PORTrA)�portZ
port_ranger
r
rrs"
����rcCs|dvrttjd|��dS)N)ZtcpZudpZsctpZdccpz)'%s' not from {'tcp'|'udp'|'sctp'|'dccp'})rr�INVALID_PROTOCOL�Zprotocolr
r
rrs��rcCst�|�sttj|��dSr-)r
Z
checkProtocolrrr~rr
r
rrs
rcCs$t�||�s ttjd||f��dS)Nz'%s' is not valid %s address)r
rrrZINVALID_ADDR)Zipv�addrr
r
rr s
�r)rT�__all__Zxml.saxrpZxml.sax.saxutilsryr�collectionsr	Zfirewallr
rZfirewall.errorsr�objectr�	ExceptionrUr]rarqrrrZXMLGeneratorrrrrrr
r
r
r�<module>s&		
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg