Apache-Logmonster
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Apache/Logmonster/Utility.pm view on Meta::CPAN
sub get_dir_files {
my $self = shift;
my $dir = shift or die "missing dir name";
my %p = validate( @_, { %std_opts } );
my %args = $self->get_std_args( %p );
my @files;
return $log->error( "dir $dir is not a directory!", %args)
if ! -d $dir;
opendir D, $dir or return $log->error( "couldn't open $dir: $!", %args );
while ( defined( my $f = readdir(D) ) ) {
next if $f =~ /^\.\.?$/;
push @files, "$dir/$f";
}
closedir(D);
return @files;
}
sub get_my_ips {
############################################
# Usage : @list_of_ips_ref = $util->get_my_ips();
# Purpose : get a list of IP addresses on local interfaces
# Returns : an arrayref of IP addresses
# Parameters : only - can be one of: first, last
# : exclude_locahost (all 127.0 addresses)
# : exclude_internals (192.168, 10., 169., 172.)
# : exclude_ipv6
# Comments : exclude options are boolean and enabled by default.
# tested on Mac OS X and FreeBSD
my $self = shift;
my %p = validate(
@_,
{ 'only' => { type => SCALAR, optional => 1, default => 0 },
'exclude_localhost' =>
{ type => BOOLEAN, optional => 1, default => 1 },
'exclude_internals' =>
{ type => BOOLEAN, optional => 1, default => 1 },
'exclude_ipv6' =>
{ type => BOOLEAN, optional => 1, default => 1 },
%std_opts,
}
);
my $debug = $p{debug};
my $only = $p{only};
my $ifconfig = $self->find_bin( "ifconfig", debug => 0 );
my $once = 0;
TRY:
my @ips = grep {/inet/} `$ifconfig`; chomp @ips;
@ips = grep {!/inet6/} @ips if $p{exclude_ipv6};
@ips = grep {!/inet 127\.0\.0/} @ips if $p{exclude_localhost};
@ips = grep {!/inet (192\.168\.|10\.|172\.16\.|169\.254\.)/} @ips
if $p{exclude_internals};
# this keeps us from failing if the box has only internal IPs
if ( @ips < 1 || $ips[0] eq "" ) {
carp "yikes, you really don't have any public IPs?!" if $debug;
$p{exclude_internals} = 0;
$once++;
goto TRY if ( $once < 2 );
}
foreach ( @ips ) { ($_) = $_ =~ m/inet ([\d\.]+)\s/; };
return [ $ips[0] ] if $only eq 'first';
return [ $ips[-1] ] if $only eq 'last';
return \@ips;
}
sub get_std_args {
my $self = shift;
my %p = @_;
my %args;
foreach ( qw/ debug fatal test_ok quiet / ) {
next if ! defined $p{$_};
$args{$_} = $p{$_};
};
return %args;
};
sub get_the_date {
my $self = shift;
my %p = validate(
@_,
{ 'bump' => { type => SCALAR, optional => 1, },
%std_opts
}
);
my $bump = $p{bump} || 0;
my %args = $self->get_std_args( %p );
my $time = time;
my $mess = "get_the_date time: " . time;
$bump = $bump * 86400 if $bump;
my $offset_time = time - $bump;
$mess .= ", (selected $offset_time)" if $time != $offset_time;
# load Date::Format to get the time2str function
eval { require Date::Format };
if ( !$EVAL_ERROR ) {
my $ss = Date::Format::time2str( "%S", ($offset_time) );
my $mn = Date::Format::time2str( "%M", ($offset_time) );
my $hh = Date::Format::time2str( "%H", ($offset_time) );
my $dd = Date::Format::time2str( "%d", ($offset_time) );
my $mm = Date::Format::time2str( "%m", ($offset_time) );
my $yy = Date::Format::time2str( "%Y", ($offset_time) );
my $lm = Date::Format::time2str( "%m", ( $offset_time - 2592000 ) );
view all matches for this distributionview release on metacpan - search on metacpan
( run in 3.129 seconds using v1.00-cache-2.02-grep-82fe00e-cpan-b63e86051f13 )