1ec3d1a
## <summary>USB multiplexing daemon for communicating with Apple iPod Touch and iPhone</summary>
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Execute a domain transition to run usbmuxd.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed to transition.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`usbmuxd_domtrans',`
1ec3d1a
	gen_require(`
1ec3d1a
		type usbmuxd_t, usbmuxd_exec_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	domtrans_pattern($1, usbmuxd_exec_t, usbmuxd_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
#####################################
1ec3d1a
## <summary>
1ec3d1a
##	Connect to usbmuxd over a unix domain
1ec3d1a
##	stream socket.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`usbmuxd_stream_connect',`
1ec3d1a
	gen_require(`
1ec3d1a
		type usbmuxd_t, usbmuxd_var_run_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	files_search_pids($1)
1ec3d1a
	stream_connect_pattern($1, usbmuxd_var_run_t, usbmuxd_var_run_t, usbmuxd_t)
1ec3d1a
')
2bbd5ae
2bbd5ae
########################################
2bbd5ae
## <summary>
2bbd5ae
##	Execute usbmuxd server in the usbmuxd domain.
2bbd5ae
## </summary>
2bbd5ae
## <param name="domain">
2bbd5ae
##	<summary>
2bbd5ae
##	Domain allowed to transition.
2bbd5ae
##	</summary>
2bbd5ae
## </param>
2bbd5ae
#
2bbd5ae
interface(`usbmuxd_systemctl',`
2bbd5ae
	gen_require(`
2bbd5ae
		type usbmuxd_t;
2bbd5ae
		type usbmuxd_unit_file_t;
2bbd5ae
	')
2bbd5ae
2bbd5ae
	systemd_exec_systemctl($1)
2bbd5ae
	allow $1 usbmuxd_unit_file_t:file read_file_perms;
2bbd5ae
	allow $1 usbmuxd_unit_file_t:service manage_service_perms;
2bbd5ae
2bbd5ae
	ps_process_pattern($1, usbmuxd_t)
2bbd5ae
')
2bbd5ae
2bbd5ae
#####################################
2bbd5ae
## <summary>
2bbd5ae
##	All of the rules required to administrate
2bbd5ae
##	an usbmuxd environment
2bbd5ae
## </summary>
2bbd5ae
## <param name="domain">
2bbd5ae
##	<summary>
2bbd5ae
##	Domain allowed access.
2bbd5ae
##	</summary>
2bbd5ae
## </param>
2bbd5ae
## <param name="role">
2bbd5ae
##	<summary>
2bbd5ae
##	The role to be allowed to manage the usbmuxd domain.
2bbd5ae
##	</summary>
2bbd5ae
## </param>
2bbd5ae
## <rolecap/>
2bbd5ae
#
2bbd5ae
interface(`usbmuxd_admin',`
2bbd5ae
	gen_require(`
2bbd5ae
		type usbmuxd_t,usbmuxd_var_run_t;
2bbd5ae
		type usbmuxd_unit_file_t;
2bbd5ae
	')
2bbd5ae
2bbd5ae
	allow $1 usbmuxd_t:process { signal_perms };
2bbd5ae
	ps_process_pattern($1, usbmuxd_t)
2bbd5ae
2bbd5ae
	tunable_policy(`deny_ptrace',`',`
2bbd5ae
		allow $1 usbmuxd_t:process ptrace;
2bbd5ae
	')
2bbd5ae
	allow $2 system_r;
2bbd5ae
2bbd5ae
	files_list_pids($1)
2bbd5ae
	admin_pattern($1, usbmuxd_var_run_t)
2bbd5ae
2bbd5ae
	usbmuxd_systemctl($1)
2bbd5ae
	admin_pattern($1, usbmuxd_unit_file_t)
2bbd5ae
	allow $1 usbmuxd_unit_file_t:service all_service_perms;
2bbd5ae
')