46 lines
1.0 KiB
Go
46 lines
1.0 KiB
Go
package uptimerobot
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
ur "git.uwaterloo.ca/csc/cscsysbot/utils/uptimerobot"
|
|
"git.uwaterloo.ca/csc/cscsysbot/plugins/background"
|
|
)
|
|
|
|
func uptimeRobot() {
|
|
lastStatuses := make(map[int]ur.MonitorStatus)
|
|
|
|
for {
|
|
monitors, err := ur.GetMonitors()
|
|
if err != nil {
|
|
time.Sleep(time.Minute * 1)
|
|
continue
|
|
}
|
|
|
|
for _, mon := range monitors.Monitors {
|
|
lastStatus, ok := lastStatuses[mon.ID]
|
|
lastStatuses[mon.ID] = mon.Status
|
|
|
|
if !ok {
|
|
continue
|
|
}
|
|
|
|
if lastStatus != mon.Status {
|
|
if (mon.Type == ur.MonitorTypePort) {
|
|
background.Messages <- fmt.Sprintf("Uptime Robot: %s -> %s, %s:%d (%s)\n", lastStatus, mon.Status, mon.URL, mon.Type, int(mon.Port.(float64)))
|
|
} else {
|
|
background.Messages <- fmt.Sprintf("Uptime Robot: %s -> %s, %s (%s)\n", lastStatus, mon.Status, mon.URL, mon.Type)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
time.Sleep(time.Minute * 1)
|
|
}
|
|
}
|
|
|
|
func init() {
|
|
go uptimeRobot()
|
|
}
|