Spade
Mini Shell
�
�G�`c@sdddgZddljZddlZddlZddlZddlmZddlm Z ddl
mZmZm
Z
mZmZmZmZmZddlmZdd lmZdd
lmZdefd��YZde
fd
��YZd�Zdd�ZdS(tServicetservice_readertservice_writeri����N(tconfig(t
u2b_if_py2(tPY2t IO_ObjecttIO_Object_ContentHandlertIO_Object_XMLGeneratort
check_porttcheck_tcpudptcheck_protocolt
check_address(tlog(terrors(t
FirewallErrorc
Bs�eZdddddgfddgfdidd6fddgfddgffZd Zd
dgZidd6dd6dd6Zid
dgd6ddgd6dgd6d
gd6ddgd6ddgd6Zd�Zd�Z d�Z
d�ZRS(tversionttshorttdescriptiontportstmodulestdestinationt protocolstsource_portss(sssa(ss)asa{ss}asa(ss))t_t-tservicetnametporttprotocoltvaluetmoduletipv4tipv6ssource-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
<dictcomp>_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�|dkr�x}|D]r}|jd�rw|jdd�}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
RRRtINVALID_DESTINATIONRt
startswithtreplacetlentINVALID_MODULE(R%RtitemRtprotoRR
((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pyt
_check_configds8
(sversionR(sshortR(sdescriptionR(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 |jjkre|jjj
|d �qttjd|d �n�|d kr�t|d�|d|jjkr�|jjj
|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|<qxqxWn�|dkrt|d}|jd�r9|jdd�}d|kr9|jdd�}q9n||jjkra|jjj
|�qttjd|�ndS(NRRs'Ignoring deprecated attribute
name='%s'RRRRRRs#Port '%s/%s' already set,
ignoring.s$Protocol '%s' already set,
ignoring.Rssource-ports)SourcePort '%s/%s' already set,
ignoring.RR!R"s2Destination address for '%s' already set,
ignoringR R0RRs"Module '%s' already set,
ignoring.(RtstartElementR6tparser_check_element_attrsR
twarningRR R
RtappendRRRRRR2R3R(R%RtattrstentrytxR
((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pyRB�st
(R9R:RB(((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pyRA�sc CsYt�}|jd�s1ttjd|��n|d
|_|j|j�||_||_|j t
j�rxtnt
|_|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 service file:
%s(RtendswithRRtINVALID_NAMERt
check_nametfilenametpathR2Rt
ETC_FIREWALLDtFalsetTruetbuiltintdefaultRAtsaxtmake_parsertsetContentHandlertopentInputSourceR>t
setByteStreamtparsetSAXParseExceptiontINVALID_SERVICEtgetExceptionRR/( RMRNRthandlertparserRtftsourcetmsg((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pyR�s8
!
c
Cs�|r|n|j}|jr4d||jf}nd||jf}tjj|�r�ytj|d|�Wq�tk
r�}tj d||�q�Xntjj
|�}|jtj
�rtjj|�rtjjtj
�s�tjtj
d�ntj|d�ntj|dddd �}t|�}|j�i}|jrq|jd
krq|j|d<n|jd|�|jd
�|jr�|jd
kr�|jd�|jdi�|j|j�|jd�|jd
�n|jrR|jd
krR|jd�|jdi�|j|j�|jd�|jd
�nxQ|jD]F} |jd�|jdi| dd6| dd6�|jd
�q\WxB|jD]7}
|jd�|jdi|
d6�|jd
�q�WxQ|jD]F} |jd�|jdi| dd6| dd6�|jd
�q�WxB|jD]7}|jd�|jdi|d6�|jd
�qIWt|j
�dkr�|jd�|jd|j
�|jd
�n|jd�|jd
�|j!�|j"�~dS(Ns%s/%ss %s/%s.xmls%s.oldsBackup
of file '%s' failed: %si�tmodetwttencodingsUTF-8RRRs
s RRRiiRRssource-portR
RR(#RNRMRtostexiststshutiltcopy2t ExceptionR
terrortdirnameR2RROtmkdirtioRWRt
startDocumentRRBtignorableWhitespaceRt
characterst
endElementRRt
simpleElementRRRR4RtendDocumenttclose(RRNt_pathRRbtdirpathR`R^RFRRR
((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pyR�sx %
&
(t__all__txml.saxRTRfRnRhtfirewallRtfirewall.functionsRtfirewall.core.io.io_objectRRRRR R
RRtfirewall.core.loggerR
Rtfirewall.errorsRRRARR>R(((s</usr/lib/python2.7/site-packages/firewall/core/io/service.pyt<module>s:dE