8889841có  c‰`c@sùdddgZddljZddlZddlZddlZddlmZddlm Z ddl m Z m Z m Z mZddlmZdd lmZdd lmZde fd „ƒYZd e fd „ƒYZd„Zdd„ZdS(tIcmpTypeticmptype_readerticmptype_writeriÿÿÿÿN(tconfig(t u2b_if_py2(tPY2t IO_ObjecttIO_Object_ContentHandlertIO_Object_XMLGenerator(tlog(terrors(t FirewallErrorcBs”eZdddddgffZdZddgZidd6dd6dd6Zid dgd6d d gd6Zd „Zd „Z d„Z d„Z RS(tversionttshortt descriptiont destinations(sssas)t_t-ticmptypetnametipv4tipv6cCs;tt|ƒjƒd|_d|_d|_g|_dS(NR (tsuperRt__init__R RRR(tself((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pyR8s    cCs&d|_d|_d|_|j2dS(NR (R RRR(R((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pytcleanup?s   cCs_t|jƒ|_t|jƒ|_t|jƒ|_g|jD]}t|ƒ^q@|_dS(s» 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.N(RR RRR(Rtm((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pytencode_stringsEscCsI|dkrEx6|D]+}|dkrttjd|ƒ‚qqWndS(NRRRs'%s' not from {'ipv4'|'ipv6'}(RR(R R tINVALID_DESTINATION(RRtitemR((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pyt _check_configNs     (sversionR (sshortR (s descriptionR N( t__name__t __module__tIMPORT_EXPORT_STRUCTUREtDBUS_SIGNATUREtADDITIONAL_ALNUM_CHARStNonetPARSER_REQUIRED_ELEMENT_ATTRStPARSER_OPTIONAL_ELEMENT_ATTRSRRRR(((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pyR%s"      ticmptype_ContentHandlercBseZd„ZRS(cCsþtj|||ƒ|jj||ƒ|dkrxd|krVtjd|dƒnd|krú|d|j_qún‚|dkr‡ns|dkr–nd|dkrúxUdd gD]D}||kr¯||jƒd kr¯|jjj t |ƒƒq¯q¯WndS( NRRs'Ignoring deprecated attribute name='%s'R RRRRRtyesttrue(syesR*( Rt startElementRtparser_check_element_attrsR twarningR tlowerRtappendtstr(RRtattrstx((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pyR+Ys"        (R R!R+(((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pyR(Xsc CsYtƒ}|jdƒs1ttjd|ƒ‚n|d |_|j|jƒ||_||_|j t j ƒrxt nt |_|j|_t|ƒ}tjƒ}|j|ƒd||f}t|dƒi}tjdƒ}|j|ƒy|j|ƒWn2tjk r5}ttjd|jƒƒ‚nXWdQX~~trU|jƒn|S(Ns.xmls%s is missing .xml suffixiüÿÿÿs%s/%strbsnot a valid icmptype file: %s(RtendswithR R t INVALID_NAMERt check_nametfilenametpatht startswithRt ETC_FIREWALLDtFalsetTruetbuiltintdefaultR(tsaxt make_parsertsetContentHandlertopent InputSourceR%t setByteStreamtparsetSAXParseExceptiontINVALID_ICMPTYPEt getExceptionRR( R7R8RthandlertparserRtftsourcetmsg((s=/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.pyRms8     !       c Csá|r |n|j}|jr4d||jf}nd||jf}tjj|ƒrytj|d|ƒWqtk r™}tj d||ƒqXntjj |ƒ}|j t j ƒrtjj|ƒ rtjjt j ƒsÿtjt j dƒntj|dƒntj|dddd ƒ}t|ƒ}|jƒi}|jrq|jd krq|j|d s   "3