Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/dist-packages/ufw/
Upload File :
Current File : //usr/lib/python2.7/dist-packages/ufw/parser.pyc


^Oc@sddlZddlZddlmZddlmZdfdYZdefdYZdefd	YZd
efdYZ	defd
YZ
defdYZdefdYZdefdYZ
dfdYZdfdYZdS(iN(tUFWError(tdebugt
UFWCommandcBs)eZdZdZdZdZRS(s"Generic class for parser commands.cCsA||_g|_||jkr4|jj|n||_dS(N(tcommandttypestappendttype(tselfRR((s./usr/lib/python2.7/dist-packages/ufw/parser.pyt__init__,s
		cCs8t|dkrtnt|dj}|S(Nii(tlent
ValueErrortUFWParserResponsetlower(Rtargvtr((s./usr/lib/python2.7/dist-packages/ufw/parser.pytparse3scCstddS(Ns!UFWCommand.help: need to override(R(Rtargs((s./usr/lib/python2.7/dist-packages/ufw/parser.pythelp;s(t__name__t
__module__t__doc__RRR(((s./usr/lib/python2.7/dist-packages/ufw/parser.pyR*s		tUFWCommandRulecBs5eZdZdZdZdZeeZRS(s#Class for parsing ufw rule commandscCsd}tj|||dS(Ntrule(RR(RRR((s./usr/lib/python2.7/dist-packages/ufw/parser.pyR@sc-CsSd}d}d}d}d}d}d}d}	d}
t}t|dkrx|djdkrx|j|dnt|dkr|djdkr$t|dkr$t}|j|dd}yt|d}Wntk
r|d}nX|dkrtd|}
|
Snz|djdkrt|d	krXt	n|d}	|	d
krt
d|	}t|n|d=|d=n|d}n|dkr|j}|j
d|n|dkr|d
kr|dkr|dkrt	nt|}|dkr3t	nd}|dkr|djdksq|djdkr|dj}n|dkr|ddkr|djdks|djdkr|dj}|d=t|}nt}|dkr|jddks.|jddkrt
d}|djdkru|djdkrut|n|dks|djdkrt|n|d=t|}t}nd}|r|dkr|djdks|djdkrd}nA|dkrP|djdksG|djdkrPd}n|dkr||j}
||=t|}nd|krt
d}t|nd|krt
d}t|n|dks|dkrt	n|}|
dkr|d|
7}ntjj|ddd|}|rG||_n7|	dkr~y|j|	Wq~tk
rzq~Xn|dkr)tjj|drytjj|dWqtk
rd}|d|_|j|ddqXn|jdkry tjj|d\}}Wn)tk
rPt
d}t|nXtjd |sd!|ks{d"|krt
d#}t|n|}ny'|j||j|dd}Wqtk
rt
d}t|qXn|jdEkrZ
t
d'|j}t|qZ
n1|dddkrXt
d(}t|nd)|krd*|krd|krd|krt
d+}t|nd,d)d*d-d.ddg}|jd*dks{|jd)dks{|jd,dks{|jd-dks{|jddks{|jddks{|jd.dks{|jd.dkr|jd,dkrt
d/}t|nd}d}x+|D]#}|ddkr|||krt
d0||}t|n|d,kr\	|d|krA	y|j||dWqY	tk
r=	qY	Xqt
d1}t|nf|dkst	|dkr
|d|kr	yR|dkr	|jd||dn'|dkr	|jd||dnWq
tk
r	q
Xqt
d2|}t|n|d)kr
|d|kr
yd||dj}|dkr]
d3}d}n$tjj|d4r{
d5}nd6}|j |Wntk
r
nXd7}qt
d8}t|n|d*kr|d|krjyd||dj}|dkrd3}d}n$tjj|d4r6d5}nd6}|j!|Wntk
r`nXd}qt
d9}t|n=|d-ks|d.kr|d|kr|dkrt
d:|}t|n||d}|d.kr|d7kr
||_"qy||_nctjd |syd!|ks@d"|kr[t
d#}t|n|d7krp|}qy|}ny|j||Wqtk
rqXqt
d;}t|n|d7}qW|dkr|dkrd}ni|dkr0
|dkr0
||kr0
t
d<}t|n*|dkrE
|}n|dkrZ
|}n|dksr
|dkrd}|dkr
ytjj|}Wq
tk
r
t
d=}t|q
Xn|dkr|dks
|dkr2ytjj|}Wqtk
r.t
d=}t|qXqytjj|}Wn)tk
rst
d=}t|nX|dks||kr|}q|dkrqt
d>}t|n|jdkr|j|q|dkr|j|krt
d?|j}t|qn|rs|jdkrs|j"dksQ|jdkrst
d@|j}t|n|jd$kr|d5krt
dA|j}t|n&|dkrt#dB|jd6}n|j$dks|j%dkrt
d'|j}t|qnt|}
|j&|
j'dC<||
j'd<||
j'dD<|
S(FNttanyiRtdeleteis	delete-%dtinsertit0s#Cannot insert rule at position '%s'tallowtdenytrejecttlimititintouttonsInvalid interface clauseitlogslog-allsOption 'log' not allowed heres!Option 'log-all' not allowed herei
t_t	directiontbothtdstsBad ports^\d([0-9,:]*\d+)*$t,t:sPort ranges must be numerictipv6tesptahsInvalid port with protocol '%s'sWrong number of argumentstfromttosNeed 'to' or 'from' clausetprototporttappsImproper rule syntaxsInvalid token '%s'sInvalid 'proto' clausesInvalid '%s' clauses	0.0.0.0/0t6tv6tv4tsrcsInvalid 'from' clausesInvalid 'to' clausesNeed 'from' or 'to' with '%s'sInvalid 'port' clauses%Mixed IP versions for 'from' and 'to'sCould not find protocolsProtocol mismatch (from/to)s,Protocol mismatch with specified protocol %ss3Improper rule syntax ('%s' specified with app rule)s'Invalid IPv6 address with protocol '%s's*Adjusting iptype to 'v4' for protocol '%s'Rtiptype(R*R+R,((tFalseR	RtremovetTruetNonetintt	ExceptionRR
R$RRRtcounttufwtcommontUFWRuletset_positiontapplicationstvalid_profile_nametutiltget_services_prototdapptset_porttparse_port_prototretmatchtset_protocoltprotocolt
set_interfacet
valid_addresstset_srctset_dsttsappRtdporttsportRtdata(RR
tactionRRt	from_typetto_typetfrom_servicet
to_servicet
insert_postlogtypeR8trule_numRterr_msgtnargstrule_directiont
has_interfacetlog_idxtrule_actionR0R/tkeystitloctargtfaddrtsaddrttmp((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRDsB((

	

	$"26,"	(	"		



 
	


	
$*
 



		
			
				

			


		
	
	
		


cCs|j}|jdks'|jdkr0|jdksE|jdkr0|jdkr0|jdkr0|jdkr0|jdkr0|jdkr0|jdkr|d|j7}n|j	dkr|d|j	7}n|j
dkr|d|j
7}q|d|j7}|jdkr|d|j7}qn|jdkrS|d|j7}n|jdkrv|d	|j7}n|j	dkr|d|j	7}nxd
dgD]}|d
kr|j}|j}|j}d}n!|j}|j}|j
}d
}|dks|dkrd}n|dkrE|dkrE|dkrEq|d||f7}|dkrv|d|7}q|dkr|d|7}qqW||jkr|d7}n|jdkr|j
dkr|jdkr|d|j7}n|S(sGet command string for rules	0.0.0.0/0s::/0RRR!s %ss/%ss	 in on %ss
 out on %sR5R'R-R.s %s %ss app %ss port %ss to anys	 proto %s(RUR'R5RSRQtinterface_int
interface_outRRR%R[RFRL(RtresRdReR0R1tdir((s./usr/lib/python2.7/dist-packages/ufw/parser.pytget_commands^									$
-(RRRRRRntstaticmethod(((s./usr/lib/python2.7/dist-packages/ufw/parser.pyR>s		k	?t
UFWCommandAppcBs eZdZdZdZRS(s*Class for parsing ufw application commandscCsd}tj|||dS(NR1(RR(RRR((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRscCsd}d}t}|ddkr.tn|d=t|}|dj}|dksi|dkr|dkr|ddkrt}|jdt|}n|d	krtnt|djd
}|r|d7}qn|dkr|dkrtn|d
kr|d	kr6tn|djdkrUd}q|djdkrtd}q|djdkrd}q|djdkrd}qtnt|}|j	|j
d<||j
d<|S(sParse applications command.RiR1tinfotupdateiis	--add-newis[']s	-with-newtlisttdefaultRs
default-allowRsdefault-denyRsdefault-rejecttskipsdefault-skipRtname(R7R
R	RR9R8tstrtstripRRRT(RR
RvRUtaddnewR^R((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRsH
				
(RRRRR(((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRps	tUFWCommandBasiccBseZdZdZRS(s$Class for parsing ufw basic commandscCsd}tj|||dS(Ntbasic(RR(RRR((s./usr/lib/python2.7/dist-packages/ufw/parser.pyR-s(RRRR(((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRz+stUFWCommandDefaultcBs eZdZdZdZRS(s&Class for parsing ufw default commandscCsd}tj|||dS(NRt(RR(RRR((s./usr/lib/python2.7/dist-packages/ufw/parser.pyR3scCsut|dkrtnd}d}t|dkr|djdkr|djdkr|djdkr|djdkrtn|djjdrd}q|djjdrd}q|dj}n|d	jd
krd}nG|d	jdkr5d
}n(|d	jdkrTd}n	t|d|7}t|S(NiRtincomingtinputtoutputtoutgoingR R!iRsdefault-denyRs
default-allowRsdefault-rejects-%s(R	R
Rt
startswithR(RR
RUR%((s./usr/lib/python2.7/dist-packages/ufw/parser.pyR7s0						(RRRRR(((s./usr/lib/python2.7/dist-packages/ufw/parser.pyR|1s	tUFWCommandLoggingcBs eZdZdZdZRS(s&Class for parsing ufw logging commandscCsd}tj|||dS(Ntlogging(RR(RRR((s./usr/lib/python2.7/dist-packages/ufw/parser.pyR\scCsd}t|dkr$tn|djdkrCd}n|djdks|djdks|djdks|djd	ks|djd
krd}|djdkr|d|dj7}qn	tt|S(
NRiitoffslogging-offR"tlowtmediumthightfulls
logging-onR$(R	R
RR(RR
RU((s./usr/lib/python2.7/dist-packages/ufw/parser.pyR`s	,,	(RRRRR(((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRZs	tUFWCommandStatuscBs eZdZdZdZRS(s%Class for parsing ufw status commandscCsd}tj|||dS(Ntstatus(RR(RRR((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRsscCstj||}t|dkr0d|_nbt|dkr|djdkrdd|_q|djdkrd|_qtn|S(NiRtverbosesstatus-verbosetnumberedsstatus-numbered(RRR	RURR
(RR
R((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRws(RRRRR(((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRqs	tUFWCommandShowcBs eZdZdZdZRS(s%Class for parsing ufw status commandscCsd}tj|||dS(Ntshow(RR(RRR((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRscCsd}t|dkr$tn|djdkrCd}n|djdkrbd}n|djdkrd}n|djd	krd
}nf|djdkrd}nG|djd
krd}n(|djdkrd}n	tt|S(NRitrawsshow-rawsbefore-rulessshow-befores
user-ruless	show-usersafter-ruless
show-afters
logging-rulessshow-loggingtbuiltinss
show-builtinst	listeningsshow-listening(R	R
RR(RR
RU((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRs&								(RRRRR(((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRs	RcBs eZdZdZdZRS(sClass for ufw parser responsecCs.|j|_t|_t|_i|_dS(N(RRUR7tdryruntforceRT(RRU((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRs		cCsVd|j}x2|jjD]!}|d||j|f7}qW|d7}t|S(Nsaction='%s's,%s='%s's
(RURTRctrepr(RtsRd((s./usr/lib/python2.7/dist-packages/ufw/parser.pyt__str__s


(RRRRR(((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRs	t	UFWParsercBs2eZdZdZdZdZdZRS(sClass for ufw parsercCs
i|_dS(N(tcommands(R((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRscCs\|j|jjkr'tn|j|j|jkrRtn|jS(s=Return command if it is allowed, otherwise raise an exception(RRRcR
(RRtcmd((s./usr/lib/python2.7/dist-packages/ufw/parser.pytallowed_commands
c
Cst}t|dkrH|djdkrHt}|j|dnt}t|dkr|djdks|djdkrt}|j|dnd}d}|dj}t|dkr%||jjkr%|dj|j|jkr%|}|dj}nR|}x4|jjD]#}||j|kr;|}Pq;q;W|dkrwd}ny|j||}Wn0tk
rt	d|}	t
|	nX|j||}|j|}
||
_||
_
|
S(	s(Parse command. Returns a UFWParserActionis	--dry-runs--forces-fRiRsInvalid command '%s'(R7R	RR9R8RRcRR<R$RRRR(RRRRRRRiRdRUR]tresponse((s./usr/lib/python2.7/dist-packages/ufw/parser.pyt
parse_commandsD(('#	
		cCs|jdks|jdkr.d|j}n
d|j}|jj|jsci|j|j<n|j|jj|rtd|}t|n||j|j|<dS(s"Register a command with the parserRs%ssCommand '%s' already existsN(RR:RRthas_keyR$R(RtctkeyR]((s./usr/lib/python2.7/dist-packages/ufw/parser.pytregister_commands
(RRRRRRR(((s./usr/lib/python2.7/dist-packages/ufw/parser.pyRs
		
	-(RItufw.utilR>R?RRRRRpRzR|RRRRR(((s./usr/lib/python2.7/dist-packages/ufw/parser.pyt<module>%s;)