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
|
package main
import (
"bytes"
"github.com/jordan-wright/email"
"log"
"net/smtp"
"os"
)
func SendEmail(u []User, h []Host) {
log.Println("Sending E-Mail")
if len(u) == 0 {
return
}
if len(h) == 0 {
return
}
log.Println("Sending E-Mail - Checked")
adresses := getEmails(u)
h = getHosts(h)
e := &email.Email{
To: adresses,
From: "StatusPage <" + os.Getenv("STATUS_HTTP_ADRESS") + ">",
Subject: "Host is down (" + h[0].Host + ")",
HTML: getBody(h),
}
err := e.Send(os.Getenv("STATUS_HTTP_MAILER"), smtp.PlainAuth("", os.Getenv("STATUS_HTTP_ADRESS"), os.Getenv("STATUS_HTTP_PASSWORD"), os.Getenv("STATUS_HTTP_MAILER")))
log.Println(err)
}
func getEmails(u []User) []string {
var emails []string
for k, _ := range u {
emails = append(emails, u[k].Email)
}
return emails
}
func getHosts(hosts []Host) []Host {
var h []Host
for k, _ := range hosts {
if !hosts[k].Monitored {
h = append(h, hosts[k])
}
}
return h
}
func getBody(hosts []Host) []byte {
index := emailTempl.Lookup("index.html")
var ret bytes.Buffer
index.ExecuteTemplate(&ret, "index.html", hosts)
return ret.Bytes()
}
|