MINI MINI MANI MO

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

ó
dߨ[c@s£dgZddlTddlmZddlmZddlmZddlmZddl	m
Z
ddlmZd	e
fd
„ƒYZdefd„ƒYZdS(
tFirewallDirectIPTablesiÿÿÿÿ(t*(t	ipXtables(tebtables(tFirewallTransaction(tlog(terrors(t
FirewallErrortFirewallDirectcBsIeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd!d„Z
d„Zd	„Zd!d
„Z
d„Zd„Zd
„Zd„Zd!d„Zd!d„Zd„Zd„Zd„Zd!d„Zd!d„Zd„Zd„Zd„Zd„Zd„Zd„Zd!d„Zd!d„Z d„Z!d„Z"d „Z#RS("cCs||_|jƒdS(N(t_fwt_FirewallDirect__init_vars(tselftfw((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt__init__'s	cCs d|j|j|j|jfS(Ns%s(%r, %r, %r)(t	__class__t_chainst_rulest_rule_priority_positions(R((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt__repr__+scCs1i|_i|_i|_i|_d|_dS(N(RRRt
_passthroughstNonet_obj(R((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt__init_vars/s
				cCs|jƒdS(N(R
(R((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytcleanup6scCs
t|jƒS(N(RR	(R((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytnew_transaction;scCs
||_dS(N(R(Rtobj((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytset_permanent_config@scCs|t|jƒt|jƒt|jƒdkr3tSt|jjƒƒt|jjƒƒt|jjƒƒdkrxtSt	S(Ni(
tlenRRRtTrueRtget_all_chainst
get_all_rulestget_all_passthroughstFalse(R((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pythas_configurationCs/%cCsu|dkr|jƒ}n|}|j|jjƒ|jjƒ|jjƒf|ƒ|dkrq|jtƒndS(N(	RRt
set_configRRRRtexecuteR(Rtuse_transactionttransaction((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytapply_directLscCs‹i}i}i}xi|jD]^}|\}}xI|j|D]:}|jj|||ƒs<|j|gƒj|ƒq<q<WqWx|jD]„}|\}}}xl|j|D]]\}	}
|jj||||	|
ƒs«||krñtƒ||<n|	|||	|
f<q«q«WqˆWxk|jD]`}xW|j|D]H}
|jj	||
ƒs.||krbg||<n||j|
ƒq.q.WqW|||fS(N(
RRtquery_chaint
setdefaulttappendRt
query_ruletLastUpdatedOrderedDictRtquery_passthrough(Rtchainstrulestpassthroughsttable_idtipvttabletchaintchain_idtprioritytargs((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytget_runtime_config]s,$
cCs|j|j|jfS(N(RRR(R((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt
get_config|sc
Cs|dkr|jƒ}n|}|\}}}x|D]…}|\}}	xp||D]d}
|j||	|
ƒsTy|j||	|
d|ƒWq¸tk
r´}tjt|ƒƒq¸XqTqTWq7Wx¢|D]š}|\}}	}
x‚||D]v\}
}|j||	|
|
|ƒsçy#|j	||	|
|
|d|ƒWq]tk
rY}tjt|ƒƒq]XqçqçWqÇWx{|D]s}xj||D]^}|j
||ƒs}y|j||d|ƒWqÛtk
r×}tjt|ƒƒqÛXq}q}WqlW|dkrÿ|jt
ƒndS(NR$(RRR't	add_chainRRtwarningtstrR*tadd_ruleR,tadd_passthroughR#R(RtconfR$R%RRRR0R1R2R3terrorR4R5R6((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR"s@
"
"
"cCs>dddg}||kr:ttjd||fƒ‚ndS(Ntipv4tipv6tebs'%s' not in '%s'(RRtINVALID_IPV(RR1tipvs((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt
_check_ipv¦s	cCsf|j|ƒ|dkr(tjjƒntjjƒ}||krbttjd||fƒ‚ndS(NR@RAs'%s' not in '%s'(sipv4sipv6(RERtBUILT_IN_CHAINStkeysRRRt
INVALID_TABLE(RR1R2ttables((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt_check_ipv_table¬s
	cCsÔ|dkr)tj|}tj|}ntj|}tj|}||krhttjd|ƒ‚n||krttjd|ƒ‚n|dkrÐ|jjj	|ƒdkrÐttjd|ƒ‚qÐndS(NR@RAschain '%s' is built-in chainschain '%s' is reservedsChain '%s' is reserved(sipv4sipv6(sipv4sipv6(RRFt
OUR_CHAINSRRRt
BUILTIN_CHAINR	tzonetzone_from_chainRt
INVALID_CHAIN(RR1R2R3tbuilt_in_chainst
our_chains((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt_check_builtin_chainµs


			cCsc|r%|jj|gƒj|ƒn:|j|j|ƒt|j|ƒdkr_|j|=ndS(Ni(RR(R)tremoveR(RR0R3tadd((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt_register_chainÈs
cCsZ|dkr|jƒ}n|}|jt||||ƒ|dkrV|jtƒndS(N(RRt_chainRR#(RR1R2R3R$R%((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR9ÐscCsZ|dkr|jƒ}n|}|jt||||ƒ|dkrV|jtƒndS(N(RRRVR R#R(RR1R2R3R$R%((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytremove_chainÜscCsO|j||ƒ|j|||ƒ||f}||jkoN||j|kS(N(RJRRR(RR1R2R3R0((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR'çs
cCs:|j||ƒ||f}||jkr6|j|SgS(N(RJR(RR1R2R0((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt
get_chainsîs
cCsXg}xK|jD]@}|\}}x+|j|D]}|j|||fƒq0WqW|S(N(RR)(RtrtkeyR1R2R3((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyRõscCs`|dkr|jƒ}n|}|jt||||||ƒ|dkr\|jtƒndS(N(RRt_ruleRR#(RR1R2R3R5R6R$R%((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR<þscCs`|dkr|jƒ}n|}|jt||||||ƒ|dkr\|jtƒndS(N(RRR[R R#R(RR1R2R3R5R6R$R%((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytremove_rule	scCsE|j||ƒ|||f}||jkoD||f|j|kS(N(RJR(RR1R2R3R5R6R4((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR*scCsI|j||ƒ|||f}||jkrEt|j|jƒƒSgS(N(RJRtlistRG(RR1R2R3R4((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt	get_ruless
c	Csmg}x`|jD]U}|\}}}x=|j|D].\}}|j||||t|ƒfƒq3WqW|S(N(RR)R](RRYRZR1R2R3R5R6((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR"s*cCsè|r™||jkr(tƒ|j|<n||j||<||jkrXi|j|<n||j|kr…|j||cd7<qäd|j||<nK|j||=t|j|ƒdkrÍ|j|=n|j||cd8<dS(Nii(RR+RR(Rtrule_idR4R5tenable((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt_register_rule*s
cCsPy|jj||ƒSWn2tk
rK}tj|ƒttj|ƒ‚nXdS(N(R	trulet	ExceptionRtdebug2RRtCOMMAND_FAILED(RR1R6tmsg((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytpassthrough>s

cCsz|r<||jkr%g|j|<n|j|j|ƒn:|j|j|ƒt|j|ƒdkrv|j|=ndS(Ni(RR)RSR(RR1R6R`((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt_register_passthroughFscCs]|dkr|jƒ}n|}|jt|t|ƒ|ƒ|dkrY|jtƒndS(N(RRt_passthroughRR]R#(RR1R6R$R%((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR=PscCs]|dkr|jƒ}n|}|jt|t|ƒ|ƒ|dkrY|jtƒndS(N(RRRiR R]R#R(RR1R6R$R%((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytremove_passthrough[scCs&||jko%t|ƒ|j|kS(N(Rttuple(RR1R6((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR,fscCsOg}xB|jD]7}x.|j|D]}|j|t|ƒfƒq$WqW|S(N(RR)R](RRYR1R6((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyRjs
!cCsGg}||jkrCx+|j|D]}|jt|ƒƒq#Wn|S(N(RR)R](RR1RYR6((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytget_passthroughsqs
N($t__name__t
__module__R
RR
RRRR!RR&R7R8R"RERJRRRUR9RWR'RXRR<R\R*R^RRaRgRhR=RjR,RRl(((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR&sB										'															
		cBs5eZd„Zd„Zd„Zd„Zd„ZRS(c	Cs`|j||ƒ|dkr;|jjj||||ƒn|}|dkrYtj}	n	tj}	||	kr‹||	|kr‹d|}n|||f}
||f}|rö|
|jkrN||j|
krNtt	j
d||||fƒ‚qNnX|
|jks||j|
kr=tt	jd||||fƒ‚n|j|
|}d}|
|jkrÑt
|j|
jƒƒ}
d}xL|t|
ƒkrÍ||
|krÍ||j|
|
|7}|d7}q…Wnd|g}|rÿ|d	|t|ƒg7}n|d
|g7}||7}|j||ƒ|j||
||ƒ|j|j||
||ƒdS(
NR@RAs	%s_directs"rule '%s' already is in '%s:%s:%s'srule '%s' is not in '%s:%s:%s'iis-ts-Is-D(sipv4sipv6(sipv4sipv6(RJR	RMtcreate_zone_base_by_chainRRFRRRRtALREADY_ENABLEDtNOT_ENABLEDRtsortedRGRR;R<Ratadd_fail(RR`R1R2R3R5R6R%RVt_CHAINSR4R_tindext	positionstjRb((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR[ysP
	
		(%
cCsb|j||ƒ|j|||ƒ||f}|r|||jkrÀ||j|krÀttjd|||fƒ‚qÀnD||jksž||j|krÀttjd|||fƒ‚nd|g}|râ|jdƒn
|jdƒ|j|ƒ|r!|dkr!|ddg7}n|j||ƒ|j	|||ƒ|j
|j	|||ƒdS(	Ns chain '%s' already is in '%s:%s'schain '%s' is not in '%s:%s's-ts-Ns-XRBs-PtRETURN(RJRRRRRRpRqR)R<RURs(RRTR1R2R3R%R0Rb((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyRV×s0		

cCs|j|ƒt|ƒ}|rc||jkr¤||j|kr¤ttjd||fƒ‚q¤nA||jks…||j|kr¤ttjd||fƒ‚n|rÂ|j|ƒ|d
kr¹d}y|jdƒ}Wnt	k
rïn(Xt
|ƒ|dkr||d}nd}xnddd	d
ddgD]T}	y|j|	ƒ}Wnt	k
rbq6Xt
|ƒ|dkr6||d}q6q6W|r¹|r¹|jj
j|||ƒq¹n|}
n|j|ƒ}
|j||
ƒ|j|||ƒ|j|j|||ƒdS(Nspassthrough '%s', '%s'R@RAtfilters-tis-As--appends-Is--inserts-Ns--new-chain(sipv4sipv6(RERkRRRRpRqtcheck_passthroughRut
ValueErrorRRR	RMRotreverse_passthroughR<RhRs(RR`R1R6R%t
tuple_argsR2tiR3toptt_args((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyRi÷sN
		

	
	cCsÞt|ƒ}tddddddddd	d
ddd
dddddddgƒ}t||@ƒdkr‘ttjdt||@ƒdƒ‚ntddddddgƒ}t||@ƒdkrÚttjdƒ‚ndS(s^ Check if passthough rule is valid (only add, insert and new chain
        rules are allowed) s-Cs--checks-Ds--deletes-Rs	--replaces-Ls--lists-Ss--list-ruless-Fs--flushs-Zs--zeros-Xs--delete-chains-Ps--policys-Es--rename-chainisarg '%s' is not alloweds-As--appends-Is--inserts-Ns--new-chainsno '-A', '-I' or '-N' argN(tsetRRRtINVALID_PASSTHROUGHR](RR6tnot_allowedtneeded((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyRz(s*				cCsáidd6dd6dd6dd6dd6d	d
6}|}x‘|D]‰}y|j|ƒ}Wntk
rmq>nX|dkr¸yt||dƒWntk
r£q¸X|j|dƒn||||<|SWttjdƒ‚d
S(s Reverse valid passthough rule s-Ds-As--deletes--appends-Is--inserts-Xs-Ns--delete-chains--new-chainisno '-A', '-I' or '-N' argN(s-Is--insert(RuR{tinttpopRRR‚(RR6treplace_argstret_argstxtidx((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR|Hs.



	(RmRnR[RVRiRzR|(((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyRxs
	^	 	1	 N(t__all__tfirewall.fw_typest
firewall.coreRRtfirewall.core.fw_transactionRtfirewall.core.loggerRtfirewallRtfirewall.errorsRtobjectRR(((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt<module>s	
ÿS

OHA YOOOO