bad reuse of variable
[freeside.git] / FS / FS / domain_record.pm
index 9f00356..6f4dd02 100644 (file)
@@ -107,30 +107,33 @@ sub check {
   return "Unknown svcnum (in svc_domain)"
     unless qsearchs('svc_domain', { 'svcnum' => $self->svcnum } );
 
-  $self->reczone =~ /^(@|[a-zA-Z0-9\.\-]+)$/
+  $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);
 
-  $self->rectype =~ /^(SOA|NS|MX|A|PTR|CNAME)$/
+  $self->rectype =~ /^(SOA|NS|MX|A|PTR|CNAME|_mstr)$/
     or return "Illegal rectype (only SOA NS MX A PTR CNAME recognized): ".
               $self->rectype;
   $self->rectype($1);
 
+  return "Illegal reczone for ". $self->rectype. ": ". $self->reczone
+    if $self->rectype !~ /^MX$/i && $self->reczone =~ /\*/;
+
   if ( $self->rectype eq 'SOA' ) {
     my $recdata = $self->recdata;
     $recdata =~ s/\s+/ /g;
-    $recdata =~ /^([a-z0-9\.\-]+ [\w\-\+]+\.[a-z0-9\.\-]+ \( (\d+ ){5}\))$/
+    $recdata =~ /^([a-z0-9\.\-]+ [\w\-\+]+\.[a-z0-9\.\-]+ \( (\d+ ){5}\))$/i
       or return "Illegal data for SOA record: $recdata";
     $self->recdata($1);
   } elsif ( $self->rectype eq 'NS' ) {
-    $self->recdata =~ /^([a-z0-9\.\-]+)$/
+    $self->recdata =~ /^([a-z0-9\.\-]+)$/i
       or return "Illegal data for NS record: ". $self->recdata;
     $self->recdata($1);
   } elsif ( $self->rectype eq 'MX' ) {
-    $self->recdata =~ /^(\d+)\s+([a-z0-9\.\-]+)$/
+    $self->recdata =~ /^(\d+)\s+([a-z0-9\.\-]+)$/i
       or return "Illegal data for MX record: ". $self->recdata;
     $self->recdata("$1 $2");
   } elsif ( $self->rectype eq 'A' ) {
@@ -138,13 +141,16 @@ sub check {
       or return "Illegal data for A record: ". $self->recdata;
     $self->recdata($1);
   } elsif ( $self->rectype eq 'PTR' ) {
-    $self->recdata =~ /^([a-z0-9\.\-]+)$/
+    $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\.\-]+)$/
+    $self->recdata =~ /^([a-z0-9\.\-]+)$/i
       or return "Illegal data for CNAME record: ". $self->recdata;
     $self->recdata($1);
+  } elsif ( $self->rectype eq '_mstr' ) {
+    $self->recdata =~ /^((\d{1,3}\.){3}\d{1,3})$/
+      or return "Illegal data for _master pseudo-record: ". $self->recdata;
   } else {
     die "ack!";
   }
@@ -156,7 +162,7 @@ sub check {
 
 =head1 VERSION
 
-$Id: domain_record.pm,v 1.4 2002-04-20 10:09:42 ivan Exp $
+$Id: domain_record.pm,v 1.7 2002-04-20 11:57:35 ivan Exp $
 
 =head1 BUGS