properties => {
domain => {
description => "Domain name.",
- type => 'string', format => 'dns-name',
+ type => 'string', format => 'transport-domain',
},
host => {
description => "Target host (name or IP address).",
properties => {
domain => {
description => "Domain name.",
- type => 'string', format => 'dns-name',
+ type => 'string', format => 'transport-domain',
},
},
},
properties => {
domain => {
description => "Domain name.",
- type => 'string', format => 'dns-name',
+ type => 'string', format => 'transport-domain',
},
host => {
description => "Target host (name or IP address).",
properties => {
domain => {
description => "Domain name.",
- type => 'string', format => 'dns-name',
+ type => 'string', format => 'transport-domain',
},
}
},
use PVE::SafeSyslog;
use PVE::Tools qw($IPV4RE $IPV6RE);
use PVE::INotify;
+use PVE::JSONSchema;
PMG::Config::Admin->register();
PMG::Config::Mail->register();
# initialize all plugins
PMG::Config::Base->init();
+PVE::JSONSchema::register_format(
+ 'transport-domain', \&pmg_verify_transport_domain);
+sub pmg_verify_transport_domain {
+ my ($name, $noerr) = @_;
+
+ # like dns-name, but can contain leading dot
+ my $namere = "([a-zA-Z0-9]([a-zA-Z0-9\-]*[a-zA-Z0-9])?)";
+
+ if ($name !~ /^\.?(${namere}\.)*${namere}$/) {
+ return undef if $noerr;
+ die "value does not look like a valid transport domain\n";
+ }
+ return $name;
+}
sub new {
my ($type) = @_;