~clint-fewbar/ubuntu/hardy/spamassassin/remove-open-whois

« back to all changes in this revision

Viewing changes to lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2008-01-12 21:11:43 UTC
  • mfrom: (1.1.11 upstream)
  • Revision ID: james.westby@ubuntu.com-20080112211143-x6bpcnj60h9hsb6v
Tags: 3.2.4-0ubuntu1
* New upstream release
* Bump standards version to 3.7.3 without further change

Show diffs side-by-side

added added

removed removed

Lines of Context:
473
473
  return if $scanner->{async}->get_lookup($key);
474
474
 
475
475
  # dig $dom ns
476
 
  my $ent = $self->start_lookup ($scanner, 'NS', $self->res_bgsend($scanner, $dom, 'NS'), $key);
 
476
  my $ent = $self->start_lookup($scanner, $dom, 'NS',
 
477
                                $self->res_bgsend($scanner, $dom, 'NS', $key),
 
478
                                $key);
477
479
  $ent->{obj} = $obj;
478
480
}
479
481
 
481
483
  my ($self, $scanner, $ent, $dom) = @_;
482
484
 
483
485
  my $packet = $ent->{response_packet};
484
 
  my @answer = $packet->answer;
 
486
  my @answer = !defined $packet ? () : $packet->answer;
485
487
 
486
488
  my $IPV4_ADDRESS = IPV4_ADDRESS;
487
489
  my $IP_PRIVATE = IP_PRIVATE;
517
519
  return if $scanner->{async}->get_lookup($key);
518
520
 
519
521
  # dig $hname a
520
 
  my $ent = $self->start_lookup ($scanner, 'A', $self->res_bgsend($scanner, $hname, 'A'), $key);
 
522
  my $ent = $self->start_lookup($scanner, $hname, 'A',
 
523
                                $self->res_bgsend($scanner, $hname, 'A', $key),
 
524
                                $key);
521
525
  $ent->{obj} = $obj;
522
526
}
523
527
 
524
528
sub complete_a_lookup {
525
529
  my ($self, $scanner, $ent, $hname) = @_;
526
530
 
527
 
  foreach my $rr ($ent->{response_packet}->answer) {
 
531
  my $packet = $ent->{response_packet};
 
532
  my @answer = !defined $packet ? () : $packet->answer;
 
533
  foreach my $rr (@answer) {
528
534
    my $str = $rr->string;
529
535
    $self->log_dns_result ("A for NS $hname: $str");
530
536
 
558
564
  my $item = $lookupstr.".".$dnsbl;
559
565
 
560
566
  # dig $ip txt
561
 
  my $ent = $self->start_lookup ($scanner, 'DNSBL',
562
 
        $self->res_bgsend($scanner, $item, $qtype), $key);
 
567
  my $ent = $self->start_lookup($scanner, $item, 'DNSBL',
 
568
                              $self->res_bgsend($scanner, $item, $qtype, $key),
 
569
                              $key);
563
570
  $ent->{obj} = $obj;
564
571
  $ent->{rulename} = $rulename;
565
572
  $ent->{zone} = $dnsbl;
574
581
  my $rulecf = $conf->{uridnsbls}->{$rulename};
575
582
 
576
583
  my $packet = $ent->{response_packet};
577
 
  my @answer = $packet->answer;
 
584
  my @answer = !defined $packet ? () : $packet->answer;
578
585
 
579
586
  my $uridnsbl_subs = $conf->{uridnsbl_subs}->{$ent->{zone}};
580
587
  foreach my $rr (@answer)
645
652
# ---------------------------------------------------------------------------
646
653
 
647
654
sub start_lookup {
648
 
  my ($self, $scanner, $type, $id, $key) = @_;
 
655
  my ($self, $scanner, $zone, $type, $id, $key) = @_;
649
656
 
650
657
  my $ent = {
651
658
    key => $key,
 
659
    zone => $zone,  # serves to fetch other per-zone settings
652
660
    type => "URI-".$type,
653
661
    id => $id,
654
662
    completed_callback => sub {
655
663
      my $ent = shift;
656
 
      $self->completed_lookup_callback ($scanner, $ent);
 
664
      if (defined $ent->{response_packet}) {  # not aborted or empty
 
665
        $self->completed_lookup_callback ($scanner, $ent);
 
666
      }
657
667
    }
658
668
  };
659
669
  $scanner->{async}->start_lookup($ent);
674
684
  }
675
685
  elsif ($type eq 'URI-DNSBL') {
676
686
    $self->complete_dnsbl_lookup ($scanner, $ent, $val);
677
 
    my $totalsecs = (time - $ent->{obj}->{querystart});
678
 
    dbg("uridnsbl: query for ".$ent->{obj}->{dom}." took ".
679
 
              $totalsecs." seconds to look up ($val)");
680
687
  }
681
688
}
682
689
 
683
690
# ---------------------------------------------------------------------------
684
691
 
685
692
sub res_bgsend {
686
 
  my ($self, $scanner, $host, $type) = @_;
 
693
  my ($self, $scanner, $host, $type, $key) = @_;
687
694
 
688
695
  return $self->{main}->{resolver}->bgsend($host, $type, undef, sub {
689
 
        my $pkt = shift;
690
 
        my $id = shift;
691
 
        $scanner->{async}->set_response_packet($id, $pkt);
 
696
        my ($pkt, $id, $timestamp) = @_;
 
697
        $scanner->{async}->set_response_packet($id, $pkt, $key, $timestamp);
692
698
      });
693
699
}
694
700