/
usr
/
lib
/
raider
/
Raider
/
File Upload :
llllll
Current File: //usr/lib/raider/Raider/Notification.pm
use strict; use warnings; package Raider::Notification; use base qw( Raider::Base ); use Time::gmtime; # Included in perl use Time::localtime; # Included in perl =head1 NAME Raider::Notification - Base class for Notification tasks =head1 DESCRIPTION Base class for notification tasks. =head1 USAGE use Raider::Notification; my notObj = Raider::Notification->new(); =head1 METHODS =head2 can_alert(\%args) Returns true if alterting is allowed. =head2 get_todays_alert_file(\%args) Returns the location of todays alert file. =head2 get_alert_day_year() Returns the day year to be used in alert filename. =head2 place_alert(\%args) Place an alert file for today. =head2 can_api() Returns true if api notifications are enabled and the api host is accessible. =head2 can_raidalarm_api() Returns true if the raidalarm endpoint is accessible. =cut sub can_alert { my $self = shift; my $opts = shift; my $can_notify = 0; my $proposed_alert_file_path = $self->get_todays_alert_file({ notify_type => "$opts->{notify_type}" }); if ( ! -e $proposed_alert_file_path ) { $can_notify = 1; } return $can_notify; } sub get_todays_alert_file { my $self = shift; my $opts = shift; my $day_year = $self->get_alert_day_year(); my $alert_file = "$Raider::Base::base_conf{'alert_path'}/$opts->{notify_type}-$day_year"; chomp($alert_file); return $alert_file; } sub get_alert_day_year { my $self = shift; my $gm = gmtime(); my $day_year = $gm->mday(); my $year = localtime->year() + 1900; my $day_year_ret = "$day_year-$year"; return $day_year_ret; } sub place_alert { my $self = shift; my $opts = shift; my $day_year = $self->get_alert_day_year(); my $alert_file_path = "$Raider::Base::base_conf{'alert_path'}/$opts->{notify_type}-$day_year"; chomp($alert_file_path); if ( ! -e $alert_file_path ) { open(FH,">$alert_file_path") or $self->logger({ cat => 'c', msg => "Unable to place alert file, got STDERR; $!" }); close(FH); } } sub can_api { my ($self) = @_; my $conf_file = $self->read_conf_file(); unless ($conf_file->{api_notifications}) { $self->logger({cat => 'i', msg => 'API notification suppressed by config file.'}); return 0; } if ($self->can_raidalarm_api()) { $self->logger({cat => 'i', msg => 'System is compatibile with API notifications and API host is online, using API notifications.'}); return 1; } return 0; } sub can_raidalarm_api { my ($self) = @_; eval { $self->{raidalarm}->call(method => '/'); }; if (my $e = $@) { $self->logger({cat => 'w', msg => "Unable to reach RaidAlarm endpoint:\n$e\n"}); return 0; } return 1; } sub clear_alerts_for_device { my ($self, $device) = @_; opendir (DIR, $Raider::Base::base_conf{'alert_path'}) or $self->logger({cat => 'c', msg => "unable to open [$Raider::Base::base_conf{'alert_path'}]: $!" }); while (my $alert_file = readdir(DIR)) { my $alert_path_file = $Raider::Base::base_conf{'alert_path'} . '/' . $alert_file; if (-f $alert_path_file) { if ($alert_file =~ /^$device-/) { unlink($alert_path_file) or $self->logger({cat => 'c', msg => "failed removing [$alert_path_file]"}); } } } closedir(DIR); } 1;
Copyright ©2k19 -
Hexid
|
Tex7ure