1ec3d1a
## <summary>Pyzor is a distributed, collaborative spam detection and filtering network.</summary>
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
b43f464
##	Role access for pyzor
1ec3d1a
## </summary>
1ec3d1a
## <param name="role">
1ec3d1a
##	<summary>
1ec3d1a
##	Role allowed access
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	User domain for the role
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
## <rolecap/>
1ec3d1a
#
1ec3d1a
interface(`pyzor_role',`
1ec3d1a
	gen_require(`
b43f464
		type pyzor_t, pyzor_exec_t;
b43f464
		type pyzor_home_t, pyzor_var_lib_t, pyzor_tmp_t;
1ec3d1a
	')
1ec3d1a
b43f464
	role $1 types pyzor_t;
1ec3d1a
b43f464
	# Transition from the user domain to the derived domain.
1ec3d1a
	domtrans_pattern($2, pyzor_exec_t, pyzor_t)
1ec3d1a
b43f464
	# allow ps to show pyzor and allow the user to kill it 
1ec3d1a
	ps_process_pattern($2, pyzor_t)
1ec3d1a
	allow $2 pyzor_t:process signal_perms;
1ec3d1a
	tunable_policy(`deny_ptrace',`',`
1ec3d1a
		allow $2 pyzor_t:process ptrace;
1ec3d1a
	')
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
b43f464
##	Send generic signals to pyzor
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`pyzor_signal',`
1ec3d1a
	gen_require(`
1ec3d1a
		type pyzor_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	allow $1 pyzor_t:process signal;
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Execute pyzor with a domain transition.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed to transition.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`pyzor_domtrans',`
1ec3d1a
	gen_require(`
1ec3d1a
		type pyzor_exec_t, pyzor_t;
1ec3d1a
	')
1ec3d1a
b43f464
	files_search_usr($1)
1ec3d1a
	corecmd_search_bin($1)
1ec3d1a
	domtrans_pattern($1, pyzor_exec_t, pyzor_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Execute pyzor in the caller domain.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`pyzor_exec',`
1ec3d1a
	gen_require(`
1ec3d1a
		type pyzor_exec_t;
1ec3d1a
	')
1ec3d1a
b43f464
	files_search_usr($1)
1ec3d1a
	corecmd_search_bin($1)
1ec3d1a
	can_exec($1, pyzor_exec_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	All of the rules required to administrate
1ec3d1a
##	an pyzor environment
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
## <param name="role">
1ec3d1a
##	<summary>
1ec3d1a
##	The role to be allowed to manage the pyzor domain.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
## <rolecap/>
1ec3d1a
#
1ec3d1a
interface(`pyzor_admin',`
1ec3d1a
	gen_require(`
1ec3d1a
		type pyzord_t, pyzor_tmp_t, pyzord_log_t;
1ec3d1a
		type pyzor_etc_t, pyzor_var_lib_t, pyzord_initrc_exec_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	allow $1 pyzord_t:process signal_perms;
1ec3d1a
	ps_process_pattern($1, pyzord_t)
1ec3d1a
	tunable_policy(`deny_ptrace',`',`
1ec3d1a
		allow $1 pyzord_t:process ptrace;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	init_labeled_script_domtrans($1, pyzord_initrc_exec_t)
1ec3d1a
	domain_system_change_exemption($1)
1ec3d1a
	role_transition $2 pyzord_initrc_exec_t system_r;
1ec3d1a
	allow $2 system_r;
1ec3d1a
1ec3d1a
	files_list_tmp($1)
1ec3d1a
	admin_pattern($1, pyzor_tmp_t)
1ec3d1a
1ec3d1a
	logging_list_logs($1)
1ec3d1a
	admin_pattern($1, pyzord_log_t)
1ec3d1a
1ec3d1a
	files_list_etc($1)
1ec3d1a
	admin_pattern($1, pyzor_etc_t)
1ec3d1a
1ec3d1a
	files_list_var_lib($1)
1ec3d1a
	admin_pattern($1, pyzor_var_lib_t)
1ec3d1a
')