[pve-devel] [PATCH v2 common 1/5] jsonschema: register 'timezone' format and add verification method

Oguz Bektas o.bektas at proxmox.com
Wed Jun 17 15:32: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>
---

v1->v2:
* don't use array for verifying format

 src/PVE/JSONSchema.pm | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/src/PVE/JSONSchema.pm b/src/PVE/JSONSchema.pm
index 84fb694..15a498c 100644
--- a/src/PVE/JSONSchema.pm
+++ b/src/PVE/JSONSchema.pm
@@ -482,6 +482,25 @@ 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";
+    return $timezone if $timezone eq 'UTC';
+    open(my $fh, "<", $zonetab);
+    while(my $line = <$fh>) {
+	next if $line =~ /^#/;
+	chomp $line;
+	return $timezone if $timezone eq (split /\t/, $line)[2]; # found
+    }
+    close $fh;
+
+    return undef if $noerr;
+    die "invalid time zone '$timezone'\n";
+
+}
+
 # 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