summaryrefslogtreecommitdiff
path: root/app/email.go
blob: b497bf7a1a594e97b4a7617dbab392e3d768d342 (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
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()
}