MINI MINI MANI MO

Path : /lib/python2.7/site-packages/firewall/core/io/
File Upload :
Current File : //lib/python2.7/site-packages/firewall/core/io/direct.pyc

ó
dߨ[c@sddljZddlZddlZddlZddlmZddlTddlm	Z	m
Z
mZddlm
Z
mZmZddlmZddlmZddlmZdd	lmZdd
lmZdefd„ƒYZd
e
fd„ƒYZdS(iÿÿÿÿN(tconfig(t*(t	splitArgstjoinArgst
u2b_if_py2(t	IO_ObjecttIO_Object_ContentHandlertIO_Object_XMLGenerator(tlog(t	ipXtables(tebtables(terrors(t
FirewallErrortdirect_ContentHandlercBs#eZd„Zd„Zd„ZRS(cCstj||ƒt|_dS(N(Rt__init__tFalsetdirect(tselftitem((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyR(scCsútj|||ƒ|jj||ƒ|dkr\|jrPttjdƒ‚nt|_nš|dkrË|js‚t	j
dƒdS|d}|d}|d}|jjt|ƒt|ƒt|ƒƒn+|dkrœ|jsñt	j
dƒdS|d}|dkr ttj
d|ƒ‚n|d}|d}yt|d
ƒ}Wn'tk
rqt	j
d|d
ƒdSXt|ƒt|ƒt|ƒ|g|_nZ|dkrá|jsÂt	j
dƒdS|d}t|ƒg|_nt	j
d|ƒdSdS(NRsMore than one direct tag.tchains$Parse Error: chain outside of directtipvttabletrules#Parse Error: rule outside of directtipv4tipv6tebs"'%s' not from {'ipv4'|'ipv6'|'eb'}tprioritys'Parse Error: %s is not a valid prioritytpassthroughs&Parse Error: command outside of directsUnknown XML element %s(RRR(RtstartElementRtparser_check_element_attrsRRRtPARSE_ERRORtTrueRterrort	add_chainRtINVALID_IPVtintt
ValueErrort_rulet_passthrough(RtnametattrsRRRR((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyR,sT			



	

	


		

cCstj||ƒ|dkr†|jrm|jjgt|jƒD]}t|ƒ^q>ƒ|jj|jŒn
t	j
dƒd|_nz|dkr|jrã|jjgt|jƒD]}t|ƒ^q´ƒ|jj
|jŒnt	j
ddƒd|_ndS(NRs2Error: rule does not have any arguments, ignoring.Rs0Error: passthrough does not have any arguments, s	ignoring.(Rt
endElementt_elementR%tappendRRRtadd_ruleRR tNoneR&tadd_passthrough(RR'tx((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyR)^s 	&
	&	(t__name__t
__module__RRR)(((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyR
's		2tDirectcBsƒeZdZdd(gfddddddgfgfdddgfgffZdZid)d6dd	d
gd
6dd	d
dgd6dgd
6ZiZd„Zd„Z	d„Z
d„Zd„Zd„Z
d„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd „Zd!„Zd"„Zd#„Zd$„Zd%„Zd&„Z d'„Z!RS(*s Direct class tchainsttrulesitpassthroughss(a(sss)a(sssias)a(sas))RRRRRRRcCsDtt|ƒjƒ||_tƒ|_tƒ|_tƒ|_dS(N(tsuperR2RtfilenametLastUpdatedOrderedDictR3R5R6(RR8((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyRŠs
	cCsdS(N((RtconfR((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyt
_check_config‘scCsNg}g}xO|jD]D}x;|j|D],}|jtt|ƒt|gƒƒƒq*WqW|j|ƒg}xe|jD]Z}xQ|j|D]B}|jt|d|d|d|dt|dƒfƒƒqWq{W|j|ƒg}xH|jD]=}x4|j|D]%}|jt|t|ƒfƒƒq
WqöW|j|ƒt|ƒS(Niii(R3R+ttupletlistR5R6(RtretR/tkeyRR((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyt
export_config•s$.
%
'
cCsÔ|jƒ|j|ƒx¶t|jƒD]¥\}\}}|dkrjx"||D]}|j|ŒqPWn|dkr›x"||D]}|j|ŒqWn|dkr'x"||D]}|j|Œq²Wq'q'WdS(NR3R5R6(tcleanuptcheck_configt	enumeratetIMPORT_EXPORT_STRUCTURER!R,R.(RR:titelementtdummyR/((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyt
import_config©s

