use Net::SSH::ssh_cmd for all job queueing rather than local duplicated ssh subs
[freeside.git] / FS / FS / svc_domain.pm
index 82b1ef1..84a1029 100644 (file)
@@ -2,16 +2,15 @@ package FS::svc_domain;
 
 use strict;
 use vars qw( @ISA $whois_hack $conf $smtpmachine
-  $tech_contact $from $to @nameservers @nameserver_ips @template
   @mxmachines @nsmachines $soadefaultttl $soaemail $soaexpire $soamachine
-  $soarefresh $soaretry $qshellmachine
+  $soarefresh $soaretry $qshellmachine $nossh_hack
 );
 use Carp;
 use Mail::Internet;
 use Mail::Header;
 use Date::Format;
 use Net::Whois 1.0;
-use Net::SSH qw(ssh);
+use Net::SSH;
 use FS::Record qw(fields qsearch qsearchs dbh);
 use FS::Conf;
 use FS::svc_Common;
@@ -20,6 +19,7 @@ use FS::svc_acct;
 use FS::cust_pkg;
 use FS::cust_main;
 use FS::domain_record;
+use FS::queue;
 
 @ISA = qw( FS::svc_Common );
 
@@ -29,23 +29,6 @@ $FS::UID::callback{'FS::domain'} = sub {
 
   $smtpmachine = $conf->config('smtpmachine');
 
-  my($internic)="/registries/internic";
-  $tech_contact = $conf->config("$internic/tech_contact");
-  $from = $conf->config("$internic/from");
-  $to = $conf->config("$internic/to");
-  my(@ns) = $conf->config("$internic/nameservers");
-  @nameservers=map {
-    /^\s*\d+\.\d+\.\d+\.\d+\s+([^\s]+)\s*$/
-      or die "Illegal line in $internic/nameservers";
-    $1;
-  } @ns;
-  @nameserver_ips=map {
-    /^\s*(\d+\.\d+\.\d+\.\d+)\s+([^\s]+)\s*$/
-      or die "Illegal line in $internic/nameservers!";
-    $1;
-  } @ns;
-  @template = map { $_. "\n" } $conf->config("$internic/template");
-
   @mxmachines    = $conf->config('mxmachines');
   @nsmachines    = $conf->config('nsmachines');
   $soadefaultttl = $conf->config('soadefaultttl');
@@ -246,6 +229,7 @@ sub insert {
   $dbh->commit or die $dbh->errstr if $oldAutoCommit;
 
   if ( $qshellmachine && $self->catchall && ! $nossh_hack ) {
+
     my $svc_acct = qsearchs( 'svc_acct', { 'svcnum' => $self->catchall } )
       or warn "WARNING: inserted unknown catchall: ". $self->catchall;
     if ( $svc_acct && $svc_acct->dir ) {
@@ -256,7 +240,13 @@ sub insert {
         $svc_acct->gid,
         $svc_acct->dir,
       );
-      ssh("root\@$qshellmachine", "[ -e $dir/.qmail-$qdomain-default ] || { touch $dir/.qmail-$qdomain-default; chown $uid:$gid $dir/.qmail-$qdomain-default; }");
+  
+    my $queue = new FS::queue {
+      'svcnum' => $self->svcnum,
+      'job'    => 'Net::SSH::ssh_cmd',
+    };
+    $error = $queue->insert("root\@$qshellmachine", "[ -e $dir/.qmail-$qdomain-default ] || { touch $dir/.qmail-$qdomain-default; chown $uid:$gid $dir/.qmail-$qdomain-default; }" );
+
     }
   }
 
@@ -279,7 +269,8 @@ sub delete {
     if qsearch( 'svc_acct', { 'domsvc' => $self->svcnum } );
 
   return "Can't delete a domain with (svc_acct_sm) mail aliases!"
-    if qsearch('svc_acct_sm', { 'domsvc' => $self->svcnum } );
+    if defined( $FS::Record::dbdef->table('svc_acct_sm') )
+       && qsearch('svc_acct_sm', { 'domsvc' => $self->svcnum } );
 
   return "Can't delete a domain with (domain_record) zone entries!"
     if qsearch('domain_record', { 'svcnum' => $self->svcnum } );
@@ -338,7 +329,7 @@ sub check {
 
   my $x = $self->setfixed;
   return $x unless ref($x);
-  my $part_svc = $x;
+  #my $part_svc = $x;
 
   my $error = $self->ut_numbern('svcnum')
               || $self->ut_numbern('catchall')
@@ -425,115 +416,15 @@ Submits a registration email for this domain.
 =cut
 
 sub submit_internic {
-  my $self = shift;
-
-  my $cust_pkg = qsearchs( 'cust_pkg', { 'pkgnum' => $self->pkgnum } );
-  return unless $cust_pkg;
-  my $cust_main = qsearchs( 'cust_main', { 'custnum' => $cust_pkg->custnum } );
-  return unless $cust_main;
-
-  my %subs = (
-    'action'       => $self->action,
-    'purpose'      => $self->purpose,
-    'domain'       => $self->domain,
-    'company'      => $cust_main->company 
-                        || $cust_main->getfield('first'). ' '.
-                           $cust_main->getfield('last')
-                      ,
-    'city'         => $cust_main->city,
-    'state'        => $cust_main->state,
-    'zip'          => $cust_main->zip,
-    'country'      => $cust_main->country,
-    'last'         => $cust_main->getfield('last'),
-    'first'        => $cust_main->getfield('first'),
-    'daytime'      => $cust_main->daytime,
-    'fax'          => $cust_main->fax,
-    'email'        => $self->email,
-    'tech_contact' => $tech_contact,
-    'primary'      => shift @nameservers,
-    'primary_ip'   => shift @nameserver_ips,
-  );
-
-  #yuck
-  my @xtemplate = @template;
-  my @body;
-  my $line;
-  OLOOP: while ( defined( $line = shift @xtemplate ) ) {
-
-    if ( $line =~ /^###LOOP###$/ ) {
-      my(@buffer);
-      LOADBUF: while ( defined( $line = shift @xtemplate ) ) {
-        last LOADBUF if ( $line =~ /^###ENDLOOP###$/ );
-        push @buffer, $line;
-      }
-      my %lubs = (
-        'address'      => $cust_main->address2 
-                            ? [ $cust_main->address1, $cust_main->address2 ]
-                            : [ $cust_main->address1 ]
-                          ,
-        'secondary'    => [ @nameservers ],
-        'secondary_ip' => [ @nameserver_ips ],
-      );
-      LOOP: while (1) {
-        my @xbuffer = @buffer;
-        SUBLOOP: while ( defined( $line = shift @xbuffer ) ) {
-          if ( $line =~ /###(\w+)###/ ) {
-            #last LOOP unless my($lub)=shift@{$lubs{$1}};
-            next OLOOP unless my $lub = shift @{$lubs{$1}};
-            $line =~ s/###(\w+)###/$lub/e;
-            redo SUBLOOP;
-          } else {
-            push @body, $line;
-          }
-        } #SUBLOOP
-      } #LOOP
-
-    }
-
-    if ( $line =~ /###(\w+)###/ ) {
-      #$line =~ s/###(\w+)###/$subs{$1}/eg;
-      $line =~ s/###(\w+)###/$subs{$1}/e;
-      redo OLOOP;
-    } else {
-      push @body, $line;
-    }
-
-  } #OLOOP
-
-  my $subject;
-  if ( $self->action eq "M" ) {
-    $subject = "MODIFY DOMAIN ". $self->domain;
-  } elsif ( $self->action eq "N" ) { 
-    $subject = "NEW DOMAIN ". $self->domain;
-  } else {
-    croak "submit_internic called with action ". $self->action;
-  }
-
-  $ENV{SMTPHOSTS} = $smtpmachine;
-  $ENV{MAILADDRESS} = $from;
-  my $header = Mail::Header->new( [
-    "From: $from",
-    "To: $to",
-    "Sender: $from",
-    "Reply-To: $from",
-    "Date: ". time2str("%a, %d %b %Y %X %z", time),
-    "Subject: $subject",
-  ] );
-
-  my($msg)=Mail::Internet->new(
-    'Header' => $header,
-    'Body' => \@body,
-  );
-
-  $msg->smtpsend or die "Can't send registration email"; #die? warn?
-
+  #my $self = shift;
+  carp "submit_internic depreciated";
 }
 
 =back
 
 =head1 VERSION
 
-$Id: svc_domain.pm,v 1.18 2001-08-20 13:10:31 ivan Exp $
+$Id: svc_domain.pm,v 1.24 2002-02-20 01:03:09 ivan Exp $
 
 =head1 BUGS