]> git.proxmox.com Git - pmg-api.git/blob - PMG/API2/Domains.pm
follouwp indentation fixup
[pmg-api.git] / PMG / API2 / Domains.pm
1 package PMG::API2::Domains;
2
3 use strict;
4 use warnings;
5 use Data::Dumper;
6
7 use PVE::SafeSyslog;
8 use PVE::Tools qw(extract_param);
9 use PVE::JSONSchema qw(get_standard_option);
10 use PVE::RESTHandler;
11 use PVE::INotify;
12
13 use PMG::Config;
14
15 use base qw(PVE::RESTHandler);
16
17 __PACKAGE__->register_method ({
18 name => 'index',
19 path => '',
20 method => 'GET',
21 description => "List relay domains.",
22 permissions => { check => [ 'admin', 'audit' ] },
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'},
34 comment => { type => 'string'},
35 },
36 },
37 links => [ { rel => 'child', href => "{domain}" } ],
38 },
39 code => sub {
40 my ($param) = @_;
41
42 my $domains = PVE::INotify::read_file('domains');
43
44 my $res = [];
45
46 foreach my $domain (sort keys %$domains) {
47 push @$res, $domains->{$domain};
48 }
49
50 return $res;
51 }});
52
53 __PACKAGE__->register_method ({
54 name => 'create',
55 path => '',
56 method => 'POST',
57 proxyto => 'master',
58 protected => 1,
59 permissions => { check => [ 'admin' ] },
60 description => "Add relay domain.",
61 parameters => {
62 additionalProperties => 0,
63 properties => {
64 domain => {
65 description => "Domain name.",
66 type => 'string', format => 'transport-domain',
67 },
68 comment => {
69 description => "Comment.",
70 type => 'string',
71 optional => 1,
72 },
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"
84 if $domains->{$param->{domain}};
85
86 $domains->{$param->{domain}} = {
87 comment => $param->{comment} // '',
88 };
89
90 PVE::INotify::write_file('domains', $domains);
91
92 PMG::Config::postmap_pmg_domains();
93 };
94
95 PMG::Config::lock_config($code, "add relay domain failed");
96
97 return undef;
98 }});
99
100 __PACKAGE__->register_method ({
101 name => 'read',
102 path => '{domain}',
103 method => 'GET',
104 description => "Read Domain data (comment).",
105 proxyto => 'master',
106 permissions => { check => [ 'admin', 'audit' ] },
107 parameters => {
108 additionalProperties => 0,
109 properties => {
110 domain => {
111 description => "Domain name.",
112 type => 'string', format => 'transport-domain',
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}};
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,
140 permissions => { check => [ 'admin' ] },
141 proxyto => 'master',
142 parameters => {
143 additionalProperties => 0,
144 properties => {
145 domain => {
146 description => "Domain name.",
147 type => 'string', format => 'transport-domain',
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
178 __PACKAGE__->register_method ({
179 name => 'delete',
180 path => '{domain}',
181 method => 'DELETE',
182 description => "Delete a relay domain",
183 protected => 1,
184 permissions => { check => [ 'admin' ] },
185 proxyto => 'master',
186 parameters => {
187 additionalProperties => 0,
188 properties => {
189 domain => {
190 description => "Domain name.",
191 type => 'string', format => 'transport-domain',
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"
204 if !$domains->{$param->{domain}};
205
206 delete $domains->{$param->{domain}};
207
208 PVE::INotify::write_file('domains', $domains);
209
210 PMG::Config::postmap_pmg_domains();
211 };
212
213 PMG::Config::lock_config($code, "delete relay domain failed");
214
215 return undef;
216 }});
217
218 1;