ó  c‰`c@sdddgZddljZddlZddlZddlZddlmZddlm Z ddl m Z m Z m Z mZmZmZmZmZddlmZdd lmZdd lmZde fd „ƒYZd e fd „ƒYZd„Zdd„ZdS(tServicetservice_readertservice_writeriÿÿÿÿN(tconfig(t u2b_if_py2(tPY2t IO_ObjecttIO_Object_ContentHandlertIO_Object_XMLGeneratort check_portt check_tcpudptcheck_protocolt check_address(tlog(terrors(t FirewallErrorc BsöeZdddddgfddgfdidd6fddgfddgffZd Zd d gZidd6dd6dd 6Zid dgd 6ddgd6dgd6d gd6ddgd6ddgd6Zd„Zd„Z d„Z d„Z RS(tversionttshortt descriptiontportstmodulest destinationt protocolst source_portss(sssa(ss)asa{ss}asa(ss))t_t-tservicetnametporttprotocoltvaluetmoduletipv4tipv6s source-portcCs_tt|ƒjƒd|_d|_d|_g|_g|_g|_i|_ g|_ dS(NR( tsuperRt__init__RRRRRRRR(tself((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pyR$As       cCsHd|_d|_d|_|j2|j2|j2|jjƒ|j2dS(NR( RRRRRRRtclearR(R%((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pytcleanupLs    cCst|jƒ|_t|jƒ|_t|jƒ|_g|jD]$\}}t|ƒt|ƒf^q@|_g|jD]}t|ƒ^qw|_d„|jjƒDƒ|_g|jD]}t|ƒ^q¸|_g|j D]$\}}t|ƒt|ƒf^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.cSs+i|]!\}}t|ƒt|ƒ“qS((R(t.0tktv((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pys _s N( RRRRRRRtitemsRR(R%tpotprtm((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pytencode_stringsVs7%%cCs©|dkr]x–|D]C}|ddkrHt|dƒt|dƒqt|dƒqWnH|dkr‡x9|D]}t|ƒqpWn|dkrÃx|D]"}t|dƒt|dƒqšWnâ|dkrxÓ|D]<}|dkrttjd |ƒ‚nt|||ƒqÖWnŒ|d kr¥x}|D]r}|jd ƒrw|jd dƒ}d |krw|jd dƒ}qwnt |ƒdkr,ttj |ƒ‚q,q,WndS(NRiRiRRRR!R"s'%s' not in {'ipv4'|'ipv6'}Rt nf_conntrack_RRi(R!R"( R R R RRtINVALID_DESTINATIONR t startswithtreplacetlentINVALID_MODULE(R%RtitemRtprotoRR ((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pyt _check_configds8              (sversionR(sshortR(s descriptionR(RR(RRN( t__name__t __module__tIMPORT_EXPORT_STRUCTUREtDBUS_SIGNATUREtADDITIONAL_ALNUM_CHARStNonetPARSER_REQUIRED_ELEMENT_ATTRStPARSER_OPTIONAL_ELEMENT_ATTRSR$R'R/R8(((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pyR&s2           tservice_ContentHandlercBseZd„ZRS(cCsxtj|||ƒ|jj||ƒ|dkrwd|krUtjd|dƒnd|krt|d|j_qtný|dkr†nî|dkr•nß|dkr||ddkr't|dƒt|d ƒ|d|d f}||jj kr |jj j |ƒqytjd |d|d ƒqtt |d ƒ|d |jj kre|jj j |d ƒqttjd |d ƒnø|d krÝt |d ƒ|d |jj krÆ|jj j |d ƒqttjd |d ƒn—|d kr_t|dƒt|d ƒ|d|d f}||jj krA|jj j |ƒqttjd|d|d ƒn|dkrÞxddgD]_}||krxt|||ƒ||jjkrÀtjd|ƒq×|||jj|t setByteStreamtparsetSAXParseExceptiontINVALID_SERVICEt getExceptionRR/( RMRNRthandlertparserRtftsourcetmsg((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pyRÏs8     !       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 R(((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pyts   :dE