Changeset 159 for branches/stable


Ignore:
Timestamp:
02/09/05 17:11:19 (19 years ago)
Author:
Kris Deugau
Message:

/branches/stable

Merged /trunk r157 in. Clean merge required reversing r152,
which isn't a problem as the updated code contains the fix
along with other changes made to the same line(s) of code.

Location:
branches/stable
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/stable/cgi-bin/IPDB.pm

    r158 r159  
    5858
    5959  # Initialize alloctypes hashes
    60   $sth = $dbh->prepare("select * from alloctypes order by listorder");
     60  $sth = $dbh->prepare("select type,listname,dispname,listorder from alloctypes order by listorder");
    6161  $sth->execute;
    6262  while (my @data = $sth->fetchrow_array) {
     
    6868
    6969  # City and POP listings
    70   $sth = $dbh->prepare("select * from cities order by city");
     70  $sth = $dbh->prepare("select city,routing from cities order by city");
    7171  $sth->execute;
    7272  return (undef,$sth->errstr) if $sth->err;
     
    7979
    8080  # Master block list
    81   $sth = $dbh->prepare("select * from masterblocks order by cidr");
     81  $sth = $dbh->prepare("select cidr from masterblocks order by cidr");
    8282  $sth->execute;
    8383  for (my $i=0; my @data = $sth->fetchrow_array(); $i++) {
     
    120120# Return here if we can't select.  Note that this indicates a
    121121# problem executing the select.
    122   my $sth = $dbh->prepare('select cidr from masterblocks');
     122  my $sth = $dbh->prepare("select cidr from masterblocks");
    123123  $sth->execute();
    124124  return (undef,$DBI::errstr) if ($sth->err);
     
    154154  } else {
    155155    # it connects, try a stmt.
    156     my $sth = $dbh->prepare('select cidr from masterblocks');
     156    my $sth = $dbh->prepare("select cidr from masterblocks");
    157157    my $err = $sth->execute();
    158158
     
    189189  local $dbh->{RaiseError} = 1; # step on our toes by accident.
    190190
    191   if ($type =~ /^[cdsmw]i$/) {
     191  if ($type =~ /^.i$/) {
    192192    $msg = "Unable to assign static IP $cidr to $custid";
    193193    eval {
    194       # We'll just have to put up with the oddities caused by SQL (un)sort order
    195       $sth = $dbh->prepare("select * from poolips where pool='$alloc_from'".
    196         " and available='y' order by ip");
    197       $sth->execute;
    198 
     194      # We have to do this in two parts because otherwise we lose
     195      # the ability to return the IP assigned.  Should that change,
     196      # the commented SQL statement below may become usable.
    199197# update poolips set custid='$custid',city='$city',available='n',
    200198#       description='$desc',notes='$notes',circuitid='$circid'
    201199#       where ip=(select ip from poolips where pool='$alloc_from'
    202200#       and available='y' order by ip limit 1);
    203 ##err Need better handling here;  what if there's no free IPs when this sub gets called?
     201
     202      $sth = $dbh->prepare("select ip from poolips where pool='$alloc_from'".
     203        " and available='y' order by ip");
     204      $sth->execute;
     205
    204206      my @data = $sth->fetchrow_array;
    205       $cidr = $data[1];  # $cidr is already declared when we get here!
     207      $cidr = $data[0];  # $cidr is already declared when we get here!
    206208
    207209      $sth = $dbh->prepare("update poolips set custid='$custid',".
     
    234236            " where cidr='$cidr'");
    235237          $sth->execute;
    236           $sth = $dbh->prepare("insert into routed values ('$cidr',".
    237             $cidr->masklen.",'$city')");
     238          $sth = $dbh->prepare("insert into routed (cidr,maskbits,city)".
     239                " values ('$cidr',".$cidr->masklen.",'$city')");
    238240          $sth->execute;
    239241        } else {
     
    242244          $sth->execute;
    243245
    244           $sth = $dbh->prepare("insert into allocations values ('$cidr',".
    245                 "'$custid','$type','$city','$desc','$notes',".
     246          $sth = $dbh->prepare("insert into allocations".
     247                " (cidr,custid,type,city,description,notes,maskbits,circuitid)".
     248                " values ('$cidr','$custid','$type','$city','$desc','$notes',".
    246249                $cidr->masklen.",'$circid')");
    247250          $sth->execute;
    248251
    249252          # And initialize the pool, if necessary
     253          # PPPoE pools (currently dialup, DSL, and WiFi) get all IPs made available
     254          # "DHCP" or "real-subnet" pools have the net, gw, and bcast IPs removed.
    250255          if ($type =~ /^.p$/) {
    251             $msg = "Could not initialize IPs in new $disp_alloctypes{$type} pool $cidr";
    252             initPool($dbh,$cidr,$type,$city,(($type eq 'dp' or $type eq 'mp') ? "all" : "normal"));
     256            $msg = "Could not initialize IPs in new $disp_alloctypes{$type} $cidr";
     257            my ($code,$rmsg) = initPool($dbh,$cidr,$type,$city,"all");
     258            die $rmsg if $code eq 'FAIL';
     259          } elsif ($type =~ /^.d$/) {
     260            $msg = "Could not initialize IPs in new $disp_alloctypes{$type} $cidr";
     261            my ($code,$rmsg) = initPool($dbh,$cidr,$type,$city,"normal");
     262            die $rmsg if $code eq 'FAIL';
    253263          }
    254264
     
    258268      }; # end of eval
    259269      if ($@) {
    260         $msg = $@;
     270        $msg .= ": ".$@;
    261271        eval { $dbh->rollback; };
    262         return ('FAIL',$@);
     272        return ('FAIL',$msg);
    263273      } else {
    264274        return ('OK',"OK");
     
    297307          # Insert the new freeblocks entries
    298308          # Note that non-routed blocks are assigned to <NULL>
    299           $sth = $dbh->prepare("insert into freeblocks values (?, ?, '<NULL>','n')");
     309          # and use the default value for the routed column ('n')
     310          $sth = $dbh->prepare("insert into freeblocks (cidr,maskbits,city)".
     311                " values (?, ?, '<NULL>')");
    300312          foreach my $block (@newfreeblocks) {
    301313            $sth->execute("$block", $block->masklen);
     
    303315
    304316          # Insert the entry in the routed table
    305           $sth = $dbh->prepare("insert into routed values ('$cidr',".
    306             $cidr->masklen.",'$city')");
     317          $sth = $dbh->prepare("insert into routed (cidr,maskbits,city)".
     318                " values ('$cidr',".$cidr->masklen.",'$city')");
    307319          $sth->execute;
    308320          # Insert the (almost) same entry in the freeblocks table
    309           $sth = $dbh->prepare("insert into freeblocks values ('$cidr',".
    310             $cidr->masklen.",'$city','y')");
     321          $sth = $dbh->prepare("insert into freeblocks (cidr,maskbits,city,routed)".
     322                " values ('$cidr',".$cidr->masklen.",'$city','y')");
    311323          $sth->execute;
    312324
     
    314326
    315327          # Insert the new freeblocks entries
    316           $sth = $dbh->prepare("insert into freeblocks values (?, ?, ".
    317                 "(select city from routed where cidr >>= '$cidr'),'y')");
     328          $sth = $dbh->prepare("insert into freeblocks (cidr,maskbits,city,routed)".
     329                " values (?, ?, (select city from routed where cidr >>= '$cidr'),'y')");
    318330          foreach my $block (@newfreeblocks) {
    319331            $sth->execute("$block", $block->masklen);
     
    321333
    322334          # Insert the allocations entry
    323           $sth = $dbh->prepare("insert into allocations values ('$cidr',".
    324                 "'$custid','$type','$city','$desc','$notes',".$cidr->masklen.
    325                 ",'$circid')");
     335          $sth = $dbh->prepare("insert into allocations (cidr,custid,type,city,".
     336                "description,notes,maskbits,circuitid)".
     337                " values ('$cidr','$custid','$type','$city','$desc','$notes',".
     338                $cidr->masklen.",'$circid')");
    326339          $sth->execute;
    327340
    328341          # And initialize the pool, if necessary
     342          # PPPoE pools (currently dialup, DSL, and WiFi) get all IPs made available
     343          # "DHCP" or "real-subnet" pools have the net, gw, and bcast IPs removed.
    329344          if ($type =~ /^.p$/) {
    330345            $msg = "Could not initialize IPs in new $disp_alloctypes{$type} $cidr";
    331             initPool($dbh,$cidr,$type,$city,($type eq 'dp' ? "all" : "normal"));
     346            my ($code,$rmsg) = initPool($dbh,$cidr,$type,$city,"all");
     347            die $rmsg if $code eq 'FAIL';
     348          } elsif ($type =~ /^.d$/) {
     349            $msg = "Could not initialize IPs in new $disp_alloctypes{$type} $cidr";
     350            my ($code,$rmsg) = initPool($dbh,$cidr,$type,$city,"normal");
     351            die $rmsg if $code eq 'FAIL';
    332352          }
    333353
     
    361381  my $pool = new NetAddr::IP $_[1];
    362382
    363   my ($pooltype) = ($type =~ /^(.)p$/);
     383##fixme Need to just replace 2nd char of type with i rather than capturing 1st char of type
     384  $type =~ s/[pd]$/i/;
    364385  my $sth;
    365 
    366   # have to insert all pool IPs into poolips table as "unallocated".
    367   $sth = $dbh->prepare("insert into poolips values ('$pool',".
    368         " ?, '6750400', '$city', '$pooltype', 'y', '', '', '')");
    369   my @poolip_list = $pool->hostenum;
    370   if ($class eq 'all') { # (DSL-ish block - *all* IPs available
    371     $sth->execute($pool->addr);
    372     for (my $i=0; $i<=$#poolip_list; $i++) {
    373       $sth->execute($poolip_list[$i]->addr);
    374     }
    375     $pool--;
    376     $sth->execute($pool->addr);
    377   } else { # (real netblock)
    378     for (my $i=1; $i<=$#poolip_list; $i++) {
    379       $sth->execute($poolip_list[$i]->addr);
    380     }
     386  my $msg;
     387
     388  # Trap errors so we can pass them back to the caller.  Even if the
     389  # caller is only ever supposed to be local, and therefore already
     390  # trapping errors.  >:(
     391  local $dbh->{AutoCommit} = 0; # These need to be local so we don't
     392  local $dbh->{RaiseError} = 1; # step on our toes by accident.
     393
     394  eval {
     395    # have to insert all pool IPs into poolips table as "unallocated".
     396    $sth = $dbh->prepare("insert into poolips (pool,ip,custid,city,type)".
     397        " values ('$pool', ?, '6750400', '$city', '$type')");
     398    my @poolip_list = $pool->hostenum;
     399    if ($class eq 'all') { # (DSL-ish block - *all* IPs available
     400      $sth->execute($pool->addr);
     401      for (my $i=0; $i<=$#poolip_list; $i++) {
     402        $sth->execute($poolip_list[$i]->addr);
     403      }
     404      $pool--;
     405      $sth->execute($pool->addr);
     406    } else { # (real netblock)
     407      for (my $i=1; $i<=$#poolip_list; $i++) {
     408        $sth->execute($poolip_list[$i]->addr);
     409      }
     410    }
     411  };
     412  if ($@) {
     413    $msg = "'".$sth->errstr."'";
     414    eval { $dbh->rollback; };
     415    return ('FAIL',$msg);
     416  } else {
     417    return ('OK',"OK");
    381418  }
    382419} # end initPool()
     
    406443
    407444    eval {
    408       $msg = "Unable to deallocate $type $cidr";
     445      $msg = "Unable to deallocate $disp_alloctypes{$type} $cidr";
    409446      $sth = $dbh->prepare("update poolips set custid='6750400',available='y',".
    410447        "city=(select city from allocations where cidr >>= '$cidr'),".
     
    455492        $sth->execute;
    456493        # Set up query to start compacting free blocks.
    457         $sth = $dbh->prepare("select * from freeblocks where ".
     494        $sth = $dbh->prepare("select cidr from freeblocks where ".
    458495                "maskbits<=".$cidr->masklen." and routed='n' order by maskbits desc");
    459496
     
    463500        $sth->execute;
    464501        # Special case - delete pool IPs
    465         if ($type =~ /^.p$/) {
     502        if ($type =~ /^.[pd]$/) {
    466503          # We have to delete the IPs from the pool listing.
    467504          $sth = $dbh->prepare("delete from poolips where pool='$cidr'");
     
    470507
    471508        # Set up query for compacting free blocks.
    472         $sth = $dbh->prepare("select * from freeblocks where cidr <<= ".
     509        $sth = $dbh->prepare("select cidr from freeblocks where cidr <<= ".
    473510                "(select cidr from routed where cidr >>= '$cidr') ".
    474511                " and maskbits<=".$cidr->masklen." and routed='y' order by maskbits desc");
     
    533570      # insert "new" freeblocks entry
    534571      if ($type eq 'rr') {
    535         $sth = $dbh->prepare("insert into freeblocks values ('$cidr',".$cidr->masklen.
    536                 ",'<NULL>','n')");
     572        $sth = $dbh->prepare("insert into freeblocks (cidr,maskbits,city)".
     573                " values ('$cidr',".$cidr->masklen.",'<NULL>')");
    537574      } else {
    538         $sth = $dbh->prepare("insert into freeblocks values ('$cidr',".$cidr->masklen.
     575        $sth = $dbh->prepare("insert into freeblocks (cidr,maskbits,city,routed)".
     576                " values ('$cidr',".$cidr->masklen.
    539577                ",(select city from routed where cidr >>= '$cidr'),'y')");
    540578      }
  • branches/stable/cgi-bin/main.cgi

    r158 r159  
    5757cleanInput(\%webvar);
    5858
    59 # Stuff that gets loaded from the database
    60 #my @citylist;
    61 #my @poplist;
    62 #my %allocated; # Count for allocated blocks in a master block
    63 #my %free;      # Count for free blocks (routed and unrouted) in a master block
    64 #my %bigfree;   # Tracking largest free block in a master block
    65 #my %routed;    # Number of routed blocks in a master block
    66 
    67 # Slurp up the master block list - we need this several places
    68 # While we're at it, initialize the related hashes.
    69 #$sth = $ip_dbh->prepare("select * from masterblocks order by cidr");
    70 #$sth->execute;
    71 #for (my $i=0; my @data = $sth->fetchrow_array(); $i++) {
    72 #  $masterblocks[$i] = new NetAddr::IP $data[0];
    73 #  $allocated{"$masterblocks[$i]"} = 0;
    74 #  $free{"$masterblocks[$i]"} = 0;
    75 #  $bigfree{"$masterblocks[$i]"} = 128; # Larger number means smaller block.
    76 #                                       # Set to 128 to prepare for IPv6
    77 #  $routed{"$masterblocks[$i]"} = 0;
    78 #}
    79 
    80 
    81 
    8259
    8360#main()
     
    11087# Thus the "routed" flag.
    11188
    112     $sth = $ip_dbh->prepare("insert into freeblocks values ('$webvar{cidr}',".
    113         $cidr->masklen.",'<NULL>','n')");
     89    $sth = $ip_dbh->prepare("insert into freeblocks (cidr,maskbits,city,routed)".
     90        " values ('$webvar{cidr}',".$cidr->masklen.",'<NULL>','n')");
    11491    $sth->execute;
    11592
     
    349326    # Fix up types from pools (which are single-char)
    350327    # Fixing the database would be...  painful.  :(
     328##fixme LEGACY CODE
    351329    if ($data[2] =~ /^[cdsmw]$/) {
    352330      $data[2] .= 'i';
     
    355333        $data[1], $disp_alloctypes{$data[2]}, $data[3], $data[4]);
    356334    # Allow listing of pool if desired/required.
    357     if ($data[2] =~ /^[cdsmw]p$/) {
     335    if ($data[2] =~ /^.[pd]$/) {
    358336      $row[0] .= ' &nbsp; <a href="/ip/cgi-bin/main.cgi?action=listpool'.
    359337        "&pool=$data[0]\">List IPs</a>";
     
    494472
    495473  # Fetch only the blocks relevant to this master
    496   $sth = $ip_dbh->prepare("select * from routed where cidr <<= '$master' order by cidr");
     474  $sth = $ip_dbh->prepare("select cidr,city from routed where cidr <<= '$master' order by cidr");
    497475  $sth->execute();
    498476
     
    505483    $bigfree{"$cidr"} = 128;
    506484    # Retain the routing destination
    507     $routed{"$cidr"} = $data[2];
     485    $routed{"$cidr"} = $data[1];
    508486  }
    509487
     
    597575  my $master = new NetAddr::IP $webvar{block};
    598576
    599   $sth = $ip_dbh->prepare("select * from routed where cidr='$master'");
     577  $sth = $ip_dbh->prepare("select city from routed where cidr='$master'");
    600578  $sth->execute;
    601579  my @data = $sth->fetchrow_array;
    602580
    603581  print qq(<center><div class="heading">Summarizing allocated blocks for ).
    604         qq($master ($data[2]):</div></center><br>\n);
     582        qq($master ($data[0]):</div></center><br>\n);
    605583
    606584  startTable('CIDR allocation','Customer Location','Type','CustID','Description/Name');
    607585
    608586  # Snag the allocations for this block
    609   $sth = $ip_dbh->prepare("select * from allocations where cidr <<= '$master' order by cidr");
     587  $sth = $ip_dbh->prepare("select cidr,city,type,custid,description".
     588        " from allocations where cidr <<= '$master' order by cidr");
    610589  $sth->execute();
    611590
    612591  my $count=0;
    613592  while (my @data = $sth->fetchrow_array()) {
    614     # cidr,custid,type,city,description,notes,maskbits,circuitid
     593    # cidr,city,type,custid,description, as per the SELECT
    615594    my $cidr = new NetAddr::IP $data[0];
    616595
    617596    # Clean up extra spaces that are borking things.
    618     $data[2] =~ s/\s+//g;
     597#    $data[2] =~ s/\s+//g;
    619598
    620599    my @row = ("<a href=\"/ip/cgi-bin/main.cgi?action=edit&block=$data[0]\">$data[0]</a>",
    621         $data[3], $disp_alloctypes{$data[2]}, $data[1], $data[4]);
     600        $data[1], $disp_alloctypes{$data[2]}, $data[3], $data[4]);
    622601    # If the allocation is a pool, allow listing of the IPs in the pool.
    623     if ($data[2] =~ /^[cdsmw]p$/) {
     602    if ($data[2] =~ /^.[pd]$/) {
    624603      $row[0] .= ' &nbsp; <a href="/ip/cgi-bin/main.cgi?action=listpool'.
    625604        "&pool=$data[0]\">List IPs</a>";
     
    654633  # unrouted free blocks, but it's better to let the database do the work if we can.
    655634  $count = 0;
    656   $sth = $ip_dbh->prepare("select * from freeblocks where routed='y' and cidr <<= '$master' order by cidr");
     635  $sth = $ip_dbh->prepare("select cidr from freeblocks where routed='y' and cidr <<= '$master' order by cidr");
    657636  $sth->execute();
    658637  while (my @data = $sth->fetchrow_array()) {
     
    676655  my $cidr = new NetAddr::IP $webvar{pool};
    677656
     657  my ($pooltype,$poolcity);
     658
    678659  # Snag pool info for heading
    679   $sth = $ip_dbh->prepare("select * from allocations where cidr='$cidr'");
     660  $sth = $ip_dbh->prepare("select type,city from allocations where cidr='$cidr'");
    680661  $sth->execute;
    681   my @data = $sth->fetchrow_array;
    682   my $type = $data[2];  # We'll need this later.
     662  $sth->bind_columns(\$pooltype, \$poolcity);
     663  $sth->fetch() || carp $sth->errstr;
    683664
    684665  print qq(<center><div class="heading">Listing pool IPs for $cidr<br>\n).
    685         qq(($disp_alloctypes{$type} in $data[3])</div></center><br>\n);
    686   print qq(<div class="indent"><b>Reserved IPs:</b><br>\n);
    687   print qq(<div class="indent"><table><tr class=color1><td>Network IP:</td><td>).
     666        qq(($disp_alloctypes{$pooltype} in $poolcity)</div></center><br>\n);
     667  # Only display net/gw/bcast if it's a "real" netblock and not a PPP(oE) lunacy
     668  if ($pooltype =~ /^.d$/) {
     669    print qq(<div class="indent"><b>Reserved IPs:</b><br>\n);
     670    print qq(<div class="indent"><table><tr class=color1><td>Network IP:</td><td>).
    688671        $cidr->addr."</td></tr>\n";
    689   $cidr++;
    690   print "<tr class=color2><td>Gateway:</td><td>".$cidr->addr."</td></tr>\n";
    691   $cidr--;  $cidr--;
    692   print "<tr class=color1><td>Broadcast:</td><td>".$cidr->addr."</td></tr>\n".
     672    $cidr++;
     673    print "<tr class=color2><td>Gateway:</td><td>".$cidr->addr."</td></tr>\n";
     674    $cidr--;  $cidr--;
     675    print "<tr class=color1><td>Broadcast:</td><td>".$cidr->addr."</td></tr>\n".
    693676        "<tr><td>Netmask:</td><td>".$cidr->mask."</td></tr>\n".
    694677        "</table></div></div>\n";
     678  }
    695679
    696680# probably have to add an "edit IP allocation" link here somewhere.
    697681
    698682  startTable('IP','Customer ID','Available?','Description','');
    699   $sth = $ip_dbh->prepare("select * from poolips where pool='$webvar{pool}' order by ip");
     683  $sth = $ip_dbh->prepare("select ip,custid,available,description,type".
     684        " from poolips where pool='$webvar{pool}' order by ip");
    700685  $sth->execute;
    701686  my $count = 0;
    702687  while (my @data = $sth->fetchrow_array) {
    703688    # pool,ip,custid,city,ptype,available,notes,description,circuitid
    704     # If desc is null, make it not null.  <g>
    705     if ($data[7] eq '') {
    706       $data[7] = '&nbsp;';
     689    # ip,custid,available,description,type
     690    # If desc is "null", make it not null.  <g>
     691    if ($data[3] eq '') {
     692      $data[3] = '&nbsp;';
    707693    }
    708694    # Some nice hairy Perl to decide whether to allow unassigning each IP
    709     #   -> if $data[5] (aka poolips.available) == 'n' then we print the unassign link
     695    #   -> if $data[2] (aka poolips.available) == 'n' then we print the unassign link
    710696    #      else we print a blank space
    711     my @row = ( qq(<a href="/ip/cgi-bin/main.cgi?action=edit&block=$data[1]">$data[1]</a>),
    712         $data[2],$data[5],$data[7],
    713         ( ($data[5] eq 'n') ?
    714           ("<a href=\"/ip/cgi-bin/main.cgi?action=delete&block=$data[1]&".
    715            "alloctype=$data[4]i\">Unassign this IP</a>") :
     697    my @row = ( qq(<a href="/ip/cgi-bin/main.cgi?action=edit&block=$data[0]">$data[0]</a>),
     698        $data[1],$data[2],$data[3],
     699        ( ($data[2] eq 'n') ?
     700          ("<a href=\"/ip/cgi-bin/main.cgi?action=delete&block=$data[0]&".
     701           "alloctype=$data[4]\">Unassign this IP</a>") :
    716702          ("&nbsp;") )
    717703        );
     
    803789#  + Different flavours of netblock
    804790
    805   if ($webvar{alloctype} =~ /^[cdsmw]i$/) {
     791  if ($webvar{alloctype} =~ /^.i$/) {
    806792    my ($base,undef) = split //, $webvar{alloctype};    # split into individual chars
    807793    my $sql;
     
    810796    # ... aside from #^%#$%#@#^%^^!!!! legacy data.  GRRR.
    811797    # Note that we want to retain the requested city to relate to customer info.
     798##fixme This needs thought.
     799##SELECT DISTINCT pool, Count(*) FROM poolips where available='y' GROUP BY pool;
    812800    if ($base =~ /^[ds]$/) {
    813801      $sql = "select * from poolips where available='y' and".
     
    863851##fixme
    864852# This section needs serious Pondering.
    865         if ($webvar{alloctype} =~ /^[cdsmw]p$/) {
     853        if ($webvar{alloctype} =~ /^.[pd]$/) {
    866854          if (($webvar{city} !~ /^(Sudbury|North Bay)$/) && ($webvar{alloctype} eq 'dp')) {
    867855            printError("You must chose Sudbury or North Bay for DSL pools.");
     
    879867        }
    880868        if ($webvar{allocfrom} ne '-') {
    881           $sql = "select * from freeblocks where city='$city' and maskbits<=$webvar{maskbits}".
     869          $sql = "select cidr from freeblocks where city='$city' and maskbits<=$webvar{maskbits}".
    882870                " and cidr <<= '$webvar{allocfrom}' and routed='y' order by cidr,maskbits desc";
    883871        } else {
    884           $sql = "select * from freeblocks where city='$city' and maskbits<=$webvar{maskbits}".
     872          $sql = "select cidr from freeblocks where city='$city' and maskbits<=$webvar{maskbits}".
    885873                " and routed='y' order by cidr,maskbits desc";
    886874        }
     
    908896      $cidr = $subblocks[0];
    909897    }
    910   } # if ($webvar{alloctype} =~ /^[cdsmw]i$/)
     898  } # if ($webvar{alloctype} =~ /^.i$/)
    911899
    912900  open HTML, "../confirm.html"
     
    974962        "'$webvar{alloctype}' by $authuser failed: '$msg'";
    975963    printError("Allocation of $webvar{fullcidr} as $disp_alloctypes{$webvar{alloctype}}".
    976         " failed: $msg\n");
     964        " failed:<br>\n$msg\n");
    977965  }
    978966
     
    10831071  $data[2] =~ s/\s//;
    10841072
     1073##fixme LEGACY CODE
    10851074  # Postfix "i" on pool IP types
    10861075  if ($data[2] =~ /^[cdsmw]$/) {
     
    11451134    # Relatively simple SQL transaction here.
    11461135    my $sql;
    1147     if (my $pooltype = ($webvar{alloctype} =~ /^([cdsmw])i$/) ) {
     1136    if (my $pooltype = ($webvar{alloctype} =~ /^(.)i$/) ) {
    11481137      $sql = "update poolips set custid='$webvar{custid}',notes='$webvar{notes}',".
    11491138        "circuitid='$webvar{circid}',description='$webvar{desc}' ".
     
    11541143        "type='$webvar{alloctype}',circuitid='$webvar{circid}' where cidr='$webvar{block}'";
    11551144    }
    1156 syslog "debug", $sql;
     1145    # Log the details of the change.
     1146    syslog "debug", $sql;
    11571147    $sth = $ip_dbh->prepare($sql);
    11581148    $sth->execute;
     
    12321222    $desc = "N/A";
    12331223    $notes = "N/A";
    1234   } elsif ($webvar{alloctype} =~ /^[cdsmw]i$/) { # done with alloctype=rr
     1224  } elsif ($webvar{alloctype} =~ /^.i$/) { # done with alloctype=rr
    12351225
    12361226    # Unassigning a static IP
     
    12451235    $alloctype .="i";
    12461236
    1247   } else { # done with alloctype=[cdsmw]i
     1237  } else { # done with alloctype=~ /^.i$/
    12481238
    12491239    my $sth = $ip_dbh->prepare("select cidr,custid,type,city,circuitid,description,notes from ".
     
    12701260
    12711261  # Set the warning text.
    1272   if ($alloctype =~ /^[cdsmw]p$/) {
     1262  if ($alloctype =~ /^.[pd]$/) {
    12731263    $html =~ s|<!--warn-->|<tr bgcolor="black"><td colspan="2"><div class="red">Warning: clicking confirm will remove this record entirely.<br>Any IPs allocated from this pool will also be removed!</div></td></tr>|;
    12741264  } else {
  • branches/stable/changes.html

    r140 r159  
    1212<tr><td class="heading" colspan=2>Changes to the IPDB</td><tr>
    1313
     14<tr class="color1">
     15<td valign=top>02/09/2005</td>
     16<td>Pool handling has been cleaned up - all PPP-ish pools (modem, DSL, WiFi) now generate a
     17full list of IPs rather than reserving the network, gateway, and broadcast IPs necessary on
     18a "real" subnet.  They will also not display this incorrect and useless information.
     19</td></tr>
    1420<tr class="color2">
    1521<td valign=top>01/27/2005</td>
Note: See TracChangeset for help on using the changeset viewer.