]> git.proxmox.com Git - pve-firewall.git/blobdiff - src/PVE/API2/Firewall/IPSet.pm
correctly verify ipset name
[pve-firewall.git] / src / PVE / API2 / Firewall / IPSet.pm
index c9372fac138ab4b5beff39eaf30cb54b20ff7f03..856e5f854a351c3c5b7fda2aae81191acd51ab46 100644 (file)
@@ -14,10 +14,7 @@ my $api_properties = {
        description => "Network/IP specification in CIDR format.",
        type => 'string', format => 'IPv4orCIDR',
     },
-    name => {
-       description => "IP set name.",
-       type => 'string',
-    },
+    name => get_standard_option('ipset-name'),
     comment => {
        type => 'string',
        optional => 1,
@@ -295,8 +292,9 @@ package PVE::API2::Firewall::BaseIPSetList;
 
 use strict;
 use warnings;
-use PVE::Firewall;
+use PVE::JSONSchema qw(get_standard_option);
 use PVE::Exception qw(raise_param_exc);
+use PVE::Firewall;
 
 use base qw(PVE::RESTHandler);
 
@@ -316,10 +314,7 @@ sub register_index {
            items => {
                type => "object",
                properties => { 
-                   name => {
-                       description => "IPSet name.",
-                       type => 'string',
-                   },
+                   name => get_standard_option('ipset-name'),
                },
            },
            links => [ { rel => 'child', href => "{name}" } ],
@@ -350,11 +345,11 @@ sub register_create {
        parameters => {
            additionalProperties => 0,
            properties => { 
-               name => {
-                   # fixme: verify format
-                   description => "IP set name.",
-                   type => 'string',
-               },
+               name => get_standard_option('ipset-name'),
+               rename => get_standard_option('ipset-name', {
+                   description => "Rename an existing IPSet.",
+                   optional => 1,
+               }),
            }
        },
        returns => { type => 'null' },
@@ -368,7 +363,15 @@ sub register_create {
                    if $name eq $param->{name};
            }
 
-           $fw_conf->{ipset}->{$param->{name}} = [];
+           if ($param->{rename}) {
+               raise_param_exc({ name => "IPSet '$param->{rename}' does not exists" }) 
+                   if !$fw_conf->{ipset}->{$param->{rename}};
+               my $data = delete $fw_conf->{ipset}->{$param->{rename}};
+               $fw_conf->{ipset}->{$param->{name}} = $data;
+           } else {
+               $fw_conf->{ipset}->{$param->{name}} = [];
+           }
+
            $class->save_config($fw_conf);
 
            return undef;
@@ -387,11 +390,7 @@ sub register_delete {
        parameters => {
            additionalProperties => 0,
            properties => { 
-               name => {
-                   # fixme: verify format
-                   description => "IP set name.",
-                   type => 'string',
-               },
+               name => get_standard_option('ipset-name'),
            }
        },
        returns => { type => 'null' },