2aafbc1fd75be3a52bf3476ef7a28b9a32bc8916
[freeside.git] / htdocs / browse / nas.cgi
1 #!/usr/bin/perl -Tw
2
3 use strict;
4 use vars qw( $cgi $p );
5 use CGI;
6 use CGI::Carp qw(fatalsToBrowser);
7 use Date::Format;
8 use FS::UID qw(cgisuidsetup);
9 use FS::Record qw(qsearch); # qsearchs);
10 use FS::CGI qw(header menubar table popurl);
11 use FS::nas;
12 use FS::port;
13 use FS::session;
14
15 $cgi = new CGI;
16 &cgisuidsetup($cgi);
17
18 $p=popurl(2);
19
20 print $cgi->header( '-expires' => 'now' ), header('NAS ports', menubar(
21   'Main Menu' => $p,
22 ));
23
24 my $now = time;
25
26 foreach my $nas ( sort { $a->nasnum <=> $b->nasnum } qsearch( 'nas', {} ) ) {
27   print $nas->nasnum. ": ". $nas->nas. " ".
28         $nas->nasfqdn. " (". $nas->nasip. ") ".
29         "as of ". time2str("%c",$nas->last).
30         " (". &pretty_interval($now - $nas->last). " ago)<br>".
31         &table(). "<TR><TH>Nas<BR>Port #</TH><TH>Global<BR>Port #</BR></TH>".
32         "<TH>IP address</TH><TH>User</TH><TH>Since</TH><TH>Duration</TH><TR>",
33   ;
34   foreach my $port ( sort {
35     $a->nasport <=> $b->nasport || $a->portnum <=> $b->portnum
36   } qsearch( 'port' ) ) {
37     print "<TR><TD>". $port->nasport. "</TD><TD>". $port->portnum. "</TD><TD>".
38           $port->ip. "</TD><TD>". 'user'. "</TD><TD>". 'since'. "</TD><TD>". 
39           'duration'. "</TD></TR>"
40     ;
41   }
42   print "</TABLE><BR>";
43 }
44
45 sub pretty_interval {
46   my $interval = shift;
47   my %howlong = (
48     '604800' => 'week',
49     '86400'  => 'day',
50     '3600'   => 'hour',
51     '60'     => 'minute',
52     '1'      => 'second',
53   );
54
55   my $pretty = "";
56   foreach my $key ( sort { $b <=> $a } keys %howlong ) {
57     my $value = int( $interval / $key );
58     if ( $value  ) {
59       if ( $value == 1 ) {
60         $pretty .=
61           ( $howlong{$key} eq 'hour' ? 'an ' : 'a ' ). $howlong{$key}. " "
62       } else {
63         $pretty .= $value. ' '. $howlong{$key}. 's ';
64       }
65     }
66     $interval -= $value * $key;
67   }
68   $pretty =~ /^\s*(\S.*\S)\s*$/;
69   $1;
70
71
72 #print &table(), <<END;
73 #<TR>
74 #  <TH>#</TH>
75 #  <TH>NAS</