From c7effea426d7cefcebc4b32f162fd1719095fc12 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 3 Dec 2000 13:44:05 +0000 Subject: [PATCH] beginnings of web status for session monitor --- FS/FS/port.pm | 19 +++++++++++-- htdocs/browse/nas.cgi | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++ htdocs/index.html | 1 + 3 files changed, 93 insertions(+), 2 deletions(-) create mode 100755 htdocs/browse/nas.cgi 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. + +=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)
". + &table(). "Nas
Port #Global
Port #
". + "IP addressUserSinceDuration", + ; + foreach my $port ( sort { + $a->nasport <=> $b->nasport || $a->portnum <=> $b->portnum + } qsearch( 'port' ) ) { + print "". $port->nasport. "". $port->portnum. "". + $port->ip. "". 'user'. "". 'since'. "". + 'duration'. "" + ; + } + print "
"; +} + +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(), < +# # +# NASunlinked accounts (by service number) (by username) (by uid)
  • unlinked domains (by service number) (by domain) +
  • NAS ports
  • Administration
      -- 2.11.0