]> git.proxmox.com Git - pmg-api.git/blame - PMG/API2/SMTPWhitelist.pm
node: add journal api
[pmg-api.git] / PMG / API2 / SMTPWhitelist.pm
CommitLineData
16fdeb84
DM
1package PMG::API2::SMTPWhitelist;
2
3use strict;
4use warnings;
5use Data::Dumper;
6
7use PVE::SafeSyslog;
8use PVE::Tools qw(extract_param);
9use HTTP::Status qw(:constants);
10use PVE::JSONSchema qw(get_standard_option);
11use PVE::RESTHandler;
12use PVE::INotify;
13
14use PMG::Config;
693cf3b6
DM
15
16use PMG::RuleDB::WhoRegex;
17use PMG::RuleDB::ReceiverRegex;
18use PMG::RuleDB::EMail;
19use PMG::RuleDB::Receiver;
20use PMG::RuleDB::IPAddress;
21use PMG::RuleDB::IPNet;
22use PMG::RuleDB::Domain;
23use PMG::RuleDB::ReceiverDomain;
16fdeb84
DM
24use PMG::RuleDB;
25
26use base qw(PVE::RESTHandler);
27
28__PACKAGE__->register_method ({
29 name => 'index',
30 path => '',
31 method => 'GET',
32 description => "Directory index.",
7d82b0b3 33 permissions => { check => [ 'admin', 'audit' ] },
16fdeb84
DM
34 parameters => {
35 additionalProperties => 0,
36 properties => {},
37 },
38 returns => {
39 type => 'array',
40 items => {
41 type => "object",
42 properties => {
43 subdir => { type => 'string'},
44 },
45 },
46 links => [ { rel => 'child', href => "{subdir}" } ],
47 },
48 code => sub {
49 my ($param) = @_;
50
51 return [
52 { subdir => 'objects' },
f3b8552f 53 { subdir => 'email' },
693cf3b6 54 { subdir => 'receiver' },
f3b8552f 55 { subdir => 'domain' },
ae87d90e 56 { subdir => 'receiver_domain' },
f3b8552f 57 { subdir => 'regex' },
693cf3b6
DM
58 { subdir => 'receiver_regex' },
59 { subdir => 'ip' },
60 { subdir => 'network' },
16fdeb84
DM
61 ];
62
63 }});
64
65__PACKAGE__->register_method ({
66 name => 'objects',
67 path => 'objects',
68 method => 'GET',
69 description => "Get list of all SMTP whitelist entries.",
70 proxyto => 'master',
7d82b0b3 71 permissions => { check => [ 'admin', 'audit' ] },
16fdeb84
DM
72 parameters => {
73 additionalProperties => 0,
74 properties => {},
75 },
76 returns => {
77 type => 'array',
78 items => {
79 type => "object",
80 properties => {
81 id => { type => 'integer'},
82 },
83 },
1ad24a43 84 links => [ { rel => 'child', href => "{id}" } ],
16fdeb84
DM
85 },
86 code => sub {
87 my ($param) = @_;
88
89 my $rdb = PMG::RuleDB->new();
90
91 my $gid = $rdb->greylistexclusion_groupid();
92
93 my $og = $rdb->load_group_objects($gid);
94
95 my $res = [];
96
97 foreach my $obj (@$og) {
693cf3b6 98 push @$res, $obj->get_data();
16fdeb84
DM
99 }
100
101 return $res;
102 }});
103
16fdeb84
DM
104__PACKAGE__->register_method ({
105 name => 'delete_object',
106 path => 'objects/{id}',
107 method => 'DELETE',
108 description => "Remove an object from the SMTP whitelist.",
109 proxyto => 'master',
7d82b0b3 110 permissions => { check => [ 'admin' ] },
45d548db 111 protected => 1,
16fdeb84
DM
112 parameters => {
113 additionalProperties => 0,
114 properties => {
115 id => {
116 description => "Object ID.",
117 type => 'integer',
118 },
119 },
120 },
121 returns => { type => 'null' },
122 code => sub {
123 my ($param) = @_;
124
125 my $rdb = PMG::RuleDB->new();
126
16fdeb84
DM
127 my $obj = $rdb->load_object($param->{id});
128
129 die "object '$param->{id}' does not exists\n" if !defined($obj);
130
131 $rdb->delete_object($obj);
132
f9967a49 133 PMG::DBTools::reload_ruledb($rdb);
368d77d1 134
16fdeb84
DM
135 return undef;
136 }});
137
693cf3b6 138
f3b8552f 139PMG::RuleDB::EMail->register_api(__PACKAGE__, 'email', undef, 1);
1ad24a43 140PMG::RuleDB::Receiver->register_api(__PACKAGE__, 'receiver', undef, 1);
693cf3b6 141
f3b8552f 142PMG::RuleDB::Domain->register_api(__PACKAGE__, 'domain', undef, 1);
1ad24a43 143PMG::RuleDB::ReceiverDomain->register_api(__PACKAGE__, 'receiver_domain', undef, 1);
693cf3b6 144
f3b8552f 145PMG::RuleDB::WhoRegex->register_api(__PACKAGE__, 'regex', undef, 1);
1ad24a43 146PMG::RuleDB::ReceiverRegex->register_api(__PACKAGE__, 'receiver_regex', undef, 1);
693cf3b6 147
1ad24a43
DM
148PMG::RuleDB::IPAddress->register_api(__PACKAGE__, 'ip', undef, 1);
149PMG::RuleDB::IPNet->register_api(__PACKAGE__, 'network', undef, 1);
693cf3b6 150
16fdeb84 1511;