[pve-devel] [PATCH common 1/5] jsonschema: register 'timezone' format and add verification method
Oguz Bektas
o.bektas at proxmox.com
Tue Jun 16 15:36:29 CEST 2020
/usr/share/zoneinfo/zone.tab has the valid list of time zones.
Signed-off-by: Oguz Bektas <o.bektas at 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
More information about the pve-devel
mailing list