%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/2/root/lib/python2.7/site-packages/ufw/
Upload File :
Create Path :
Current File : //proc/2/root/lib/python2.7/site-packages/ufw/backend.pyo

�
V�Vc@s�dZddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZmZddl
mZmZddlZddd��YZdS(s&backend.py: interface for ufw backendsi����N(terrortwarntdebugt	_findpath(tUFWErrortUFWRulet
UFWBackendcBseZdZdddd�Zd�Zd�Zd�Zded�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 RS(sInterface for backendscCs�d|_||_||_g|_g|_ttjj	|�}it
jj|d�d6t
jj|d�d6t
jj|d�d6|_
|dkr�|j
j|�nidd6d	d
6dd6d
d6dd6|_tjj|_|j�|j�|j�tjj|j
d�|_t
jjtjjd�|_t
jjtjjd�|_t
jjtjjd�|_t
jjtjjd�|_ytjj|j�|_Wn)tk
r�t d�}t!|��nXd|_"dS(Nsdefault/ufwtdefaultssufw/ufw.conftconfsufw/applications.dtappsitoffidtlowi�tmediumi,thighi�tfulltiptablessiptables-restoret	ip6tablessip6tables-restores#Couldn't determine iptables version(#tNoneRtnametdryruntrulestrules6Rtufwtcommont
config_dirtostpathtjointfilestupdatet	loglevelst	do_checkst
_do_checkst
_get_defaultst_read_rulestapplicationstget_profilestprofilestiptables_dirRtiptables_restoreRtip6tables_restoretutiltget_iptables_versiontiptables_versiontOSErrort_Rtcaps(tselfRRtextra_filestrootdirtdatadirtpterr_msg((s//usr/lib/python2.7/site-packages/ufw/backend.pyt__init__sB					





cCsz|jdkrdSi|_i|jd<t|jdd<t|jdd<|jrvtj�dkrv|jrvytj	j
|j�}Wn!tk
r�}t
d|�nXd|kr�d|kr�t|jdd<nt|jdd<|j�rvytj	j
|j�}Wn!tk
r2}t
d|�nXd|kr_d|kr_t|jdd<qst|jdd<qvndS(	sgInitialize the capabilities database. This needs to be called
           before accessing the database.Ntlimitt4t6isinitcaps
%ss
recent-sets
recent-update(R.RtTruetFalseRRtgetuidRRR)tget_netfilter_capabilitiesRR,Rtuse_ipv6R(R/tnf_capste((s//usr/lib/python2.7/site-packages/ufw/backend.pytinitcapsKs,	
%cCs*d|jkr&|jddkr&tStS(s!Is firewall configured as enabledtenabledtyes(RR9R:(R/((s//usr/lib/python2.7/site-packages/ufw/backend.pyt
is_enabledrscCs<d|jkr8|jddkr8tjjd�r8tStS(s"Is firewall configured to use IPv6tipv6RBs/proc/sys/net/ipv6(RRRtexistsR9R:(R/((s//usr/lib/python2.7/site-packages/ufw/backend.pyR=ys
tinputc	Csgd|d}d}|j|dkr0d}n"|j|dkrLd}nd}|rc|dkrct}td	�}tjjd
dg�\}}|dkr�t|��nd
|kr�t}n|j�rQtjjd
dg�\}}|dkrd
|krt}ntjjd
dg�\}}|dkrQd
|krQt}qQn|scd}qcn|S(s.Get default policy for specified primary chaintdefault_t_policyttaccepttallowtrejecttdenytforwardsproblem running sysctltsysctlsnet.ipv4.ip_forwardit1s net.ipv6.conf.default.forwardingsnet.ipv6.conf.all.forwardingtdisabled(	RR:R-RR)tcmdRR9R=(	R/tprimaryt
check_forwardtpolicytrstrRAR4trctout((s//usr/lib/python2.7/site-packages/ufw/backend.pyt_get_default_policy�s2				cCs�|js#td�}t|�tStj�tj�krVtd�}t|��ntj�tj	�kr�td�}t|��ntj�}|dkr�td�}t|��ni}i}i}g}tj
j|jd�std�|jd}t|�net
jd�}xStj|jd�D];}	|j|	�s7|jtj
j|jd|	��q7q7Wx�t|jj��tj
jtjd�g|D]|}
|
jd	�s�d
tj�|
f}
nxKtr%td|
�|
|jdkr tj
j|jd�r Pny tj|
�}|tj}Wn@tk
rotd�|
}t|��ntk
r��nXd
}
d}t}yEt j!|j"�d|
ks�t j!|j"�d|kr�t}nWnt#k
r�nX|j"dkr[|r[|
|kr[td�it$|�d6|
d6t$|j"�d6}t|�t||
<n|tj%@r�|
|kr�td�|
}t|�t||
<n|tj&@r�|
|kr�td�|
}t|�t||
<n|
d	kr�Pn|
}tj
j'|
�}
|
s�tt(j)d|��q�q�Wq�Wxk|jD]`}|dkr4tj
j*|j|�r4td�i|d6|j|d6}t|��q4q4WdS(s8Perform basic security checks:
        is setuid or setgid (for non-Linux systems)
        checks that script is owned by root
        checks that every component in absolute path are owned by root
        warn if script is group writable
        warn if part of script path is group writable

        Doing this at the beginning causes a race condition with later
        operations that don't do these checks.  However, if the user running
        this script is root, then need to be root to exploit the race
        condition (and you are hosed anyway...)
        sChecks disableds%ERROR: this script should not be SUIDs%ERROR: this script should not be SGIDis&You need to be root to run this scriptR	s'%s' does not exists^\.t/s%s/%ss	Checking sCouldn't stat '%s'tclickpkgt	snappypkgs4uid is %(uid)s but '%(path)s' is owned by %(st_uid)stuidRtst_uids%s is world writable!s%s is group writable!sCould not find parent for '%s's&'%(f)s' file '%(name)s' does not existtfRN(+RR-RR9RR;tgeteuidRtgetgidtgetegidRtisdirRtretcompiletlistdirtsearchtappendRtlisttvaluestabspathtsystargvt
startswithtgetcwdRtstattST_MODER,t	ExceptionR:tpwdtgetpwuidR^tKeyErrortstrtS_IWOTHtS_IWGRPtdirnameterrnotENOENTtisfile(R/R4R]twarned_world_writetwarned_group_writetwarned_ownerR%twarn_msgtpattprofileRtstatinfotmodet
click_usert	snap_usertis_unpack_usert	last_pathR_((s//usr/lib/python2.7/site-packages/ufw/backend.pyR �s�	

*,	



	





	&	c
Cs�i|_x�|jd|jdgD]�}ytjj|�}Wn-tk
rotd�|}t|��nXtj	d�}xb|D]Z}|j
|�r�tjd|j��}|dj
�jd�|j|dj
�<q�q�W|j�q$Wd	d
dg}x�dd
dgD]�}d||jkrItd|�}t|��n|jd|}	|	|krtdi|	d6|d6�}t|��qqWdS(s#Get all settings from defaults fileRRsCouldn't open '%s' for readings^\w+="?\w+"?t=is"'iRJtdropRLRFtoutputRNsdefault_%s_policysMissing policy for '%s's+Invalid policy '%(policy)s' for '%(chain)s'RUtchainN(RRRR)topen_file_readRrR-RRdReRgtsplittstriptlowertclose(
R/R_torigR4R�tlinettmptpoliciestcR3((s//usr/lib/python2.7/site-packages/ufw/backend.pyR!s.	!

1c
Csrtjd|�s-td�}t|��ntj|tj�satd|�}t|��ntjj	|�}|d}t
}tjd|d�}x\|dD]P}	|j|	�r�tjj
||d|d�t}q�tjj
||	�q�W|s!tjj
||d|d�nytjj|�Wntk
rK�nX|j�jd	�|j|j�<d
S(sSets option in defaults files^[\w_]+$sInvalid options'%s' is not writableR�t^R�R�s
s"'N(RdtmatchR-RRtaccesstW_OKRR)t
open_filesR:ReRgt
write_to_fileR9tclose_filesRrR�R�R(
R/tfntopttvalueR4tfnstfdtfoundR�R�((s//usr/lib/python2.7/site-packages/ufw/backend.pytset_default3s,
	"
cCs�|js�|dkr2|j|jddd�q�|dkr[|j|jddd�q�|dkr�|j|jddd�q�|d	kr�|j|jddd
�q�td�|}t|��ntd�|}|S(
s+Sets default application policy of firewallRKRtDEFAULT_APPLICATION_POLICYs"ACCEPT"RMs"DROP"RLs"REJECT"tskips"SKIP"sUnsupported policy '%s's*Default application policy changed to '%s'(RR�RR-R(R/RUR4RV((s//usr/lib/python2.7/site-packages/ufw/backend.pytset_default_application_policyWs*	



cCsVg}t|jj��}|j|kr�|j|kr�tjj|j|j�}tjj|j|j�}x�|D]n}|j�}d|_	|j
dd�tjj|�\}}	|j
|	�|j
|d�|j	|_	|j|jkrPd|_tjj|�\}}	|j
|	�|j
|d�|j|_|j|�qxx�|D]�}
|j�}d|_tjj|
�\}}	|j
|	�|j
|d�|jdkr�|j
|j�n|j|_|j|�qWWqxWn8|j|kr�x&tjj|j|j�D]i}|j�}d|_tjj|�\}}	|j
|	�|j
|d�|j|_|j|�qWn�|j|kr%x�tjj|j|j�D]i}|j�}d|_	tjj|�\}}	|j
|	�|j
|d�|j	|_	|j|�q�Wnt|�dkrRtd�}
t|
��n|S(s4Return a list of UFWRules based on the template ruleRItanytsrctdstis&No rules found for application profile(RiR%tkeystdporttsportRR#t	get_portstdup_ruletdapptset_portR)tparse_port_prototset_protocoltsappRhtprotocoltlenR-R(R/ttemplateRt
profile_namestdportstsportstiR�tporttprototjtruleR3R4((s//usr/lib/python2.7/site-packages/ufw/backend.pytget_app_rules_from_templatersh
	
	

	
#	
#	
c
Cs�g}g}d}d}t}x<|j|jD]*}|j|ksS|j|kr3|j�}||krqq/qY|j�}	|	jd�|	jdkr�|	j|	jd�n|	jdkr�|	j|	jd�n|j	|	�}
x>|
D]6}|j
�|jr|j|�q�|j|�q�W|}t
}q/|jrL|j|�q/|j|�q/W|r�||_||_|td�|7}y|jt�|jt
�Wq�tk
r�td�}t|��q�Xn||fS(s�Update rule for profile in place. Returns result string and bool
           on whether or not the profile is used in the current ruleset.
        RIR�R�R�sRules updated for profile '%s's!Couldn't update application rules(R:RRR�R�t
get_app_tupleR�R�R�R�t	normalizetv6RhR9R-t_write_rulesRrR(
R/R�t
updated_rulestupdated_rules6t
last_tupleRVtupdated_profiletrttuplR�t
new_app_rulestnew_rR4((s//usr/lib/python2.7/site-packages/ufw/backend.pytupdate_app_rule�sN
	

					

cCs�||jkr|Sd}d}xHt|jj��D]1}|j�|j�kr5|}|d7}q5q5Wd||f}t|�|dkr�|S|dkr�td�|}ntd�|}t|��dS(s2Find the application profile name for profile_nameRIiis'%d' matches for '%s's>Found multiple matches for '%s'. Please use exact profile names&Could not find a profile matching '%s'N(R%RiR�R�RR-R(R/tprofile_nameR�tmatchestnt	debug_msgR4((s//usr/lib/python2.7/site-packages/ufw/backend.pytfind_application_name�s$
	
	cCs�|r'|t|j�kr't��n|rO|t|j�krOt��n|dkrgt��ng}|r|j}n	|j}i}d}x�t|�D]r\}}||kr�Pnd}|jdks�|jdkr�|j�}||kr|d7}qt||<q�q�Wg}|rW|j}|j|d|j	�}	|	j
t�n1|j}|j|d|j	�}	|	j
t�d}
x4|D],}tj
||	�dkr�|
S|
d7}
q�WdS(s Return the absolute position in the other list of the rule with the
	   user position of the given list. For example, find_other_position(4,
	   True) will return the absolute position of the rule in the ipv4 list
           matching the user specified '4' rule in the ipv6 list.
        iiRI(R�Rt
ValueErrorRt	enumerateR�R�R�R9R�tset_v6R:RR�(R/tpositionR�Rt	app_rulesttuple_offsetR�R�R�t
match_ruletcount((s//usr/lib/python2.7/site-packages/ufw/backend.pytfind_other_positionsF	
		

cCs�d}td�}d|jksC|jdt|jj��kr\d}|td�7}nB|j|jd}|dkr�|d7}n|d|jd7}||fS(s"Gets current log level of firewallis	Logging: tlogleveli����tunknownR
son (%s)(R-RRiRR�(R/tlevelRV((s//usr/lib/python2.7/site-packages/ufw/backend.pytget_loglevelHs"
cCs�|t|jj��dgkrAtd�|}t|��n|}|dkr�d|jksu|jddkr~d}q�|jd}n|j|jdd|�|j|�|dkr�td�Std	�Sd
S(sSets log level of firewalltonsInvalid log level '%s'R�R
RRtLOGLEVELsLogging disabledsLogging enabledN(	RiRR�R-RRR�Rtupdate_logging(R/R�R4t	new_level((s//usr/lib/python2.7/site-packages/ufw/backend.pytset_loglevelXs"	

cCs|j|jS(sReturn list of all rules(RR(R/((s//usr/lib/python2.7/site-packages/ufw/backend.pyt	get_rulesnscCs�g}|r|j}n	|j}d}i}xu|D]m}d}|jdks^|jdkr�|j�}||kr�td|�q4q�t||<n|d7}q4W|S(s/Return number of ufw rules (not iptables rules)iRIsSkipping found tuple '%s'i(RRR�R�R�RR9(R/R�RR�R�R�R�((s//usr/lib/python2.7/site-packages/ufw/backend.pytget_rules_countrs 	

cCs�|j�}d}i}x�|D]�}d}|jdksI|jdkr�|j�}||krutd|�qq�t||<n|t|�kr�|S|d7}qWdS(s:Return rule specified by number seen via "status numbered"iRIsSkipping found tuple '%s'N(R�R�R�R�RR9tintR(R/tnumRR�R�R�R�((s//usr/lib/python2.7/site-packages/ufw/backend.pytget_rule_by_number�s

cCs\g}d}xI|j�D];}|d7}|j|�}|dkr|j|�qqW|S(smSee if there is a matching rule in the existing ruleset. Note this
           does not group rules by tuples.ii(R�tfuzzy_dst_matchRh(R/R�tmatchedR�R�tret((s//usr/lib/python2.7/site-packages/ufw/backend.pytget_matching�s
cCstd��dS(s*Set default policy for specified directions/UFWBackend.set_default_policy: need to overrideN(R(R/RUt	direction((s//usr/lib/python2.7/site-packages/ufw/backend.pytset_default_policy�scCstd��dS(sGet status of running firewalls,UFWBackend.get_running_raw: need to overrideN(R(R/t
rules_type((s//usr/lib/python2.7/site-packages/ufw/backend.pytget_running_raw�scCstd��dS(sGet managed ruless'UFWBackend.get_status: need to overrideN(R(R/tverboset
show_count((s//usr/lib/python2.7/site-packages/ufw/backend.pyt
get_status�scCstd��dS(sUpdate firewall with rules%UFWBackend.set_rule: need to overrideN(R(R/R�tallow_reload((s//usr/lib/python2.7/site-packages/ufw/backend.pytset_rule�scCstd��dS(sStart the firewalls+UFWBackend.start_firewall: need to overrideN(R(R/((s//usr/lib/python2.7/site-packages/ufw/backend.pytstart_firewall�scCstd��dS(sStop the firewalls*UFWBackend.stop_firewall: need to overrideN(R(R/((s//usr/lib/python2.7/site-packages/ufw/backend.pyt
stop_firewall�scCstdd��dS(s%Get a list if rules based on templates.UFWBackend.get_app_rules_from_system: need to toverrideN(R(R/R�R�((s//usr/lib/python2.7/site-packages/ufw/backend.pytget_app_rules_from_system�scCstd��dS(s#Update loglevel of running firewalls+UFWBackend.update_logging: need to overrideN(R(R/R�((s//usr/lib/python2.7/site-packages/ufw/backend.pyR��scCstd��dS(sReset the firewalls"UFWBackend.reset: need to overrideN(R(R/((s//usr/lib/python2.7/site-packages/ufw/backend.pytreset�sN(!t__name__t
__module__t__doc__RR5R@RCR=R:RYR R!R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((s//usr/lib/python2.7/site-packages/ufw/backend.pyRs<+	'		&	o		$		D	>		<														((R�RzRRsRdRpRltufw.utilRRRRRt
ufw.commonRRtufw.applicationsR(((s//usr/lib/python2.7/site-packages/ufw/backend.pyt<module>s"

Zerion Mini Shell 1.0