]> git.proxmox.com Git - pve-firewall.git/blame - src/PVE/API2/Firewall/VM.pm
bugfix : ruleset_generate_cmdstr : use -d for destination
[pve-firewall.git] / src / PVE / API2 / Firewall / VM.pm
CommitLineData
e7b35711
DM
1package PVE::API2::Firewall::VM;
2
3use strict;
4use warnings;
5use PVE::JSONSchema qw(get_standard_option);
6use PVE::Cluster;
7use PVE::Firewall;
464f933e 8use PVE::API2::Firewall::Rules;
e7b35711
DM
9
10use Data::Dumper; # fixme: remove
11
12use base qw(PVE::RESTHandler);
13
464f933e
DM
14__PACKAGE__->register_method ({
15 subclass => "PVE::API2::Firewall::VMRules",
16 path => 'rules',
17});
18
e7b35711
DM
19__PACKAGE__->register_method({
20 name => 'index',
21 path => '',
22 method => 'GET',
23 permissions => { user => 'all' },
24 description => "Directory index.",
25 parameters => {
26 additionalProperties => 0,
27 properties => {
28 node => get_standard_option('pve-node'),
29 vmid => get_standard_option('pve-vmid'),
30 },
31 },
32 returns => {
33 type => 'array',
34 items => {
35 type => "object",
36 properties => {},
37 },
38 links => [ { rel => 'child', href => "{name}" } ],
39 },
40 code => sub {
41 my ($param) = @_;
42
43 my $result = [
44 { name => 'rules' },
45 { name => 'options' },
46 ];
47
48 return $result;
49 }});
50
e7b35711
DM
51__PACKAGE__->register_method({
52 name => 'get_options',
53 path => 'options',
54 method => 'GET',
55 description => "Get host firewall options.",
56 proxyto => 'node',
57 parameters => {
58 additionalProperties => 0,
59 properties => {
60 node => get_standard_option('pve-node'),
61 vmid => get_standard_option('pve-vmid'),
62 },
63 },
64 returns => {
65 type => "object",
66 properties => {},
67 },
68 code => sub {
69 my ($param) = @_;
70
71 my $vmid = $param->{vmid};
72
73 my $vmlist = PVE::Cluster::get_vmlist();
74
75 die "no such VM ('$vmid')\n"
76 if !($vmlist && $vmlist->{ids} && defined($vmlist->{ids}->{$vmid}));
77
78 my $vmfw_conf = PVE::Firewall::load_vmfw_conf($vmid);
79
5d38d64f 80 return PVE::Firewall::copy_opject_with_digest($vmfw_conf->{options});
e7b35711 81
e7b35711
DM
82 }});
83
841;