1
0
mirror of https://github.com/mgerb/ServerStatus synced 2026-01-12 04:02:48 +00:00

5 Commits

Author SHA1 Message Date
12c20b928c v0.8.0 2020-06-13 12:53:51 -05:00
2fdc0eddd3 update docker files
closes #27
2020-06-13 12:52:52 -05:00
18b1a0b6e3 fix: add retry to RCON servers
closes #28
2020-06-13 12:52:32 -05:00
bf79d376f3 fix: date format
closes #29
2020-06-13 12:47:00 -05:00
8f430b5982 update readme 2020-06-10 18:53:49 -05:00
4 changed files with 34 additions and 20 deletions

View File

@@ -1,4 +1,4 @@
FROM golang:1.11.1-alpine FROM golang:1.14.4-alpine3.12
WORKDIR /go/src/github.com/mgerb/ServerStatus WORKDIR /go/src/github.com/mgerb/ServerStatus
ADD . . ADD . .
@@ -8,10 +8,9 @@ RUN dep ensure
RUN make linux RUN make linux
FROM alpine:3.8 FROM alpine:3.12
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/* RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*
WORKDIR /server-status WORKDIR /server-status
COPY --from=0 /go/src/github.com/mgerb/ServerStatus/dist/ServerStatus-linux . COPY --from=0 /go/src/github.com/mgerb/ServerStatus/dist/ServerStatus-linux .
ENTRYPOINT ./ServerStatus-linux ENTRYPOINT ./ServerStatus-linux

View File

@@ -1,4 +1,4 @@
version: "2" version: "3"
services: services:
server-status: server-status:

View File

@@ -1,8 +1,21 @@
# Server Status # Server Status
Monitors a list of servers and sends a chat notification when a server goes on or offline. Monitors a list of servers and sends a chat notification when a server goes on or offline.
Enjoy the bot?
<a href="https://www.buymeacoffee.com/mgerb" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>
## Features
- send channel notifications
- track server up/down time
- **TCP** - should work with all servers - **TCP** - should work with all servers
- **UDP** - [Source RCON Protocol](https://developer.valvesoftware.com/wiki/Source_RCON_Protocol) is supported - **UDP** - [Source RCON Protocol](https://developer.valvesoftware.com/wiki/Source_RCON_Protocol) is supported
- [Docker](https://hub.docker.com/r/mgerb/server-status)
### Want to see more features?
[Submit a new issue](https://github.com/mgerb/ServerStatus/issues/new/choose)
## Configuration ## Configuration
- Download the latest release [here](https://github.com/mgerb/ServerStatus/releases) - Download the latest release [here](https://github.com/mgerb/ServerStatus/releases)

View File

@@ -57,7 +57,7 @@ func scanServers() {
for index := range config.Config.Servers { for index := range config.Config.Servers {
wg.Add(1) wg.Add(1)
go worker(index, &config.Config.Servers[index], &wg) go worker(&config.Config.Servers[index], &wg)
} }
wg.Wait() wg.Wait()
@@ -66,7 +66,7 @@ func scanServers() {
} }
} }
func worker(index int, server *config.Server, wg *sync.WaitGroup) { func worker(server *config.Server, wg *sync.WaitGroup) {
defer wg.Done() defer wg.Done()
prevServerUp := server.Online //set value to previous server status prevServerUp := server.Online //set value to previous server status
@@ -78,12 +78,6 @@ func worker(index int, server *config.Server, wg *sync.WaitGroup) {
for { for {
serverScanner := portscanner.NewPortScanner(server.Address, time.Second*2, 1) serverScanner := portscanner.NewPortScanner(server.Address, time.Second*2, 1)
serverUp = serverScanner.IsOpen(server.Port) //check if the port is open serverUp = serverScanner.IsOpen(server.Port) //check if the port is open
if serverUp || retryCounter >= 5 {
break
}
retryCounter++
time.Sleep(time.Second * 2)
}
// if server isn't up check RCON protocol (UDP) // if server isn't up check RCON protocol (UDP)
if !serverUp { if !serverUp {
@@ -98,6 +92,14 @@ func worker(index int, server *config.Server, wg *sync.WaitGroup) {
} }
} }
if serverUp || retryCounter >= 5 {
break
}
retryCounter++
time.Sleep(time.Second * 2)
}
if serverUp && serverUp != prevServerUp { if serverUp && serverUp != prevServerUp {
server.OnlineTimestamp = time.Now() server.OnlineTimestamp = time.Now()
sendMessageToRooms(green, server.Name, "Is now online :smiley:", true) sendMessageToRooms(green, server.Name, "Is now online :smiley:", true)
@@ -153,7 +155,7 @@ func MessageHandler(s *discordgo.Session, m *discordgo.MessageCreate) {
func fmtDuration(d time.Duration) string { func fmtDuration(d time.Duration) string {
days := int(d.Hours()) / 24 days := int(d.Hours()) / 24
hours := int(d.Hours()) % 60 hours := int(d.Hours()) % 24
minutes := int(d.Minutes()) % 60 minutes := int(d.Minutes()) % 60
seconds := int(d.Seconds()) % 60 seconds := int(d.Seconds()) % 60