d1dca31
policy_module(radicale, 1.0.3)
d1dca31
d1dca31
gen_require(`
d1dca31
    type httpd_t;
d1dca31
')
d1dca31
d1dca31
d1dca31
d1dca31
########################################
d1dca31
#
d1dca31
# Declarations
d1dca31
#
d1dca31
d1dca31
type radicale_t;
d1dca31
type radicale_exec_t;
d1dca31
init_daemon_domain(radicale_t, radicale_exec_t)
d1dca31
d1dca31
permissive radicale_t;
d1dca31
d1dca31
type radicale_log_t;
d1dca31
logging_log_file(radicale_log_t)
d1dca31
d1dca31
type radicale_var_lib_t;
d1dca31
files_type(radicale_var_lib_t)
d1dca31
d1dca31
type radicale_var_run_t;
d1dca31
files_pid_file(radicale_var_run_t)
d1dca31
d1dca31
type radicale_etc_t;
d1dca31
files_type(radicale_etc_t);
d1dca31
d1dca31
type radicale_unit_file_t;
d1dca31
systemd_unit_file(radicale_unit_file_t)
d1dca31
d1dca31
type radicale_port_t;
d1dca31
corenet_port(radicale_port_t)
d1dca31
d1dca31
########################################
d1dca31
#
d1dca31
# radicale local policy
d1dca31
#
d1dca31
allow radicale_t self:fifo_file rw_fifo_file_perms;
d1dca31
allow radicale_t self:unix_stream_socket create_stream_socket_perms;
d1dca31
allow radicale_t self:tcp_socket create_stream_socket_perms;
d1dca31
d1dca31
allow radicale_t radicale_port_t:tcp_socket name_bind;
d1dca31
d1dca31
manage_dirs_pattern(radicale_t, radicale_log_t, radicale_log_t)
d1dca31
manage_files_pattern(radicale_t, radicale_log_t, radicale_log_t)
d1dca31
manage_lnk_files_pattern(radicale_t, radicale_log_t, radicale_log_t)
d1dca31
logging_log_filetrans(radicale_t, radicale_log_t, { dir file lnk_file })
d1dca31
d1dca31
manage_dirs_pattern(radicale_t, radicale_var_lib_t, radicale_var_lib_t)
d1dca31
manage_files_pattern(radicale_t, radicale_var_lib_t, radicale_var_lib_t)
d1dca31
manage_lnk_files_pattern(radicale_t, radicale_var_lib_t, radicale_var_lib_t)
d1dca31
files_var_lib_filetrans(radicale_t, radicale_var_lib_t, { dir file lnk_file })
d1dca31
d1dca31
manage_files_pattern(radicale_t, radicale_var_run_t, radicale_var_run_t)
d1dca31
files_pid_filetrans(radicale_t, radicale_var_lib_t, file)
d1dca31
d1dca31
domain_use_interactive_fds(radicale_t)
d1dca31
d1dca31
files_read_etc_files(radicale_t)
d1dca31
read_files_pattern(radicale_t, radicale_etc_t, radicale_etc_t)
d1dca31
d1dca31
bool httpd_can_read_write_radicale false;
d1dca31
d1dca31
if (httpd_can_read_write_radicale) {
d1dca31
    manage_dirs_pattern(httpd_t, radicale_log_t, radicale_log_t)
d1dca31
    manage_files_pattern(httpd_t, radicale_log_t, radicale_log_t)
d1dca31
    manage_lnk_files_pattern(httpd_t, radicale_log_t, radicale_log_t)
d1dca31
    #logging_log_filetrans(httpd_t, radicale_log_t, { dir file lnk_file })
d1dca31
d1dca31
    manage_dirs_pattern(httpd_t, radicale_var_lib_t, radicale_var_lib_t)
d1dca31
    manage_files_pattern(httpd_t, radicale_var_lib_t, radicale_var_lib_t)
d1dca31
    manage_lnk_files_pattern(httpd_t, radicale_var_lib_t, radicale_var_lib_t)
d1dca31
    #files_var_lib_filetrans(httpd_t, radicale_var_lib_t, { dir file lnk_file })
d1dca31
d1dca31
    #domain_use_interactive_fds(httpd_t)
d1dca31
d1dca31
    #files_read_etc_files(radicale_t)
d1dca31
    read_files_pattern(httpd_t, radicale_etc_t, radicale_etc_t)
d1dca31
} 
d1dca31
d1dca31
miscfiles_read_localization(radicale_t)
d1dca31
dev_read_urand(radicale_t)
d1dca31
dev_read_rand(radicale_t)
d1dca31
auth_use_nsswitch(radicale_t)
d1dca31
corecmd_exec_shell(radicale_t)
d1dca31
libs_exec_ldconfig(radicale_t)
d1dca31
kernel_read_system_state(radicale_t)