Will things ever be the same again?
[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 %
81