]> git.proxmox.com Git - pve-common.git/blobdiff - src/PVE/RESTHandler.pm
half-revert: remove autostart property from bridge ports
[pve-common.git] / src / PVE / RESTHandler.pm
index 41531925fe1ab7cc0be9f190494ec28e00739598..dda58ea1d8430ce7d5ea3a5311b5d80acd81dd8b 100644 (file)
@@ -9,7 +9,7 @@ use PVE::JSONSchema;
 use PVE::PodParser;
 use HTTP::Status qw(:constants :is status_message);
 use Text::Wrap;
 use PVE::PodParser;
 use HTTP::Status qw(:constants :is status_message);
 use Text::Wrap;
-use Storable qw(dclone);
+use Clone qw(clone);
 
 my $method_registry = {};
 my $method_by_name = {};
 
 my $method_registry = {};
 my $method_by_name = {};
@@ -27,7 +27,7 @@ sub api_clone_schema {
     foreach my $k (keys %$schema) {
        my $d = $schema->{$k};
        if ($k ne 'properties') {
     foreach my $k (keys %$schema) {
        my $d = $schema->{$k};
        if ($k ne 'properties') {
-           $res->{$k} = ref($d) ? dclone($d) : $d;
+           $res->{$k} = ref($d) ? clone($d) : $d;
            next;
        }
        # convert indexed parameters like -net\d+ to -net[n]
            next;
        }
        # convert indexed parameters like -net\d+ to -net[n]
@@ -40,7 +40,7 @@ sub api_clone_schema {
                    next;
                }
            }
                    next;
                }
            }
-           $res->{$k}->{$p} = ref($pd) ? dclone($pd) : $pd;
+           $res->{$k}->{$p} = ref($pd) ? clone($pd) : $pd;
        }
     }
 
        }
     }
 
@@ -105,7 +105,7 @@ sub api_dump_full {
                        $data->{$k} = api_clone_schema($d);
                    } else {
 
                        $data->{$k} = api_clone_schema($d);
                    } else {
 
-                       $data->{$k} = ref($d) ? dclone($d) : $d;
+                       $data->{$k} = ref($d) ? clone($d) : $d;
                    }
                } 
                $res->{info}->{$info->{method}} = $data;
                    }
                } 
                $res->{info}->{$info->{method}} = $data;
@@ -275,8 +275,6 @@ sub AUTOLOAD {
     my $sub = $AUTOLOAD;
     (my $method = $sub) =~ s/.*:://;
 
     my $sub = $AUTOLOAD;
     (my $method = $sub) =~ s/.*:://;
 
-    $method =~ s/.*:://;
-
     my $info = $this->map_method_by_name($method);
 
     *{$sub} = sub {
     my $info = $this->map_method_by_name($method);
 
     *{$sub} = sub {
@@ -388,16 +386,18 @@ sub handle {
        # warn "validate ". Dumper($param}) . "\n" . Dumper($schema);
        PVE::JSONSchema::validate($param, $schema);
        # untaint data (already validated)
        # warn "validate ". Dumper($param}) . "\n" . Dumper($schema);
        PVE::JSONSchema::validate($param, $schema);
        # untaint data (already validated)
+       my $extra = delete $param->{'extra-args'};
        while (my ($key, $val) = each %$param) {
            ($param->{$key}) = $val =~ /^(.*)$/s;
        }
        while (my ($key, $val) = each %$param) {
            ($param->{$key}) = $val =~ /^(.*)$/s;
        }
+       $param->{'extra-args'} = [map { /^(.*)$/ } @$extra] if $extra;
     }
 
     my $result = &$func($param); 
 
     # todo: this is only to be safe - disable?
     if (my $schema = $info->{returns}) {
     }
 
     my $result = &$func($param); 
 
     # todo: this is only to be safe - disable?
     if (my $schema = $info->{returns}) {
-       PVE::JSONSchema::validate($result, $schema, "Result verification vailed\n");
+       PVE::JSONSchema::validate($result, $schema, "Result verification failed\n");
     }
 
     return $result;
     }
 
     return $result;