fix linking to account list per access number
[freeside.git] / httemplate / browse / nas.cgi
1 <!-- mason kludge -->
2 <%
3
4 print header('NAS ports', menubar(
5   'Main Menu' => $p,
6 ));
7
8 my $now = time;
9
10 foreach my $nas ( sort { $a->nasnum <=> $b->nasnum } qsearch( 'nas', {} ) ) {
11   print $nas->nasnum. ": ". $nas->nas. " ".
12         $nas->nasfqdn. " (". $nas->nasip. ") ".
13         "as of ". time2str("%c",$nas->last).
14         " (". &pretty_interval($now - $nas->last). " ago)<br>".
15         &table(). "<TR><TH>Nas<BR>Port #</TH><TH>Global<BR>Port #</BR></TH>".
16         "<TH>IP address</TH><TH>User</TH><TH>Since</TH><TH>Duration</TH><TR>",
17   ;
18   foreach my $port ( sort {
19     $a->nasport <=> $b->nasport || $a->portnum <=> $b->portnum
20   } qsearch( 'port', { 'nasnum' => $nas->nasnum } ) ) {
21     my $session = $port->session;
22     my($user, $since, $pretty_since, $duration);
23     if ( ! $session ) {
24       $user = "(empty)";
25       $since = 0;
26       $pretty_since = "(never)";
27       $duration = '';
28     } elsif ( $session->logout ) {
29       $user = "(empty)";
30       $since = $session->logout;
31     } else {
32       my $svc_acct = $session->svc_acct;
33       $user = "<A HREF=\"$p/view/svc_acct.cgi?". $svc_acct->svcnum. "\">".
34               $svc_acct->username. "</A>";
35       $since = $session->login;
36     }
37     $pretty_since = time2str("%c", $since) if $since;
38     $duration = pretty_interval( $now - $since ). " ago"
39       unless defined($duration);
40     print "<TR><TD>". $port->nasport. "</TD><TD>". $port->portnum. "</TD><TD>".
41           $port->ip. "</TD><TD>$user</TD><TD>$pretty_since".
42           "</TD><TD>$duration</TD></TR>"
43     ;
44   }
45   print "</TABLE><BR>";
46 }
47
48 #Time::Duration??
49 sub pretty_interval {
50   my $interval = shift;
51   my %howlong = (
52     '604800' => 'week',
53     '86400'  => 'day',
54     '3600'   => 'hour',
55     '60'     => 'minute',
56     '1'      => 'second',
57   );
58
59   my $pretty = "";
60   foreach my $key ( sort { $b <=> $a } keys %howlong ) {
61     my $value = int( $interval / $key );
62     if ( $value  ) {
63       if ( $value == 1 ) {
64         $pretty .=
65           ( $howlong{$key} eq 'hour' ? 'an ' : 'a ' ). $howlong{$key}. " "
66       } else {
67         $pretty .= $value. ' '. $howlong{$key}. 's ';
68       }
69     }
70     $interval -= $value * $key;
71   }
72   $pretty =~ /^\s*(\S.*\S)\s*$/;
73   $1;
74
75
76 #print &table(), <<END;
77 #<TR>
78 #  <TH>#</TH>
79 #  <TH>NAS</
80 %>