X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fsvc_domain.pm;h=fce6cf28d2a0570111df3dfb247687eaba191dcc;hb=898aa3474d66a76b84cc9508f96618d2be1a27ed;hp=4d4db5ad874a7606bfe5bdc7928875b2691bdf95;hpb=5bd5f206a77cf975515d955119d4dff7764a2d8c;p=freeside.git diff --git a/FS/FS/svc_domain.pm b/FS/FS/svc_domain.pm index 4d4db5ad8..fce6cf28d 100644 --- a/FS/FS/svc_domain.pm +++ b/FS/FS/svc_domain.pm @@ -11,7 +11,7 @@ use Mail::Internet; use Mail::Header; use Date::Format; use Net::Whois 1.0; -use FS::Record qw(fields qsearch qsearchs); +use FS::Record qw(fields qsearch qsearchs dbh); use FS::Conf; use FS::svc_Common; use FS::cust_svc; @@ -93,6 +93,8 @@ FS::svc_Common. The following fields are currently supported: =item domain +=item catchall - optional svcnum of an svc_acct record, designating an email catchall account. + =back =head1 METHODS @@ -152,6 +154,10 @@ sub insert { local $SIG{TSTP} = 'IGNORE'; local $SIG{PIPE} = 'IGNORE'; + my $oldAutoCommit = $FS::UID::AutoCommit; + local $FS::UID::AutoCommit = 0; + my $dbh = dbh; + $error = $self->check; return $error if $error; @@ -159,13 +165,20 @@ sub insert { if qsearchs( 'svc_domain', { 'domain' => $self->domain } ); my $whois = $self->whois; - return "Domain in use (see whois)" - if ( $self->action eq "N" && $whois ); - return "Domain not found (see whois)" - if ( $self->action eq "M" && ! $whois ); + if ( $self->action eq "N" && ! $whois_hack && $whois ) { + $dbh->rollback if $oldAutoCommit; + return "Domain in use (see whois)"; + } + if ( $self->action eq "M" && ! $whois ) { + $dbh->rollback if $oldAutoCommit; + return "Domain not found (see whois)"; + } $error = $self->SUPER::insert; - return $error if $error; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error; + } $self->submit_internic unless $whois_hack; @@ -175,13 +188,16 @@ sub insert { 'reczone' => '@', 'recaf' => 'IN', 'rectype' => 'SOA', - 'recdata' => "$soamachine $soaemail ( ". time2str("%Y%m%e", time). "00 ". - "$soarefresh $soarety $soaexpire $soadefaultttl )" + 'recdata' => "$soamachine $soaemail ( ". time2str("%Y%m%d", time). "00 ". + "$soarefresh $soaretry $soaexpire $soadefaultttl )" }; $error = $soa->insert; - warn "WARNING: couldn't insert SOA record for new domain: $error" if $error; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return "couldn't insert SOA record for new domain: $error"; + } - foreach $nsmachine ( @nsmachines ) { + foreach my $nsmachine ( @nsmachines ) { my $ns = new FS::domain_record { 'svcnum' => $self->svcnum, 'reczone' => '@', @@ -190,25 +206,30 @@ sub insert { 'recdata' => $nsmachine, }; my $error = $ns->insert; - warn "WARNING: couldn't insert NS record for new domain: $error" - if $error; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return "couldn't insert NS record for new domain: $error"; + } } - foreach $mxmachine ( @mxmachines ) { + foreach my $mxmachine ( @mxmachines ) { my $mx = new FS::domain_record { 'svcnum' => $self->svcnum, 'reczone' => '@', 'recaf' => 'IN', - 'rectype' => 'mx', + 'rectype' => 'MX', 'recdata' => $mxmachine, }; my $error = $mx->insert; - warn "WARNING: couldn't insert MX record for new domain: $error" - if $error; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return "couldn't insert MX record for new domain: $error"; + } } } + $dbh->commit or die $dbh->errstr if $oldAutoCommit; ''; #no error } @@ -268,7 +289,11 @@ Sets any fixed values; see L. sub check { my $self = shift; - my $error; + my $error = + $self->ut_numbern('svcnum') + || $self->ut_numbern('catchall') + ; + return $error if $error; my $x = $self->setfixed; return $x unless ref($x); @@ -317,6 +342,9 @@ sub check { $recref->{action} =~ /^(M|N)$/ or return "Illegal action"; $recref->{action} = $1; + my $svc_acct = qsearchs( 'svc_acct', { 'svcnum' => $recref->{catchall} } ); + return "Unknown catchall" unless $svc_acct || ! $recref->{catchall}; + $self->ut_textn('purpose'); } @@ -459,7 +487,7 @@ sub submit_internic { =head1 VERSION -$Id: svc_domain.pm,v 1.5 2000-02-03 05:16:52 ivan Exp $ +$Id: svc_domain.pm,v 1.14 2001-08-17 10:57:23 ivan Exp $ =head1 BUGS @@ -476,7 +504,7 @@ The $recref stuff in sub check should be cleaned up. =head1 SEE ALSO L, L, L, L, -L, L, L, L, L, +L, L, L, L, L, schema.html from the base documentation, config.html from the base documentation.