X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=blobdiff_plain;f=src%2FPVE%2FJSONSchema.pm;h=c09a9f474a5413e7c1caa35bd5b9febdebf7eb91;hp=4278f7356d504914f04c6710c51df1f147eb511e;hb=b21cf5754615b1af8f0a4f8edaa4ab81ebaf4a86;hpb=031efdd0221e831fa8f7e6b9c2de89a37d520a8d diff --git a/src/PVE/JSONSchema.pm b/src/PVE/JSONSchema.pm index 4278f73..c09a9f4 100644 --- a/src/PVE/JSONSchema.pm +++ b/src/PVE/JSONSchema.pm @@ -99,6 +99,12 @@ register_standard_option('extra-args', { optional => 1 }); +register_standard_option('fingerprint-sha256', { + description => "Certificate SHA 256 fingerprint.", + type => 'string', + pattern => '([A-Fa-f0-9]{2}:){31}[A-Fa-f0-9]{2}', +}); + my $format_list = {}; sub register_format { @@ -508,6 +514,13 @@ sub format_size { return "${tb}T"; }; +sub parse_boolean { + my ($bool) = @_; + return 1 if $bool =~ m/^(1|on|yes|true)$/i; + return 0 if $bool =~ m/^(0|off|no|false)$/i; + return undef; +} + sub parse_property_string { my ($format, $data, $path, $additional_properties) = @_; @@ -546,8 +559,7 @@ sub parse_property_string { die "invalid key in comma-separated list property: $k\n" if !$schema; if ($schema->{type} && $schema->{type} eq 'boolean') { - $v = 1 if $v =~ m/^(1|on|yes|true)$/i; - $v = 0 if $v =~ m/^(0|off|no|false)$/i; + $v = parse_boolean($v) // $v; } $res->{$k} = $v; } elsif ($part !~ /=/) { @@ -1148,6 +1160,11 @@ my $method_schema = { description => "Method needs special privileges - only pvedaemon can execute it", optional => 1, }, + download => { + type => 'boolean', + description => "Method downloads the file content (filename is the return value of the method).", + optional => 1, + }, proxyto => { type => 'string', description => "A parameter name. If specified, all calls to this method are proxied to the host contained in that parameter.", @@ -1378,10 +1395,8 @@ sub get_options { if ($pd->{type} eq 'boolean') { if ($opts->{$p} eq '') { $opts->{$p} = 1; - } elsif ($opts->{$p} =~ m/^(1|true|yes|on)$/i) { - $opts->{$p} = 1; - } elsif ($opts->{$p} =~ m/^(0|false|no|off)$/i) { - $opts->{$p} = 0; + } elsif (defined(my $bool = parse_boolean($opts->{$p}))) { + $opts->{$p} = $bool; } else { raise("unable to parse boolean option\n", code => HTTP_BAD_REQUEST); } @@ -1434,8 +1449,7 @@ sub parse_config { if ($schema->{properties}->{$key} && $schema->{properties}->{$key}->{type} eq 'boolean') { - $value = 1 if $value =~ m/^(1|on|yes|true)$/i; - $value = 0 if $value =~ m/^(0|off|no|false)$/i; + $value = parse_boolean($value) // $value; } $cfg->{$key} = $value; } else {