summaryrefslogtreecommitdiffstats
path: root/Monitoring/plugins/sendmailservices.pl
blob: ab5464cfc4147321c7473375e7bbfa3c98026860 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/perl
use MIME::QuotedPrint;
use HTML::Entities;
use Mail::Sendmail 0.75; # doesn't work with v. 0.74!

$NOTIFICATIONTYPE=$ARGV[0];
$SERVICEDESC=$ARGV[1];
$HOSTNAME=$ARGV[2];
$HOSTADDRESS=$ARGV[3];
$SERVICESTATE=$ARGV[4];
$SHORTDATETIME=$ARGV[5];
$SERVICEOUTPUT=$ARGV[6];
$TO=$ARGV[7];
#$HOSTNAME=$ARGV[8];

$boundary = "====" . time() . "====";

$text = "***** Notification Shinken *****\n\n"
	. "Notification : $NOTIFICATIONTYPE\n\n"
	. "Impacted service : $SERVICEDESC\n"
	. "State : $SERVICESTATE\n\n"
	. "Related host : $HOSTNAME\n"
	. "Address : $HOSTADDRESS\n"
	. "Date/Time : $SHORTDATETIME\n\n"
	. "Service output : $SERVICEOUTPUT";

$texthtml = " <center><table border='11><th><strong>***** Shinken Notification *****</strong></th></table></center>\n";

$color="blue";
$colorstate="black";

if ($NOTIFICATIONTYPE =~ /RECOVERY/ | $NOTIFICATIONTYPE =~ ACKNOWLEDGEMENT) {
	$color="#339933";
	if ($SERVICESTATE =~ /OK/){
		$colorstate="#339933";
	}
}

if ($NOTIFICATIONTYPE =~ /PROBLEM/) {
	$color="#FF0000";

	if ($SERVICESTATE =~ /CRITICAL/) {
       		$colorstate="#FF0000";
    	}
    	if ($SERVICESTATE =~ /WARNING/) {
        	$colorstate="#FF9900";
    	}
    	if ($SERVICESTATE =~ /UNKNOWN/) {
        	$colorstate="#999999";
    	}
}

$SERVICEOUTPUT =~ s/=/&#61;/g;

if ($NOTIFICATIONTYPE =~ /RECOVERY/){
	if ($SERVICESTATE =~ /OK/){
		$colorstate="#339933";
	}
}

$texthtml = $texthtml  . "<strong>Notification : <span style='ccolor:$color>$NOTIFICATIONTYPE</span></strong>\n\n"
	. "<strong>Impacted service : <i>$SERVICEDESC</i></strong>\n"
	. "<strong>State : <span style='ccolor:$colorstate>$SERVICESTATE</span></strong>\n\n";

$texthtml = $texthtml  . "<strong>Host</strong> : $HOSTNAME\n"
	. "<strong>Address</strong> : <i>$HOSTADDRESS</i>\n"
	. "<strong>Date/Time</strong> : <i>$SHORTDATETIME</i>\n\n"
	. "<strong>Service output</strong> : $SERVICEOUTPUT\n\n\n\n";

%mail = (
	 from => 'Monitoring Agent <monitor-agent@invaliddomain.org>',
         to => $TO,
         subject => "$SERVICEDESC $SERVICESTATE on $HOSTNAME",
         'content-type' => "multipart/alternative; boundary=\"$boundary\"",
         'Auto-Submitted' => "auto-generated"
        );

$plain = encode_qp $text;

#$html = encode_entities($texthtml);
$html = $texthtml;
$html =~ s/\n\n/\n\n<p>/g;
$html =~ s/\n/<br>\n/g;
$html = "<p>" . $html . "</p>";

$boundary = '--'.$boundary;


$mail{body} = <<END_OF_BODY;
$boundary
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

$plain

$boundary
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

<html>$html</html>
$boundary--
END_OF_BODY

sendmail(%mail) || print "Error: $Mail::Sendmail::error\n";