beginnings of web status for session monitor
authorivan <ivan>
Sun, 3 Dec 2000 13:44:05 +0000 (13:44 +0000)
committerivan <ivan>
Sun, 3 Dec 2000 13:44:05 +0000 (13:44 +0000)
FS/FS/port.pm
htdocs/browse/nas.cgi [new file with mode: 0755]
htdocs/index.html

index c1bdee9..ee4611d 100644 (file)
@@ -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 (executable)
index 0000000..2aafbc1
--- /dev/null
@@ -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</
index 0ae8b5d..75c301f 100755 (executable)
@@ -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>