]> git.proxmox.com Git - pmg-api.git/blame - PMG/API2/Domains.pm
fix use of uninitialized value
[pmg-api.git] / PMG / API2 / Domains.pm
CommitLineData
5b2bb556
DM
1package PMG::API2::Domains;
2
3use strict;
4use warnings;
5use Data::Dumper;
6
7use PVE::SafeSyslog;
8use PVE::Tools qw(extract_param);
5b2bb556
DM
9use PVE::JSONSchema qw(get_standard_option);
10use PVE::RESTHandler;
11use PVE::INotify;
12
13use PMG::Config;
14
15use base qw(PVE::RESTHandler);
16
17__PACKAGE__->register_method ({
18 name => 'index',
19 path => '',
20 method => 'GET',
21 description => "List relay domains.",
21a5bb96 22 permissions => { check => [ 'admin', 'audit' ] },
5b2bb556
DM
23 proxyto => 'master',
24 parameters => {
25 additionalProperties => 0,
26 properties => {},
27 },
28 returns => {
29 type => 'array',
30 items => {
31 type => "object",
32 properties => {
33 domain => { type => 'string'},
b7298186 34 comment => { type => 'string'},
5b2bb556
DM
35 },
36 },
94d4606f 37 links => [ { rel => 'child', href => "{domain}" } ],
5b2bb556
DM
38 },
39 code => sub {
40 my ($param) = @_;
41
42 my $domains = PVE::INotify::read_file('domains');
43
44 my $res = [];
45
b7298186
DM
46 foreach my $domain (sort keys %$domains) {
47 push @$res, $domains->{$domain};
5b2bb556
DM
48 }
49
50 return $res;
51 }});
52
4d39dbdc
DM
53__PACKAGE__->register_method ({
54 name => 'create',
55 path => '',
56 method => 'POST',
57 proxyto => 'master',
58 protected => 1,
21a5bb96 59 permissions => { check => [ 'admin' ] },
4d39dbdc
DM
60 description => "Add relay domain.",
61 parameters => {
62 additionalProperties => 0,
63 properties => {
64 domain => {
65 description => "Domain name.",
7ed99e5c 66 type => 'string', format => 'transport-domain',
4d39dbdc 67 },
b7298186
DM
68 comment => {
69 description => "Comment.",
70 type => 'string',
71 optional => 1,
72 },
4d39dbdc
DM
73 },
74 },
75 returns => { type => 'null' },
76 code => sub {
77 my ($param) = @_;
78
79 my $code = sub {
80
81 my $domains = PVE::INotify::read_file('domains');
82
83 die "Domain '$param->{domain}' already exists\n"
b7298186 84 if $domains->{$param->{domain}};
4d39dbdc 85
b7298186
DM
86 $domains->{$param->{domain}} = {
87 comment => $param->{comment} // '',
88 };
4d39dbdc
DM
89
90 PVE::INotify::write_file('domains', $domains);
c3f4336c
DM
91
92 PMG::Config::postmap_pmg_domains();
4d39dbdc
DM
93 };
94
95 PMG::Config::lock_config($code, "add relay domain failed");
96
97 return undef;
98 }});
99
b7298186
DM
100__PACKAGE__->register_method ({
101 name => 'read',
102 path => '{domain}',
103 method => 'GET',
104 description => "Read Domain data (comment).",
105 proxyto => 'master',
21a5bb96 106 permissions => { check => [ 'admin', 'audit' ] },
b7298186
DM
107 parameters => {
108 additionalProperties => 0,
109 properties => {
110 domain => {
111 description => "Domain name.",
7ed99e5c 112 type => 'string', format => 'transport-domain',
b7298186
DM
113 },
114 },
115 },
116 returns => {
117 type => "object",
118 properties => {
119 domain => { type => 'string'},
120 comment => { type => 'string'},
121 },
122 },
123 code => sub {
124 my ($param) = @_;
125
126 my $domains = PVE::INotify::read_file('domains');
127
128 die "Domain '$param->{domain}' does not exist\n"
129 if !$domains->{$param->{domain}};
130
131 return $domains->{$param->{domain}};
b7298186
DM
132 }});
133
134__PACKAGE__->register_method ({
135 name => 'write',
136 path => '{domain}',
137 method => 'PUT',
138 description => "Update relay domain data (comment).",
139 protected => 1,
21a5bb96 140 permissions => { check => [ 'admin' ] },
b7298186
DM
141 proxyto => 'master',
142 parameters => {
143 additionalProperties => 0,
144 properties => {
145 domain => {
146 description => "Domain name.",
7ed99e5c 147 type => 'string', format => 'transport-domain',
b7298186
DM
148 },
149 comment => {
150 description => "Comment.",
151 type => 'string',
152 },
153 },
154 },
155 returns => { type => 'null' },
156 code => sub {
157 my ($param) = @_;
158
159 my $code = sub {
160
161 my $domains = PVE::INotify::read_file('domains');
162
163 die "Domain '$param->{domain}' does not exist\n"
164 if !$domains->{$param->{domain}};
165
166 $domains->{$param->{domain}}->{comment} = $param->{comment};
167
168 PVE::INotify::write_file('domains', $domains);
169
170 PMG::Config::postmap_pmg_domains();
171 };
172
173 PMG::Config::lock_config($code, "update relay domain failed");
174
175 return undef;
176 }});
177
4d39dbdc
DM
178__PACKAGE__->register_method ({
179 name => 'delete',
180 path => '{domain}',
181 method => 'DELETE',
182 description => "Delete a relay domain",
183 protected => 1,
21a5bb96 184 permissions => { check => [ 'admin' ] },
4d39dbdc
DM
185 proxyto => 'master',
186 parameters => {
187 additionalProperties => 0,
188 properties => {
189 domain => {
190 description => "Domain name.",
7ed99e5c 191 type => 'string', format => 'transport-domain',
4d39dbdc
DM
192 },
193 }
194 },
195 returns => { type => 'null' },
196 code => sub {
197 my ($param) = @_;
198
199 my $code = sub {
200
201 my $domains = PVE::INotify::read_file('domains');
202
203 die "Domain '$param->{domain}' does not exist\n"
b7298186 204 if !$domains->{$param->{domain}};
4d39dbdc 205
b7298186 206 delete $domains->{$param->{domain}};
4d39dbdc 207
b7298186 208 PVE::INotify::write_file('domains', $domains);
c3f4336c
DM
209
210 PMG::Config::postmap_pmg_domains();
4d39dbdc
DM
211 };
212
213 PMG::Config::lock_config($code, "delete relay domain failed");
214
215 return undef;
216 }});
217
5b2bb556 2181;