/usr/share/zoneinfo/zone.tab has the valid list of time zones. Signed-off-by: Oguz Bektas <o.bek...@proxmox.com> --- src/PVE/JSONSchema.pm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)
diff --git a/src/PVE/JSONSchema.pm b/src/PVE/JSONSchema.pm index 84fb694..ff97a3d 100644 --- a/src/PVE/JSONSchema.pm +++ b/src/PVE/JSONSchema.pm @@ -482,6 +482,30 @@ sub pve_verify_dns_name { return $name; } +register_format('timezone', \&pve_verify_timezone); +sub pve_verify_timezone { + my ($timezone, $noerr) = @_; + + my $zonetab = "/usr/share/zoneinfo/zone.tab"; + my @valid_tzlist; + push @valid_tzlist, 'host'; # host localtime + push @valid_tzlist, 'UTC'; # not in $zonetab + open(my $fh, "<", $zonetab); + while(my $line = <$fh>) { + next if $line =~ /^#/; + chomp $line; + push @valid_tzlist, (split /\t/, $line)[2]; + } + close $fh; + + if (grep (/^$timezone$/, @valid_tzlist) eq 0) { + return undef if $noerr; + die "invalid time zone '$timezone'\n"; + } + + return $timezone; +} + # network interface name register_format('pve-iface', \&pve_verify_iface); sub pve_verify_iface { -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel