use vars qw( @ISA );
use FS::Record qw( qsearchs );
use FS::nas;
+use FS::session;
@ISA = qw(FS::Record);
$error = $record->check;
+ $session = $port->session;
+
=head1 DESCRIPTION
An FS::port object represents an individual port on a NAS. FS::port inherits
''; #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
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
--- /dev/null
+#!/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</
<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>