6 use PVE
::Cluster
qw(cfs_register_file cfs_read_file cfs_lock_file cfs_write_file);
7 use Proxmox
::RS
::Notify
;
11 \
&parse_notification_config
,
12 \
&write_notification_config
,
16 'priv/notifications.cfg',
17 \
&parse_notification_config
,
18 \
&write_notification_config
,
21 sub parse_notification_config
{
22 my ($filename, $raw) = @_;
24 $raw = '' if !defined($raw);
28 sub write_notification_config
{
29 my ($filename, $config) = @_;
34 my ($code, $timeout) = @_;
36 cfs_lock_file
('notifications.cfg', $timeout, sub {
37 cfs_lock_file
('priv/notifications.cfg', $timeout, $code);
44 my $config = cfs_read_file
('notifications.cfg');
45 my $priv_config = cfs_read_file
('priv/notifications.cfg');
47 my $notification_config = Proxmox
::RS
::Notify-
>parse_config($config, $priv_config);
49 return $notification_config;
53 my ($notification_config) = @_;
55 my ($config, $priv_config) = $notification_config->write_config();
56 cfs_write_file
('notifications.cfg', $config, 1);
57 cfs_write_file
('priv/notifications.cfg', $priv_config, 1);
60 my $send_notification = sub {
61 my ($severity, $title, $message, $template_data, $fields, $config) = @_;
62 $config = read_config
() if !defined($config);
63 $config->send($severity, $title, $message, $template_data, $fields);
67 my ($severity, $title, $message, $template_data, $fields, $config) = @_;
79 my ($title, $message, $template_data, $fields, $config) = @_;
91 my ($title, $message, $template_data, $fields, $config) = @_;
103 my ($title, $message, $template_data, $fields, $config) = @_;
104 $send_notification->(
115 my ($title, $message, $template_data, $fields, $config) = @_;
116 $send_notification->(
126 sub check_may_use_target
{
127 my ($target, $rpcenv) = @_;
128 my $user = $rpcenv->get_user();
130 my $config = read_config
();
131 my $entities = $config->get_referenced_entities($target);
133 for my $entity (@$entities) {
134 $rpcenv->check($user, "/mapping/notification/$entity", [ 'Mapping.Use' ]);