"cCs+|jjƒ|jjƒ|jjƒdS(N(R3tclearR5R6(R((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyRA·s

cCsdGHx;|jD]0}d|d|ddj|j|ƒfGHqWdGHxe|jD]Z}d|d|d|dfGHx3|j|D]$\}}d	|d
j|ƒfGHq„WqRWdGHxD|jD]9}d|GHx'|j|D]}d
d
j|ƒGHqÜWq¿WdS(NR3s  (%s, %s): %siit,R5s  (%s, %s, %s):is    (%d, ('%s'))s','R6s  %s:s
    ('%s')(R3tjoinR5R6(RR?Rtargs((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pytoutput¼s 	cCs>dddg}||kr:ttjd||fƒ‚ndS(NRRRs'%s' not in '%s'(RRR"(RRtipvs((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyt
_check_ipvÌs	cCsf|j|ƒ|dkr(tjjƒntjjƒ}||krbttjd||fƒ‚ndS(NRRs'%s' not in '%s'(sipv4sipv6(ROR	tBUILT_IN_CHAINStkeysR
RRt
INVALID_TABLE(RRRttables((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyt_check_ipv_tableÒs
	cCs‡|j||ƒ||f}||jkr;g|j|<n||j|kre|j|j|ƒntjd|||fdƒdS(Ns(Chain '%s' for table '%s' with ipv '%s' salready in list, ignoring(RTR3R+Rtwarning(RRRRR?((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyR!Ýs	cCs˜|j||ƒ||f}||jkr{||j|kr{|j|j|ƒt|j|ƒdkr”|j|=q”ntd|||fƒ‚dS(Nis4Chain '%s' with table '%s' with ipv '%s' not in list(RTR3tremovetlenR$(RRRRR?((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pytremove_chainès"cCs<|j||ƒ||f}||jko;||j|kS(N(RTR3(RRRRR?((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pytquery_chainôscCsP|j||ƒ||f}||jkr6|j|Std||fƒ‚dS(Ns&No chains for table '%s' with ipv '%s'(RTR3R$(RRRR?((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyt
get_chainsùscCs|jS(N(R3(R((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pytget_all_chainsscCs³|j||ƒ|||f}||jkrAtƒ|j|<n|t|ƒf}||j|krz||j||<n5tjddj|ƒ||fd||fdƒdS(Ns(Rule '%s' for table '%s' and chain '%s' s',swith ipv '%s' and priority %d salready in list, ignoring(RTR5R9R<RRURK(RRRRRRLR?tvalue((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyR,s'cCs¾|j||ƒ|||f}|t|ƒf}||jkrŠ||j|krŠ|j||=t|j|ƒdkrº|j|=qºn0tddj|ƒ||fd||fƒ‚dS(Nis(Rule '%s' for table '%s' and chain '%s' s',s)with ipv '%s' and priority %d not in list(RTR<R5RWR$RK(RRRRRRLR?R\((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pytremove_rules"cCs‡|j||ƒ|||f}||jkrƒx)|j|jƒD]}|j||=qBWt|j|ƒdkrƒ|j|=qƒndS(Ni(RTR5RQRW(RRRRR?R\((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pytremove_rules"scCsQ|j||ƒ|||f}|t|ƒf}||jkoP||j|kS(N(RTR<R5(RRRRRRLR?R\((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyt
query_rule+scCs[|j||ƒ|||f}||jkr9|j|Std||fd|ƒ‚dS(Ns'No rules for table '%s' and chain '%s' s
with ipv '%s'(RTR5R$(RRRRR?((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyt	get_rules1scCs|jS(N(R5(R((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyt
get_all_rules:scCs~|j|ƒ||jkr,g|j|<n||j|krV|j|j|ƒn$tjddj|ƒ|fdƒdS(NsPassthrough '%s' for ipv '%s's',salready in list, ignoring(ROR6R+RRURK(RRRL((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyR.?s
	cCs“|j|ƒ||jkrl||j|krl|j|j|ƒt|j|ƒdkr|j|=qn#tddj|ƒ|fdƒ‚dS(NisPassthrough '%s' for ipv '%s's',snot in list(ROR6RVRWR$RK(RRRL((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pytremove_passthroughIs
"cCs-|j|ƒ||jko,||j|kS(N(ROR6(RRRL((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pytquery_passthroughSs
cCs;|j|ƒ||jkr'|j|Std|ƒ‚dS(NsNo passthroughs for ipv '%s'(ROR6R$(RR((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pytget_passthroughsWs
cCs|jS(N(R6(R((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pytget_all_passthroughs^sc	CsÂ|jƒ|jjdƒs8ttjd|jƒ‚nt|ƒ}tjƒ}|j	|ƒt
|jdƒM}y|j|ƒWn2tjk
r·}ttj
d|jƒƒ‚nXWdQXdS(Ns.xmls'%s' is missing .xml suffixtrsNot a valid file: %s(RAR8tendswithRRtINVALID_NAMER
tsaxtmake_parsertsetContentHandlertopentparsetSAXParseExceptiontINVALID_TYPEtgetException(Rthandlertparsertftmsg((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pytreadcs
	
	c
Csýtjj|jƒreytj|jd|jƒWqetk
ra}td|j|fƒ‚qeXntjjtj	ƒstj
tj	dƒntj|jddddƒ}t
|ƒ}|jƒ|jdiƒ|jd	ƒxt|jD]i}|\}}xT|j|D]E}|jd
ƒ|jdi|d6|d
6|d6ƒ|jd	ƒqWqëWxÌ|jD]Á}|\}}}x©|j|D]š\}}	t|	ƒdkr©q…n|jd
ƒ|jdi|d6|d
6|d6d|d6ƒ|jtjjt|	ƒƒƒ|jdƒ|jd	ƒq…WqbWxž|jD]“}xŠ|j|D]{}	t|	ƒdkrcqEn|jd
ƒ|jdi|d6ƒ|jtjjt|	ƒƒƒ|jdƒ|jd	ƒqEWq1W|jdƒ|jd	ƒ|jƒ|jƒ~dS(Ns%s.oldsBackup of '%s' failed: %siètmodetwttencodingsUTF-8Rs
s  RRRiRs%dRR(tostpathtexistsR8tshutiltcopy2t	ExceptiontIOErrorRt
ETC_FIREWALLDtmkdirtioRlRt
startDocumentRtignorableWhitespaceR3t
simpleElementR5RWRitsaxutilstescapeRR)R6tendDocumenttclose(
RRtRsRqR?RRRRRL((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pytwritessZ 










(R4R4R4N("R0R1t__doc__RDtDBUS_SIGNATURER-tPARSER_REQUIRED_ELEMENT_ATTRStPARSER_OPTIONAL_ELEMENT_ATTRSRR;R@RHRARMRORTR!RXRYRZR[R,R]R^R_R`RaR.RbRcRdReRuRŠ(((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyR2usJ
																
							
	
				(txml.saxRiRyR‚R|tfirewallRtfirewall.fw_typestfirewall.functionsRRRtfirewall.core.io.io_objectRRRtfirewall.core.loggerRt
firewall.coreR	R
Rtfirewall.errorsRR
R2(((s;/usr/lib/python2.7/site-packages/firewall/core/io/direct.pyt<module>s
N

OHA YOOOO