From 6c6fb883997516b5369fe697ed79079a38f6c742 Mon Sep 17 00:00:00 2001 From: khoff Date: Wed, 24 Nov 2004 18:28:08 +0000 Subject: [PATCH] Added IP address search. --- httemplate/index.html | 1 + httemplate/search/svc_broadband.cgi | 96 +++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100755 httemplate/search/svc_broadband.cgi diff --git a/httemplate/index.html b/httemplate/index.html index 0b968cf65..5189df97e 100644 --- a/httemplate/index.html +++ b/httemplate/index.html @@ -34,6 +34,7 @@
Phone #

Username or all accounts by username or uid

Domain or all domains
+
IP Address or all services by svcnum or address block

all mail forwards by svcnum

all virtual hosts by svcnum

all external services by svcnum
diff --git a/httemplate/search/svc_broadband.cgi b/httemplate/search/svc_broadband.cgi new file mode 100755 index 000000000..efadce600 --- /dev/null +++ b/httemplate/search/svc_broadband.cgi @@ -0,0 +1,96 @@ +<% + +my $conf = new FS::Conf; + +my($query)=$cgi->keywords; +$query ||= ''; #to avoid use of unitialized value errors +my(@svc_broadband,$sortby); +if ( $query eq 'svcnum' ) { + $sortby=\*svcnum_sort; + @svc_broadband=qsearch('svc_broadband',{}); +} elsif ( $query eq 'blocknum' ) { + $sortby=\*blocknum_sort; + @svc_broadband=qsearch('svc_broadband',{}); +} else { + $cgi->param('ip_addr') =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/; + my($ip_addr)=$1; + @svc_broadband = qsearchs('svc_broadband',{'ip_addr'=>$ip_addr}); +} + +my %routerbyblock = (); +foreach my $router (qsearch('router', {})) { + foreach ($router->addr_block) { + $routerbyblock{$_->blocknum} = $router; + } +} + +if ( scalar(@svc_broadband) == 1 ) { + print $cgi->redirect(popurl(2). "view/svc_broadband.cgi?". $svc_broadband[0]->svcnum); + #exit; +} elsif ( scalar(@svc_broadband) == 0 ) { +%> + +<% + eidiot "No matching ip address found!\n"; +} else { +%> + +<% + my($total)=scalar(@svc_broadband); + print header("IP Address Search Results",''), < + + Service # + Router + IP Address + +END + + foreach my $svc_broadband ( + sort $sortby (@svc_broadband) + ) { + my($svcnum,$ip_addr,$routername,$routernum)=( + $svc_broadband->svcnum, + $svc_broadband->ip_addr, + $routerbyblock{$svc_broadband->blocknum}->routername, + $routerbyblock{$svc_broadband->blocknum}->routernum, + ); + + my $rowspan = 1; + + print < + $svcnum + $routername + $ip_addr +END + + #print @rows; + print ""; + + } + + print < + + +END + +} + +sub svcnum_sort { + $a->getfield('svcnum') <=> $b->getfield('svcnum'); +} + +sub blocknum_sort { + if ($a->getfield('blocknum') == $b->getfield('blocknum')) { + $a->getfield('ip_addr') cmp $b->getfield('ip_addr'); + } else { + $a->getfield('blocknum') cmp $b->getfield('blocknum'); + } +} + + +%> -- 2.11.0