1 package PVE
::API2
::Firewall
::Cluster
;
5 use PVE
::Exception
qw(raise raise_param_exc raise_perm_exc);
6 use PVE
::JSONSchema
qw(get_standard_option);
9 use PVE
::API2
::Firewall
::Rules
;
10 use PVE
::API2
::Firewall
::Groups
;
14 use Data
::Dumper
; # fixme: remove
16 use base
qw(PVE::RESTHandler);
18 __PACKAGE__-
>register_method ({
19 subclass
=> "PVE::API2::Firewall::Groups",
23 __PACKAGE__-
>register_method ({
24 subclass
=> "PVE::API2::Firewall::ClusterRules",
28 __PACKAGE__-
>register_method({
32 permissions
=> { user
=> 'all' },
33 description
=> "Directory index.",
35 additionalProperties
=> 0,
43 links
=> [ { rel
=> 'child', href
=> "{name}" } ],
50 { name
=> 'options' },
52 { name
=> 'netgroups' },
59 __PACKAGE__-
>register_method({
60 name
=> 'get_options',
63 description
=> "Get Firewall options.",
65 additionalProperties
=> 0,
69 #additionalProperties => 1,
80 my $cluster_conf = PVE
::Firewall
::load_clusterfw_conf
();
82 my $options = $cluster_conf->{options
};
87 my $option_properties = {
94 my $add_option_properties = sub {
95 my ($properties) = @_;
97 foreach my $k (keys %$option_properties) {
98 $properties->{$k} = $option_properties->{$k};
104 __PACKAGE__-
>register_method({
105 name
=> 'set_options',
108 description
=> "Set Firewall options.",
111 additionalProperties
=> 0,
112 properties
=> &$add_option_properties({
114 type
=> 'string', format
=> 'pve-configid-list',
115 description
=> "A list of settings you want to delete.",
120 returns
=> { type
=> "null" },
124 my $cluster_conf = PVE
::Firewall
::load_clusterfw_conf
();
126 if ($param->{delete}) {
127 foreach my $opt (PVE
::Tools
::split_list
($param->{delete})) {
128 raise_param_exc
({ delete => "no such option '$opt'" })
129 if !$option_properties->{$opt};
130 delete $cluster_conf->{options
}->{$opt};
134 if (defined($param->{enable
})) {
135 $cluster_conf->{options
}->{enable
} = $param->{enable
} ?
1 : 0;
138 PVE
::Firewall
::save_clusterfw_conf
($cluster_conf);
143 __PACKAGE__-
>register_method({
144 name
=> 'get_macros',
147 description
=> "List available macros",
149 additionalProperties
=> 0,
157 description
=> "Macro name.",
161 description
=> "More verbose description (if available).",
172 my ($macros, $descr) = PVE
::Firewall
::get_macros
();
174 foreach my $macro (keys %$macros) {
175 push @$res, { macro => $macro, descr
=> $descr->{$macro} || $macro };