Files
milkwatch-server/main.go
2021-11-08 09:55:18 -06:00

80 lines
1.4 KiB
Go

package main
import (
"fmt"
"log"
"net/http"
"net/smtp"
"time"
)
const host = "rodberrypi"
func main() {
for {
log.Println("Checking Fridge")
if !endPointAlive() {
log.Println("He Dead")
sendMail()
} else {
log.Println("He Alive")
}
time.Sleep(3600 * time.Second)
}
}
func endPointAlive() bool {
res, err := http.Get("http://" + host + ":2122/heartbeat")
if err != nil {
log.Println(err)
return false
}
if res.StatusCode != 200 {
log.Println("Status Code ", res.StatusCode)
return false
} else {
return true
}
}
func sendMail() {
// Sender data.
from := "rodbiren@gmail.com"
password := "Lovers8991"
// Receiver email address.
to := []string{"rcviren@gmail.com"}
// smtp server configuration.
smtpServer := smtpServer{host: "smtp.gmail.com", port: "587"}
// Message.
mime := "MIME-version: 1.0;\nContent-Type: text/plain; charset=\"UTF-8\";\n\n"
subject := "Subject: " + "Garage Power is Out" + "!\n"
message := []byte(subject + mime + "\n" + "Make Rob Fix It!")
// Authentication.
auth := smtp.PlainAuth("", from, password, smtpServer.host)
// Sending email.
err := smtp.SendMail(smtpServer.Address(), auth, from, to, message)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Email Sent!")
}
// smtpServer data to smtp server.
type smtpServer struct {
host string
port string
}
// Address URI to smtp server.
func (s *smtpServer) Address() string {
return s.host + ":" + s.port
}