diff options
author | ivan <ivan> | 2005-10-16 14:04:00 +0000 |
---|---|---|
committer | ivan <ivan> | 2005-10-16 14:04:00 +0000 |
commit | 4750962f384c8061f4b5c78201a449b1f41c56c7 (patch) | |
tree | c4c5051877fb1e54c9a60e050db23d4dbd0a95d7 /FS | |
parent | fecee9e62576e89223a6b0ca08e6c7a03fa5c99e (diff) |
add zone-underscore config file, update bind.import to use command-line options instead of ask for input
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/Conf.pm | 6 | ||||
-rw-r--r-- | FS/FS/domain_record.pm | 35 |
2 files changed, 32 insertions, 9 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index fc10b137e..7ba0f35be 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -1617,6 +1617,12 @@ httemplate/docs/config.html 'type' => 'checkbox', }, + { + 'key' => 'zone-underscore', + 'section' => 'BIND', + 'description' => 'Allow underscores in zone names. As underscores are illegal characters in zone names, this option is not recommended.', + 'type' => 'checkbox', + }, ); diff --git a/FS/FS/domain_record.pm b/FS/FS/domain_record.pm index e975cac51..3c65a1a05 100644 --- a/FS/FS/domain_record.pm +++ b/FS/FS/domain_record.pm @@ -250,9 +250,17 @@ sub check { return "Unknown svcnum (in svc_domain)" unless qsearchs('svc_domain', { 'svcnum' => $self->svcnum } ); - $self->reczone =~ /^(@|[a-z0-9\.\-\*]+)$/i - or return "Illegal reczone: ". $self->reczone; - $self->reczone($1); + my $conf = new FS::Conf; + + if ( $conf->exists('zone-underscore') ) { + $self->reczone =~ /^(@|[a-z0-9_\.\-\*]+)$/i + or return "Illegal reczone: ". $self->reczone; + $self->reczone($1); + } else { + $self->reczone =~ /^(@|[a-z0-9\.\-\*]+)$/i + or return "Illegal reczone: ". $self->reczone; + $self->reczone($1); + } $self->recaf =~ /^(IN)$/ or return "Illegal recaf: ". $self->recaf; $self->recaf($1); @@ -284,17 +292,26 @@ sub check { or return "Illegal data for A record: ". $self->recdata; $self->recdata($1); } elsif ( $self->rectype eq 'PTR' ) { - $self->recdata =~ /^([a-z0-9\.\-]+)$/i - or return "Illegal data for PTR record: ". $self->recdata; - $self->recdata($1); + if ( $conf->exists('zone-underscore') ) { + $self->recdata =~ /^([a-z0-9_\.\-]+)$/i + or return "Illegal data for PTR record: ". $self->recdata; + $self->recdata($1); + } else { + $self->recdata =~ /^([a-z0-9\.\-]+)$/i + or return "Illegal data for PTR record: ". $self->recdata; + $self->recdata($1); + } } elsif ( $self->rectype eq 'CNAME' ) { $self->recdata =~ /^([a-z0-9\.\-]+|\@)$/i or return "Illegal data for CNAME record: ". $self->recdata; $self->recdata($1); } elsif ( $self->rectype eq 'TXT' ) { - $self->recdata =~ /^((?:\S+)|(?:".+"))$/ - or return "Illegal data for TXT record: ". $self->recdata; - $self->recdata($1); + if ( $self->recdata =~ /^((?:\S+)|(?:".+"))$/ ) { + $self->recdata($1); + } else { + $self->recdata('"'. $self->recdata. '"'); #? + } + # or return "Illegal data for TXT record: ". $self->recdata; } elsif ( $self->rectype eq '_mstr' ) { $self->recdata =~ /^((\d{1,3}\.){3}\d{1,3})$/ or return "Illegal data for _master pseudo-record: ". $self->recdata; |