diff options
author | ivan <ivan> | 2000-12-03 13:44:05 +0000 |
---|---|---|
committer | ivan <ivan> | 2000-12-03 13:44:05 +0000 |
commit | c7effea426d7cefcebc4b32f162fd1719095fc12 (patch) | |
tree | 6a7e15cf2d676c0d2e2e059e49fa3f187bc8d25f | |
parent | e966cec8367fbc5f21b366f9c497fc0260292407 (diff) |
beginnings of web status for session monitor
-rw-r--r-- | FS/FS/port.pm | 19 | ||||
-rwxr-xr-x | htdocs/browse/nas.cgi | 75 | ||||
-rwxr-xr-x | htdocs/index.html | 1 |
3 files changed, 93 insertions, 2 deletions
diff --git a/FS/FS/port.pm b/FS/FS/port.pm index c1bdee975..ee4611d21 100644 --- a/FS/FS/port.pm +++ b/FS/FS/port.pm @@ -4,6 +4,7 @@ use strict; use vars qw( @ISA ); use FS::Record qw( qsearchs ); use FS::nas; +use FS::session; @ISA = qw(FS::Record); @@ -26,6 +27,8 @@ FS::port - Object methods for port records $error = $record->check; + $session = $port->session; + =head1 DESCRIPTION An FS::port object represents an individual port on a NAS. FS::port inherits @@ -113,11 +116,20 @@ sub check { ''; #no error } +=item session + +Returns the currently open session, or if no session is currently open, the +most recent session. See L<FS::session>. + +=cut + + + =back =head1 VERSION -$Id: port.pm,v 1.1 2000-10-27 20:18:32 ivan Exp $ +$Id: port.pm,v 1.2 2000-12-03 13:44:05 ivan Exp $ =head1 BUGS @@ -135,7 +147,10 @@ added hfields ivan@sisd.com 97-nov-13 $Log: port.pm,v $ -Revision 1.1 2000-10-27 20:18:32 ivan +Revision 1.2 2000-12-03 13:44:05 ivan +beginnings of web status for session monitor + +Revision 1.1 2000/10/27 20:18:32 ivan oops, also necessary for session monitor Revision 1.1 1999/08/04 08:03:03 ivan diff --git a/htdocs/browse/nas.cgi b/htdocs/browse/nas.cgi new file mode 100755 index 000000000..2aafbc1fd --- /dev/null +++ b/htdocs/browse/nas.cgi @@ -0,0 +1,75 @@ +#!/usr/bin/perl -Tw + +use strict; +use vars qw( $cgi $p ); +use CGI; +use CGI::Carp qw(fatalsToBrowser); +use Date::Format; +use FS::UID qw(cgisuidsetup); +use FS::Record qw(qsearch); # qsearchs); +use FS::CGI qw(header menubar table popurl); +use FS::nas; +use FS::port; +use FS::session; + +$cgi = new CGI; +&cgisuidsetup($cgi); + +$p=popurl(2); + +print $cgi->header( '-expires' => 'now' ), header('NAS ports', menubar( + 'Main Menu' => $p, +)); + +my $now = time; + +foreach my $nas ( sort { $a->nasnum <=> $b->nasnum } qsearch( 'nas', {} ) ) { + print $nas->nasnum. ": ". $nas->nas. " ". + $nas->nasfqdn. " (". $nas->nasip. ") ". + "as of ". time2str("%c",$nas->last). + " (". &pretty_interval($now - $nas->last). " ago)<br>". + &table(). "<TR><TH>Nas<BR>Port #</TH><TH>Global<BR>Port #</BR></TH>". + "<TH>IP address</TH><TH>User</TH><TH>Since</TH><TH>Duration</TH><TR>", + ; + foreach my $port ( sort { + $a->nasport <=> $b->nasport || $a->portnum <=> $b->portnum + } qsearch( 'port' ) ) { + print "<TR><TD>". $port->nasport. "</TD><TD>". $port->portnum. "</TD><TD>". + $port->ip. "</TD><TD>". 'user'. "</TD><TD>". 'since'. "</TD><TD>". + 'duration'. "</TD></TR>" + ; + } + print "</TABLE><BR>"; +} + +sub pretty_interval { + my $interval = shift; + my %howlong = ( + '604800' => 'week', + '86400' => 'day', + '3600' => 'hour', + '60' => 'minute', + '1' => 'second', + ); + + my $pretty = ""; + foreach my $key ( sort { $b <=> $a } keys %howlong ) { + my $value = int( $interval / $key ); + if ( $value ) { + if ( $value == 1 ) { + $pretty .= + ( $howlong{$key} eq 'hour' ? 'an ' : 'a ' ). $howlong{$key}. " " + } else { + $pretty .= $value. ' '. $howlong{$key}. 's '; + } + } + $interval -= $value * $key; + } + $pretty =~ /^\s*(\S.*\S)\s*$/; + $1; +} + +#print &table(), <<END; +#<TR> +# <TH>#</TH> +# <TH>NAS</ diff --git a/htdocs/index.html b/htdocs/index.html index 0ae8b5dbb..75c301f75 100755 --- a/htdocs/index.html +++ b/htdocs/index.html @@ -61,6 +61,7 @@ <LI>unlinked accounts (<A HREF="search/svc_acct.cgi?UN_svcnum">by service number</A>) (<A HREF="search/svc_acct.cgi?UN_username">by username</A>) (<A HREF="search/svc_acct.cgi?UN_uid">by uid</A>) <LI>unlinked domains (<A HREF="search/svc_domain.cgi?UN_svcnum">by service number</A>) (<A HREF="search/svc_domain.cgi?UN_domain">by domain</A>) </UL> + <LI><A HREF="browse/nas.cgi">NAS ports</A> </ul> <li><A NAME="admin">Administration</a> <ul> |