Blob Blame History Raw
policy_module(ejabberd,0.0)


########################################
#
# Declarations
#

# Private type declarations
type ejabberd_t;
type ejabberd_exec_t;
init_daemon_domain(ejabberd_t, ejabberd_exec_t)

type ejabberd_unit_t;
systemd_unit_file(ejabberd_unit_t)

type ejabberd_var_lib_t;
files_type(ejabberd_var_lib_t)

type ejabberd_var_log_t;
logging_log_file(ejabberd_var_log_t)


# What will we allow
allow ejabberd_t self:tcp_socket { accept bind connect create getattr getopt listen read setopt write };
allow ejabberd_t self:udp_socket { bind connect create getattr getopt read setopt write };
allow ejabberd_t self:unix_dgram_socket { connect create getopt setopt write };

auth_use_nsswitch(ejabberd_t)

corecmd_exec_bin(ejabberd_t)
corecmd_exec_shell(ejabberd_t)

corenet_tcp_bind_epmd_port(ejabberd_t)
corenet_tcp_bind_generic_node(ejabberd_t)
corenet_tcp_bind_generic_port(ejabberd_t)
corenet_tcp_bind_jabber_client_port(ejabberd_t)
corenet_tcp_bind_jabber_interserver_port(ejabberd_t)
corenet_tcp_bind_prosody_port(ejabberd_t)
corenet_tcp_connect_epmd_port(ejabberd_t)
corenet_tcp_connect_generic_port(ejabberd_t)
corenet_tcp_connect_jabber_interserver_port(ejabberd_t)
corenet_tcp_connect_postgresql_port(ejabberd_t)
postgresql_stream_connect(ejabberd_t)
corenet_tcp_connect_mysqld_port(ejabberd_t)
mysql_stream_connect(ejabberd_t)

corenet_udp_bind_generic_node(ejabberd_t)

dev_read_rand(ejabberd_t)
dev_read_sysfs(ejabberd_t)

files_search_var_lib(ejabberd_t, ejabberd_var_lib_t, dir)

kernel_dgram_send(ejabberd_t)

logging_create_devlog_dev(ejabberd_t)
logging_log_filetrans(ejabberd_t, ejabberd_var_log_t, { dir file })

manage_dirs_pattern(ejabberd_t, ejabberd_var_lib_t, ejabberd_var_lib_t)
manage_dirs_pattern(ejabberd_t, ejabberd_var_log_t, ejabberd_var_log_t)
manage_files_pattern(ejabberd_t, ejabberd_var_lib_t, ejabberd_var_lib_t)
manage_files_pattern(ejabberd_t, ejabberd_var_log_t, ejabberd_var_log_t)

miscfiles_read_generic_certs(ejabberd_t)

sysnet_read_config(ejabberd_t)