Viewing File: /usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyc

ó
 c‰`c@s“dgZddlmZddlmZddlmZddlmZddlm	Z	ddl
mZddlm
Z
defd	„ƒYZd
S(tFirewallDirectiÿÿÿÿ(tLastUpdatedOrderedDict(t	ipXtables(tebtables(tFirewallTransaction(tlog(terrors(t
FirewallErrorcBsdeZd„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#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(R
tobj((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(R
tuse_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_ruleRRtquery_passthrough(R
tchainstrulest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(R
tconfR#R$RRRR.R/R0R1terrorR2R3R4((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(R
R/tipvs((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>R?s'%s' not in '%s'(sipv4sipv6(RCRtBUILT_IN_CHAINStkeysRRRt
INVALID_TABLE(R
R/R0ttables((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt_check_ipv_table¬s
	cCsõ|dkrJtj|}|jjr.i}qd|jj|ƒj|}ntj|}tj|}||kr‰tt	j
d|ƒ‚n||kr®tt	j
d|ƒ‚n|dkrñ|jjj|ƒdk	rñtt	jd|ƒ‚qñndS(NR>R?schain '%s' is built-in chainschain '%s' is reservedsChain '%s' is reserved(sipv4sipv6(sipv4sipv6(RRDRtnftables_enabledtget_direct_backend_by_ipvt
our_chainsRt
OUR_CHAINSRRt
BUILTIN_CHAINtzonetzone_from_chainRt
INVALID_CHAIN(R
R/R0R1tbuilt_in_chainsRK((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(R
R.R1tadd((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"(R
R/R0R1R#R$((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR7ÓscCsZ|dkr|jƒ}n|}|jt||||ƒ|dkrV|jtƒndS(N(RRRVRR"R(R
R/R0R1R#R$((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytremove_chainßscCsO|j||ƒ|j|||ƒ||f}||jkoN||j|kS(N(RHRRR(R
R/R0R1R.((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR&ês
cCs:|j||ƒ||f}||jkr6|j|SgS(N(RHR(R
R/R0R.((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((R
trtkeyR/R0R1((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyRøscCs`|dkr|jƒ}n|}|jt||||||ƒ|dkr\|jtƒndS(N(RRt_ruleRR"(R
R/R0R1R3R4R#R$((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR:scCs`|dkr|jƒ}n|}|jt||||||ƒ|dkr\|jtƒndS(N(RRR[RR"R(R
R/R0R1R3R4R#R$((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytremove_rulescCsE|j||ƒ|||f}||jkoD||f|j|kS(N(RHR(R
R/R0R1R3R4R2((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR)scCsI|j||ƒ|||f}||jkrEt|j|jƒƒSgS(N(RHRtlistRE(R
R/R0R1R2((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](R
RYRZR/R0R1R3R4((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(RRRR(R
trule_idR2R3tenable((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt_register_rule-s
cCs_y&|jj|jj|ƒj|ƒSWn2tk
rZ}tj|ƒttj	|ƒ‚nXdS(N(
RtruleRJtnamet	ExceptionRtdebug2RRtCOMMAND_FAILED(R
R/R4tmsg((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytpassthroughAs
&
cCsz|r<||jkr%g|j|<n|j|j|ƒn:|j|j|ƒt|j|ƒdkrv|j|=ndS(Ni(RR(RSR(R
R/R4R`((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt_register_passthroughIscCs]|dkr|jƒ}n|}|jt|t|ƒ|ƒ|dkrY|jtƒndS(N(RRt_passthroughRR]R"(R
R/R4R#R$((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR;SscCs]|dkr|jƒ}n|}|jt|t|ƒ|ƒ|dkrY|jtƒndS(N(RRRjRR]R"R(R
R/R4R#R$((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytremove_passthrough^scCs&||jko%t|ƒ|j|kS(N(Rttuple(R
R/R4((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR*iscCsOg}xB|jD]7}x.|j|D]}|j|t|ƒfƒq$WqW|S(N(RR(R](R
RYR/R4((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyRms
!cCsGg}||jkrCx+|j|D]}|jt|ƒƒq#Wn|S(N(RR(R](R
R/RYR4((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pytget_passthroughsts
cCss|j||ƒ|jjrH|d
krH|jjj||||ƒn|}|jj|ƒ}	|jjr|	j|||ƒrd|}nB|jjrÑ|ddkrÑ|	j|||d ƒrÑ|d }n|||f}
||f}|r<|
|jkr”||j|
kr”tt	j
d||||fƒ‚q”nX|
|jks^||j|
krƒtt	jd||||fƒ‚n|j|
|}d}|
|jkrt
|j|
jƒƒ}
d	}xL|t|
ƒkr||
|kr||j|
|
|7}|d7}qËWn|j|	|	j|||||ƒƒ|j||
||ƒ|j|j||
||ƒdS(NR>R?s	%s_directiùÿÿÿt_directs"rule '%s' already is in '%s:%s:%s'srule '%s' is not in '%s:%s:%s'ii(sipv4sipv6(RHRRIRNtcreate_zone_base_by_chainRJtis_chain_builtinRRRtALREADY_ENABLEDtNOT_ENABLEDRtsortedRERR:t
build_ruleRatadd_fail(R
R`R/R0R1R3R4R$RVtbackendR2R_tindext	positionstj((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR[{sL




		(%%cCs"|j||ƒ|j|||ƒ||f}|r|||jkrÀ||j|krÀttjd|||fƒ‚qÀnD||jksž||j|krÀttjd|||fƒ‚n|jj|ƒ}|j	||j
|||ƒƒ|j|||ƒ|j|j|||ƒdS(Ns chain '%s' already is in '%s:%s'schain '%s' is not in '%s:%s'(
RHRRRRRRqRrRRJt	add_rulestbuild_chain_rulesRURu(R
RTR/R0R1R$R.Rv((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyRVÚs$		c
Csn|j|ƒt|ƒ}|rc||jkr¤||j|kr¤ttjd||fƒ‚q¤nA||jks…||j|kr¤ttjd||fƒ‚n|jj|ƒ}|r|j	|ƒ|dkr|j
|ƒ\}}|r|r|jjj|||ƒqn|}	n|j
|ƒ}	|j||	ƒ|j|||ƒ|j|j|||ƒdS(Nspassthrough '%s', '%s'R>R?(sipv4sipv6(RCRlRRRRqRrRRJtcheck_passthroughtpassthrough_parse_table_chainRNRotreverse_passthroughR:RiRu(
R
R`R/R4R$t
tuple_argsRvR0R1t_args((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyRjòs0
		
	N('t__name__t
__module__RRR	RRRR RR%R5R6R!RCRHRRRUR7RWR&RXRR:R\R)R^RRaRhRiR;RkR*RRmR[RVRj(((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyR&sH										'															
				_	N(t__all__tfirewall.fw_typesRt
firewall.coreRRtfirewall.core.fw_transactionRtfirewall.core.loggerRtfirewallRtfirewall.errorsRtobjectR(((s;/usr/lib/python2.7/site-packages/firewall/core/fw_direct.pyt<module>s	
Back to Directory File Manager