Changeset 575
- Timestamp:
- 12/21/12 17:43:19 (12 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/cgi-bin/main.cgi
r571 r575 286 286 $page->param(rowa => 'row'.($webvar{block} eq '' ? 1 : 0)); 287 287 $page->param(rowb => 'row'.($webvar{block} eq '' ? 0 : 1)); 288 $page->param(block => $webvar{block}); # fb-assign flag, if block is set, we're in fb-assign 289 $page->param(iscontained => ($webvar{fbtype} && $webvar{fbtype} ne 'y')); 290 291 # New special case- block to assign is specified 288 $page->param(allocfrom => $webvar{block}); # fb-assign flag, if block is set, we're in fb-assign 289 292 290 if ($webvar{block} ne '') { 291 292 # Common case, according to reported usage. Block to assign is specified. 293 293 my $block = new NetAddr::IP $webvar{block}; 294 295 # Handle contained freeblock allocation. 296 # This is a little dangerous, as it's *theoretically* possible to 297 # get fbtype='n' (aka a non-routed freeblock). However, should 298 # someone manage to get there, they get what they deserve. 299 if ($webvar{fbtype} ne 'y') { 300 # Snag the type of the container block from the database. 301 ## hmm. need a flag for parent class/type, sort of? 302 my $pblock = subParent($ip_dbh, $webvar{block}); 303 my $ptype = $pblock->{type}; 304 $ptype =~ s/c$/r/; 305 $page->param(fbdisptype => $list_alloctypes{$ptype}); 306 $page->param(type => $ptype); 294 $page->param(rdepth => $webvar{rdepth}); 295 296 $webvar{fbtype} = '' if !$webvar{fbtype}; 297 if ($webvar{fbtype} eq 'i') { 298 my $ipinfo = getBlockData($ip_dbh, $block); 299 $page->param( 300 fbip => 1, 301 block => $block, 302 fbdisptype => $list_alloctypes{$ipinfo->{type}}, 303 type => $ipinfo->{type}, 304 allocfrom => $ipinfo->{pool}, 305 ); 307 306 } else { 308 307 # get "primary" alloctypes, since these are all that can correctly be assigned if we're in this branch 309 my $tlist = getTypeList($ip_dbh, ' p');308 my $tlist = getTypeList($ip_dbh, 'n'); 310 309 $tlist->[0]->{sel} = 1; 311 $page->param(typelist => $tlist); 312 } 310 $page->param(typelist => $tlist, block => $block); 311 } 312 313 313 } else { 314 315 # Uncommon case, according to reported usage. Block to assign needs to be found based on criteria. 314 316 my $mlist = getMasterList($ip_dbh, 'c'); 315 317 $page->param(masterlist => $mlist); … … 364 366 # + Different flavours of netblock 365 367 366 if ($webvar{alloctype} =~ /^.i$/ ) {368 if ($webvar{alloctype} =~ /^.i$/ && $webvar{fbassign} ne 'y') { 367 369 my $plist = getPoolSelect($ip_dbh, $webvar{alloctype}, $webvar{pop}); 368 370 $page->param(staticip => 1); … … 375 377 if ($webvar{fbassign} && $webvar{fbassign} eq 'y') { 376 378 $cidr = new NetAddr::IP $webvar{block}; 379 $alloc_from = new NetAddr::IP $webvar{allocfrom}; 377 380 $webvar{maskbits} = $cidr->masklen; 378 381 } else { # done with direct freeblocks assignment … … 402 405 } 403 406 404 $cidr = findAllocateFrom($ip_dbh, $webvar{maskbits}, $webvar{alloctype}, $webvar{city}, $webvar{pop}, 405 (master => $webvar{allocfrom}, allowpriv => $webvar{allowpriv}) ); 407 ## fixme: add rdepth? 408 ($cidr,$webvar{rdepth}) = findAllocateFrom($ip_dbh, $webvar{maskbits}, $webvar{alloctype}, $webvar{city}, 409 $webvar{pop}, (master => $webvar{allocfrom}, allowpriv => $webvar{allowpriv}) ); 406 410 if (!$cidr) { 407 411 $page->param(err => $failmsg); … … 409 413 } 410 414 $cidr = new NetAddr::IP $cidr; 415 416 # this chunk now specific to "guided" allocation; freeblock-select can now slice-n-dice on its own. 417 $alloc_from = "$cidr"; 418 # If the block to be allocated is smaller than the one we found, 419 # figure out the "real" block to be allocated. 420 if ($cidr->masklen() ne $webvar{maskbits}) { 421 my $maskbits = $cidr->masklen(); 422 my @subblocks; 423 while ($maskbits++ < $webvar{maskbits}) { 424 @subblocks = $cidr->split($maskbits); 425 } 426 $cidr = $subblocks[0]; 427 } 411 428 } # check for freeblocks assignment or IPDB-controlled assignment 412 429 413 $alloc_from = "$cidr";414 415 # If the block to be allocated is smaller than the one we found,416 # figure out the "real" block to be allocated.417 if ($cidr->masklen() ne $webvar{maskbits}) {418 my $maskbits = $cidr->masklen();419 my @subblocks;420 while ($maskbits++ < $webvar{maskbits}) {421 @subblocks = $cidr->split($maskbits);422 }423 $cidr = $subblocks[0];424 }425 430 } # if ($webvar{alloctype} =~ /^.i$/) 426 431 … … 437 442 $page->param(typefull => $q->escapeHTML($disp_alloctypes{$webvar{alloctype}})); 438 443 $page->param(alloc_from => $alloc_from); 444 $page->param(rdepth => $webvar{rdepth}); 439 445 $page->param(cidr => $cidr); 440 446 $page->param(city => $q->escapeHTML($webvar{city})); … … 477 483 $webvar{privdata} = ''; 478 484 } 485 486 # split up some linked data for static IPs via guided allocation. needed for breadcrumbs lite. 487 ($webvar{alloc_from},$webvar{rdepth}) = split /,/, $webvar{alloc_from}; 488 479 489 # $code is "success" vs "failure", $msg contains OK for a 480 490 # successful netblock allocation, the IP allocated for static 481 491 # IP, or the error message if an error occurred. 482 492 483 my ($code,$msg) = allocateBlock($ip_dbh, $webvar{fullcidr}, $webvar{alloc_from}, 484 $webvar{custid}, $webvar{alloctype}, $webvar{city}, $webvar{desc}, $webvar{notes}, 485 $webvar{circid}, $webvar{privdata}, $webvar{node}); 493 my ($code,$msg) = allocateBlock($ip_dbh, cidr => $webvar{fullcidr}, alloc_from => $webvar{alloc_from}, 494 rdepth => $webvar{rdepth}, custid => $webvar{custid}, type => $webvar{alloctype}, city => $webvar{city}, 495 desc => $webvar{desc}, notes => $webvar{notes}, circid => $webvar{circid}, 496 privdata => $webvar{privdata}, nodeid => $webvar{node}); 486 497 487 498 if ($code eq 'OK') { … … 490 501 $page->param(staticip => $msg); 491 502 $page->param(custid => $webvar{custid}); 503 $page->param(parent => $webvar{alloc_from}, rdepth => $webvar{rdepth}-1); 492 504 $page->param(billinguser => $webvar{billinguser}); 493 505 mailNotify($ip_dbh, "a$webvar{alloctype}", "ADDED: $disp_alloctypes{$webvar{alloctype}} allocation", … … 499 511 $page->param(alloctype => $disp_alloctypes{$webvar{alloctype}}); 500 512 $page->param(custid => $webvar{custid}); 513 # breadcrumbs lite! provide at least a link to the parent of the block we just allocated. 514 my $binfo = getBlockData($ip_dbh, $webvar{fullcidr}, $webvar{rdepth}); 515 $page->param(parent => $binfo->{parent}, rdepth => $binfo->{rdepth}); 501 516 if ($webvar{alloctype} eq 'pr' && $webvar{billinguser}) { 502 517 $page->param(billinguser => $webvar{billinguser}); -
trunk/templates/assign.tmpl
r530 r575 1 1 <div class="indent"> 2 <TMPL_IF block> 3 <div class="tblsubtitle"> 4 Assign free <TMPL_IF iscontained><TMPL_VAR NAME=fbdisptype></TMPL_IF> block <TMPL_VAR NAME=block> 5 </div> 6 <TMPL_ELSE> 7 <div class="tblsubtitle">Assign IPs</div> 8 </TMPL_IF> 2 <div class="tblsubtitle">Assign IP<TMPL_UNLESS fbip>s</TMPL_UNLESS></div> 9 3 <br> 10 4 … … 12 6 <fieldset><legend class="noshow"> </legend> 13 7 14 <TMPL_IF block> 15 <input type="hidden" name="block" value="<TMPL_VAR NAME=block>"> 8 <table class="regular" cellspacing="1" cellpadding="1"> 9 10 <TMPL_IF allocfrom> 11 <tr class="row0"> 12 <TMPL_IF fbip> 13 <td>IP pool:</td> 14 <TMPL_ELSE> 15 <td>Free block selected:</td> 16 </TMPL_IF> 17 <td><TMPL_VAR NAME=allocfrom><input type="hidden" name="allocfrom" value="<TMPL_VAR NAME=allocfrom>"> 18 <input type="hidden" name="rdepth" value="<TMPL_VAR NAME=rdepth>"> 19 </td> 20 </tr> 21 <tr class="row1"> 22 <TMPL_IF fbip> 23 <td>IP:</td> 24 <td> 25 <TMPL_VAR NAME=block><input type="hidden" name="block" value="<TMPL_VAR NAME=block>"> 16 26 <input type="hidden" name="fbassign" value="y"> 27 </td> 28 <TMPL_ELSE> 29 <td>Allocation:</td> 30 <td> 31 <input name="block" value="<TMPL_VAR NAME=block>"> 32 <input type="hidden" name="fbassign" value="y"> 33 </td> 17 34 </TMPL_IF> 18 19 < table class="regular" cellspacing="1" cellpadding="1">35 </tr> 36 </TMPL_IF> 20 37 21 38 <tr class="row0"> … … 34 51 <td>Allocation type:</td> 35 52 <td> 36 <TMPL_IF iscontained>53 <TMPL_IF fbip> 37 54 <TMPL_VAR NAME=fbdisptype><input type="hidden" name="alloctype" value="<TMPL_VAR NAME=type>"> 38 55 <TMPL_ELSE> … … 46 63 </tr> 47 64 48 <TMPL_UNLESS block>65 <TMPL_UNLESS allocfrom> 49 66 <tr class="row0"> 50 67 <td>Subnet CIDR mask length:</td> … … 66 83 <option value="<TMPL_VAR NAME=node_id>"><TMPL_VAR NAME=node_name></option></TMPL_LOOP> 67 84 </select> 68 <a href="javascript:popNotes('<TMPL_VAR NAME=webpath>/cgi-bin/newnode.cgi')">Add new location</a>85 <a href="javascript:popNotes('<TMPL_VAR NAME=webpath>/cgi-bin/newnode.cgi')">Add new demarc/tower</a> 69 86 </td> 70 87 </tr> 71 88 72 <TMPL_UNLESS block>89 <TMPL_UNLESS allocfrom> 73 90 <tr class="<TMPL_VAR NAME=rowa>"> 74 91 <td>Route from/through:</td> -
trunk/templates/confirm.tmpl
r517 r575 23 23 <td> 24 24 <select name="alloc_from"> 25 <TMPL_LOOP name=poollist> <option value="<TMPL_VAR NAME=poolblock> "><TMPL_VAR NAME=poolblock> [<TMPL_VAR NAME=poolfree>] free IP(s) in <TMPL_VAR NAME=poolcit></option>25 <TMPL_LOOP name=poollist> <option value="<TMPL_VAR NAME=poolblock>,<TMPL_VAR NAME=poolrdepth>"><TMPL_VAR NAME=poolblock> [<TMPL_VAR NAME=poolfree>] free IP(s) in <TMPL_VAR NAME=poolcit></option> 26 26 </TMPL_LOOP></select> 27 27 </td> … … 77 77 <td class="center" colspan="2"> 78 78 <TMPL_UNLESS poollist><input type="hidden" name="alloc_from" value="<TMPL_VAR NAME=alloc_from>"></TMPL_UNLESS> 79 <input type="hidden" name="rdepth" value="<TMPL_VAR NAME=rdepth>"> 79 80 <input type="hidden" name="fullcidr" value="<TMPL_VAR NAME=cidr>"> 80 81 <input type="hidden" name="city" value="<TMPL_VAR NAME=city>"> -
trunk/templates/insert.tmpl
r517 r575 1 <TMPL_IF webpath></TMPL_IF>2 1 <TMPL_IF err> 3 2 <div class="err"> … … 13 12 </TMPL_IF> 14 13 </div> 14 <div class="center">IPs in <a href="<TMPL_VAR NAME=webpath>/cgi-bin/main.cgi?action=listpool&pool=<TMPL_VAR NAME=parent>&rdepth=<TMPL_VAR NAME=rdepth>"><TMPL_VAR NAME=parent></a></div> 15 15 <TMPL_ELSE> 16 16 <div class="center"> … … 20 20 </TMPL_IF> 21 21 </div> 22 <div class="center">Allocations in <a href="<TMPL_VAR NAME=webpath>/cgi-bin/main.cgi?action=showsubs&block=<TMPL_VAR NAME=parent>&rdepth=<TMPL_VAR NAME=rdepth>"><TMPL_VAR NAME=parent></a></div> 22 23 </TMPL_IF> 23 24 </TMPL_IF> -
trunk/templates/listpool.tmpl
r570 r575 40 40 <td><TMPL_VAR NAME=desc></td> 41 41 <TMPL_IF maydel><td><TMPL_IF delme> 42 <a href="<TMPL_VAR NAME=webpath>/cgi-bin/main.cgi?action=delete&block=<TMPL_VAR NAME=ip>& alloctype=<TMPL_VAR NAME=type>">Unassign this IP</a>42 <a href="<TMPL_VAR NAME=webpath>/cgi-bin/main.cgi?action=delete&block=<TMPL_VAR NAME=ip>&rdepth=<TMPL_VAR NAME=ipdepth>&alloctype=<TMPL_VAR NAME=type>">Unassign this IP</a> 43 43 </TMPL_IF></td></TMPL_IF> 44 44 </tr>
Note:
See TracChangeset
for help on using the changeset viewer.