File Coverage

lib/Term/RouterCLI/Log/Audit.pm
Criterion Covered Total %
statement 21 43 48.8
branch 0 4 0.0
condition n/a
subroutine 7 9 77.7
pod 0 2 0.0
total 28 58 48.2


line stmt bran cond sub pod time code
1             #####################################################################
2             # This program is not guaranteed to work at all, and by using this #
3             # program you release the author of any and all liability. #
4             # #
5             # You may use this code as long as you are in compliance with the #
6             # license (see the LICENSE file) and this notice, disclaimer and #
7             # comment box remain intact and unchanged. #
8             # #
9             # Package: Term::RouterCLI::Log #
10             # Class: Audit #
11             # Description: Methods for building a Router (Stanford) style CLI #
12             # #
13             # Written by: Bret Jordan (jordan at open1x littledot org) #
14             # Created: 2011-02-21 #
15             #####################################################################
16             #
17             #
18             #
19             #
20             package Term::RouterCLI::Log::Audit;
21              
22 4     4   130 use 5.8.8;
  4         14  
  4         177  
23 4     4   20 use strict;
  4         8  
  4         125  
24 4     4   19 use warnings;
  4         7  
  4         132  
25 4     4   17 use parent qw(Term::RouterCLI::Log);
  4         8  
  4         21  
26 4     4   210 use Term::RouterCLI::Debugger;
  4         7  
  4         89  
27 4     4   19 use Log::Log4perl;
  4         7  
  4         25  
28 4     4   5243 use POSIX qw(strftime);
  4         31870  
  4         31  
29              
30             our $VERSION = '1.00';
31             $VERSION = eval $VERSION;
32              
33              
34             my $oDebugger = new Term::RouterCLI::Debugger();
35              
36              
37             # TODO Work out how to rotate files and keep data longer instead of just pruning it
38              
39             sub StartAuditLog
40             {
41             # This method is for starting the audit log.
42 0     0 0   my $self = shift;
43 0           my $logger = $oDebugger->GetLogger($self);
44            
45 0           $logger->debug("$self->{'_sName'} - ", '### Entering Method ###');
46 0           my $retval = $self->ReadLogFile();
47            
48 0 0         if ($retval == 1) { $self->WriteExistingLogData(); }
  0            
49 0           $logger->debug("$self->{'_sName'} - ", '### Leaving Method ###');
50             }
51              
52             sub RecordToLog
53             {
54             # This method will record an event in to the audit log
55             # Required:
56             # hash_ref (prompt=>current prompt, commands=>command to be logged)
57 0     0 0   my $self = shift;
58 0           my $hParameter = shift;
59 0           my $logger = $oDebugger->GetLogger($self);
60            
61 0           $logger->debug("$self->{'_sName'} - ", '### Entering Method ###');
62            
63 0 0         unless (defined $self->{'_oFileHandle'}) { $self->OpenFileHandle("A"); }
  0            
64 0           my $FILE = ${$self->{'_oFileHandle'}};
  0            
65 0           $logger->debug("$self->{'_sName'} - File Handle: $FILE");
66            
67 0           my $sTimeStamp = strftime "%Y-%b-%e %a %H:%M:%S", localtime;
68            
69 0           my $sOutput = "($sTimeStamp) \[$hParameter->{username}\@$hParameter->{tty}\] \[$hParameter->{prompt}\] $hParameter->{commands}";
70 0           $logger->debug("$self->{'_sName'} - sOutput: $sOutput");
71            
72 0           print $FILE "$sOutput\n";
73 0           $FILE->sync;
74 0           $logger->debug("$self->{'_sName'} - ", '### Leaving Method ###');
75             }
76              
77             return 1;