Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 ³Y„j5ã@sdZddddddddgZd d ljZd d ljjZd d lZd d lZd d lm Z d d l m Z d d l m Z d dl mZd dlmZejdkZGdd„deƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„dejjƒZGdd„dejƒZdd„Zdd„Zdd„Z dd„Z!d S)z5Generic io_object handler, io specific check methods.ÚPY2Ú IO_ObjectÚIO_Object_ContentHandlerÚIO_Object_XMLGeneratorÚ check_portÚ check_tcpudpÚcheck_protocolÚ check_addresséN)Ú OrderedDict)Ú functions)Úb2u)Úerrors)Ú FirewallErrorÚ3c@s|eZdZdZfZdZgZiZiZdd„Z dd„Z dd„Z d d „Z d d „Z d d„Zdd„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)Úself©rú/usr/lib/python3.6/io_object.pyÚ__init__2s zIO_Object.__init__cCs6g}x(|jD]}|jtjt||dƒƒƒq Wt|ƒS)Nr )ÚIMPORT_EXPORT_STRUCTUREÚappendÚcopyÚdeepcopyÚgetattrÚtuple)rÚretÚxrrrÚ export_config9s zIO_Object.export_configcCsXi}tdd„|jDƒƒ}x:|D]2}t||ƒsAsz0IO_Object.export_config_dict..)ÚdictrrÚ isinstanceÚboolrr)rÚconfÚ type_formatsÚkeyrrrÚexport_config_dict?s  zIO_Object.export_config_dictcCsœ|j|ƒxŒt|jƒD]~\}\}}t||tƒr~g}tƒ}x,||D] }||krD|j|ƒ|j|ƒqDW~t||t j |ƒƒqt||t j ||ƒƒqWdS)N) Ú check_configÚ enumeraterr&ÚlistÚsetrÚaddÚsetattrrr)rr(ÚiÚelementZdummyZ_confZ_setr rrrÚ import_configGs  zIO_Object.import_configc Cs~|j|ƒxn|D]f}t||ƒs0ttjdj|ƒƒ‚t||tƒr`t||tt j t j ||ƒƒƒƒqt||t j ||ƒƒqWdS)Nz-Internal error. '{}' is not a valid attribute) Úcheck_config_dictÚhasattrrr Z UNKNOWN_ERRORÚformatr&r.r1r Úfromkeysrr)rr(r*rrrÚimport_config_dictWs   "zIO_Object.import_config_dictcCszt|tƒs(ttjd|tdƒt|ƒfƒ‚t|ƒdkr@ttjdƒ‚x4|D],}|jƒ rF||j krFttjd||fƒ‚qFWdS)Nz'%s' not of type %s, but %srr"zname can't be emptyz'%s' is not allowed in '%s') r&Ústrrr Ú INVALID_TYPEÚtypeÚlenZ INVALID_NAMEÚisalnumÚADDITIONAL_ALNUM_CHARS)rrÚcharrrrÚ check_namecs     zIO_Object.check_namecCsjt|ƒt|jƒkr0ttjdt|ƒt|jƒfƒ‚i}x&t|jƒD]\}\}}||||<q@W|j|ƒdS)Nz structure size mismatch %d != %d)r=rrr r;r-r5)rr(Z conf_dictr2r Úyrrrr,pszIO_Object.check_configcCsrtdd„|jDƒƒ}xX|D]P}|dd„|jDƒkrDttjdj|ƒƒ‚|j||||ƒ|j||||ƒqWdS)NcSsg|]}|d|df‘qS)r r"r)r#r rrrr$|sz/IO_Object.check_config_dict..cSsg|] \}}|‘qSrr)r#r rBrrrr$~szoption '{}' is not valid)r%rrr ZINVALID_OPTIONr7Ú_check_config_structureÚ _check_config)rr(r)r*rrrr5{s  zIO_Object.check_config_dictcCsdS)Nr)rZdummy1Zdummy2Zdummy3rrrrDƒszIO_Object._check_configc Cs`t|t|ƒƒs,ttjd|t|ƒt|ƒfƒ‚t|tƒrrt|ƒdkrRttjd|ƒ‚x|D]}|j||dƒqXWnêt|tƒrÌt|ƒt|ƒkr¤ttjd|t|ƒfƒ‚x¶t |ƒD]\}}|j|||ƒq®Wn�t|t ƒ�r\t|j ƒƒd\}}xn|j ƒD]b\}}t|t|ƒƒ�s,ttjd|t|ƒt|ƒfƒ‚t|t|ƒƒsöttjd|t|ƒt|ƒfƒ‚qöWdS)Nz'%s' not of type %s, but %sr"zlen('%s') != 1r zlen('%s') != %d) r&r<rr r;r.r=rCrr-r%Úitems) rr(Z structurer r2ÚvalueZskeyZsvaluer*rrrrC‡s8      z!IO_Object._check_config_structurecCsÒ|jƒ}d}||jkrdd}|j|dk rdx:|j|D],}||krL|j|ƒq4ttjd||fƒ‚q4W||jkr˜d}x$|j|D]}||kr~|j|ƒq~W|s¬ttjd|ƒ‚x |D]}ttjd||fƒ‚q²WdS)NFTzMissing attribute %s for %szUnexpected element %sz%s: Unexpected attribute %s)ZgetNamesÚPARSER_REQUIRED_ELEMENT_ATTRSÚremoverr Z PARSE_ERRORÚPARSER_OPTIONAL_ELEMENT_ATTRS)rrÚattrsZ_attrsÚfoundr rrrÚparser_check_element_attrs¨s,     z$IO_Object.parser_check_element_attrsN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rZDBUS_SIGNATUREr?rGrIrr!r+r4r9rAr,r5rDrCrLrrrrr)s"   !cs$eZdZ‡fdd„Zdd„Z‡ZS)ÚUnexpectedElementErrorcstt|ƒjƒ||_dS)N)ÚsuperrQrr)rr)Ú __class__rrrÆszUnexpectedElementError.__init__cCs d|jS)NzUnexpected element '%s')r)rrrrÚ__str__ÉszUnexpectedElementError.__str__)rMrNrOrrTÚ __classcell__rr)rSrrQÅs rQcs$eZdZ‡fdd„Zdd„Z‡ZS)ÚMissingAttributeErrorcstt|ƒjƒ||_||_dS)N)rRrVrrÚ attribute)rrrW)rSrrrÍszMissingAttributeError.__init__cCsd|j|jfS)Nz$Element '%s': missing '%s' attribute)rrW)rrrrrTÑszMissingAttributeError.__str__)rMrNrOrrTrUrr)rSrrVÌs rVcs$eZdZ‡fdd„Zdd„Z‡ZS)ÚUnexpectedAttributeErrorcstt|ƒjƒ||_||_dS)N)rRrXrrrW)rrrW)rSrrrÖsz!UnexpectedAttributeError.__init__cCsd|j|jfS)Nz'Element '%s': unexpected attribute '%s')rrW)rrrrrTÚsz UnexpectedAttributeError.__str__)rMrNrOrrTrUrr)rSrrXÕs rXc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) rcCs||_d|_dS)Nr)ÚitemÚ_element)rrYrrrrßsz!IO_Object_ContentHandler.__init__cCs d|_dS)Nr)rZ)rrrrÚ startDocumentãsz&IO_Object_ContentHandler.startDocumentcCs d|_dS)Nr)rZ)rrrJrrrÚ startElementæsz%IO_Object_ContentHandler.startElementcCs*|dkr|j|j_n|dkr&|j|j_dS)NÚshortÚ description)rZrYr]r^)rrrrrÚ endElementés z#IO_Object_ContentHandler.endElementcCs|j|jddƒ7_dS)NÚ ú )rZÚreplace)rÚcontentrrrÚ charactersïsz#IO_Object_ContentHandler.charactersN)rMrNrOrr[r\r_rdrrrrrÞs c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)rcCsNtjjj|ƒ|j|_|j|_ig|_|jd|_ g|_ d|_ d|_ d|_ dS)Nr"zutf-8Féÿÿÿÿ)ÚsaxÚhandlerÚContentHandlerrÚwriteÚ_writeÚflushZ_flushZ _ns_contextsZ_current_contextZ_undeclared_ns_mapsZ _encodingZ_pending_start_elementZ_short_empty_elements)rÚoutrrrrós zIO_Object_XMLGenerator.__init__cCs*trdd„|jƒDƒ}tjj|||ƒdS)a saxutils.XMLGenerator.startElement() expects name and attrs to be unicode and bad things happen if any of them is (utf-8) encoded. We override the method here to sanitize this case. Can be removed once we drop Python2 support. cSsi|]\}}t|ƒt|ƒ“qSr)r )r#rrFrrrú sz7IO_Object_XMLGenerator.startElement..N)rrEÚsaxutilsÚ XMLGeneratorr\)rrrJrrrr\sz#IO_Object_XMLGenerator.startElementcCs¢trX|jdt|ƒƒx4|jƒD](\}}|jdt|ƒtjt|ƒƒfƒq W|jdƒnF|jd|ƒx,|jƒD] \}}|jd|tj|ƒfƒqpW|jdƒdS)z* slightly modified startElement() úN)rrjr rErnZ quoteattr)rrrJrFrrrÚ simpleElements  z$IO_Object_XMLGenerator.simpleElementcCstjj|t|ƒƒdS)zú saxutils.XMLGenerator.endElement() expects name to be unicode and bad things happen if it's (utf-8) encoded. We override the method here to sanitize this case. Can be removed once we drop Python2 support. N)rnror_r )rrrrrr_sz!IO_Object_XMLGenerator.endElementcCstjj|t|ƒƒdS)zý saxutils.XMLGenerator.characters() expects content to be unicode and bad things happen if it's (utf-8) encoded. We override the method here to sanitize this case. Can be removed once we drop Python2 support. N)rnrordr )rrcrrrrd%sz!IO_Object_XMLGenerator.characterscCstjj|t|ƒƒdS)a saxutils.XMLGenerator.ignorableWhitespace() expects content to be unicode and bad things happen if it's (utf-8) encoded. We override the method here to sanitize this case. Can be removed once we drop Python2 support. N)rnroÚignorableWhitespacer )rrcrrrrr-sz*IO_Object_XMLGenerator.ignorableWhitespaceN) rMrNrOrr\rqr_rdrrrrrrròs  cCsˆtj|ƒ}|dkr$ttjd|ƒ‚n`|dkr>ttjd|ƒ‚nF|dkrXttjd|ƒ‚n,t|ƒdkr„|d|dkr„ttjd|ƒ‚dS) Nézport number in '%s' is too bigr"z'%s' is invalid port rangezport range '%s' is ambiguousr éþÿÿÿre)r Z getPortRangerr Z INVALID_PORTr=)ZportZ port_rangerrrr5s    cCs|dkrttjd|ƒ‚dS)NÚtcpÚudpÚsctpÚdccpz)'%s' not from {'tcp'|'udp'|'sctp'|'dccp'})rurvrwrx)rr ÚINVALID_PROTOCOL)ÚprotocolrrrrDscCstj|ƒsttj|ƒ‚dS)N)r Z checkProtocolrr ry)rzrrrrJs cCs$tj||ƒs ttjd||fƒ‚dS)Nz'%s' is not valid %s address)r rrr Z INVALID_ADDR)ZipvZaddrrrrrNs )"rPÚ__all__Zxml.saxrfZxml.sax.saxutilsrnrÚsysÚ collectionsr Zfirewallr Zfirewall.functionsr r Zfirewall.errorsrÚversionrÚobjectrÚ ExceptionrQrVrXrgrhrrorrrrrrrrrÚs0           C