Changeset 54 for trunk/dnsbl/dnsbl.cgi


Ignore:
Timestamp:
12/11/14 17:22:28 (10 years ago)
Author:
Kris Deugau
Message:

/trunk/dnsbl

Extend the number of layers/depth from 3 to 7 internally. Note that only

5 are exposed in the "add" UI.

Add support to extract the CIDR range when a WHOIS lookup gives a non-CIDR

range.

Fix tracking of "seen" IPs creating the browse display.
Add the new DNSBLweb.pm to the Makefile MANIFEST, and bump the version in

the Makefile

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dnsbl/dnsbl.cgi

    r51 r54  
    4141
    4242my $dnsbl = new DNSBL;
     43# here be drag'ns, should theoretically be $DNSBL::maxlvl, but we
     44# only have up to level 4 in the report HTML/template
     45my $maxlvl = 4
    4346
    4447# try to be friendly to non-US-ASCII characters.  Still need to find what
     
    101104  $page->param(browsebits =>
    102105        DNSBLweb::retlvl($dbh, $dnsbl, 0, ip => $webvar{ip}, block => $dnsbl->getcontainer($webvar{ip},0) ));
    103   for (my $i=0; $i<3; $i++) {
     106  for (my $i=0; $i <= $maxlvl; $i++) {
    104107    my ($block,$org) = $dnsbl->getcontainer($webvar{ip},$i);
    105108    if ($block) {
     
    119122
    120123  my $err = '';
    121   my $org0id = $dnsbl->orgexists($webvar{org0});
    122   if (!$org0id) {
    123     $org0id = $dnsbl->addorg($webvar{org0});
    124     $page->param(org0 => $webvar{org0});
     124
     125  # basic algo:  for each listing level, add the org and block if not already present.
     126  # escape the loop if we check a level with no block entered.
     127
     128  # there are still error checks that should probably be done.  changes in block
     129  # level/parenting should also Just Work(TM), rather than requiring setparents.pl
     130  # or setparents-full.pl
     131  for (my $i = 0; $i <= $maxlvl; $i++) {
     132    my $orgn = "org$i";
     133    my $blockn = "block$i";
     134    my $orgid = $dnsbl->orgexists($webvar{$orgn});
     135    if (!$orgid) {
     136      $orgid = $dnsbl->addorg($webvar{$orgn});
     137      $page->param($orgn => $webvar{$orgn});
     138    }
     139    if ($webvar{$blockn} =~ /-/) {
     140      $err .= "Autofinding CIDR block containing $webvar{ip} for range '$webvar{$blockn}': ";
     141      my ($s,$f) = split /[\s-]+/, $webvar{$blockn};
     142      my $cidr = $dnsbl->range2cidr($s, $f, $webvar{ip});
     143      $err .= "$cidr<br>\n";
     144      $webvar{$blockn} = $cidr;
     145    }
     146    if (!$dnsbl->blockexists($webvar{$blockn})) {
     147      my $ret = $dnsbl->addblock($webvar{$blockn}, $orgid, $i);
     148      $err .= "error adding $webvar{$blockn}: $ret<br>\n" if $ret;
     149      $page->param($blockn => $webvar{$blockn});
     150    }
     151    last unless $webvar{"block".($i+1)};
    125152  }
    126   if (!$dnsbl->blockexists($webvar{block0})) {
    127     my $ret = $dnsbl->addblock($webvar{block0}, $org0id, 0);
    128     $err .= "error adding $webvar{block0}: $ret<br>\n" if $ret;
    129     $page->param(block0 => $webvar{block0});
    130   }
    131 # yes, this is grotty.  PTHBTT!
    132   if ($webvar{block1}) {
    133     my $org1id = $dnsbl->orgexists($webvar{org1});
    134     if (!$org1id) {
    135       $org1id = $dnsbl->addorg($webvar{org1});
    136       $page->param(org1 => $webvar{org1});
    137     }
    138     if (!$dnsbl->blockexists($webvar{block1})) {
    139       my $ret = $dnsbl->addblock($webvar{block1}, $org1id, 1);
    140       $err .= "error adding $webvar{block1}: $ret<br>\n" if $ret;
    141       $page->param(block1 => $webvar{block1});
    142     }
    143     if ($webvar{block2}) {
    144       my $org2id = $dnsbl->orgexists($webvar{org2});
    145       if (!$org2id) {
    146         $org2id = $dnsbl->addorg($webvar{org2});
    147         $page->param(org2 => $webvar{org2});
    148       }
    149       if (!$dnsbl->blockexists($webvar{block2})) {
    150         my $ret = $dnsbl->addblock($webvar{block2}, $org2id, 2);
    151         $err .= "error adding $webvar{block2}: $ret<br>\n" if $ret;
    152         $page->param(block2 => $webvar{block2});
    153       }
    154     }
    155   }
     153
    156154  my $count = $dnsbl->report($webvar{ip});
    157155
Note: See TracChangeset for help on using the changeset viewer.