1
0
mirror of https://github.com/mgerb/ServerStatus synced 2026-01-10 03:03:04 +00:00

fix: add retry to RCON servers

closes #28
This commit is contained in:
2020-06-13 12:52:32 -05:00
parent bf79d376f3
commit 18b1a0b6e3

View File

@@ -57,7 +57,7 @@ func scanServers() {
for index := range config.Config.Servers {
wg.Add(1)
go worker(index, &config.Config.Servers[index], &wg)
go worker(&config.Config.Servers[index], &wg)
}
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()
prevServerUp := server.Online //set value to previous server status
@@ -78,26 +78,28 @@ func worker(index int, server *config.Server, wg *sync.WaitGroup) {
for {
serverScanner := portscanner.NewPortScanner(server.Address, time.Second*2, 1)
serverUp = serverScanner.IsOpen(server.Port) //check if the port is open
// if server isn't up check RCON protocol (UDP)
if !serverUp {
host := server.Address + ":" + strconv.Itoa(server.Port)
steamConnection, err := steam.Connect(host)
if err == nil {
defer steamConnection.Close()
_, err := steamConnection.Ping()
if err == nil {
serverUp = true
}
}
}
if serverUp || retryCounter >= 5 {
break
}
retryCounter++
time.Sleep(time.Second * 2)
}
// if server isn't up check RCON protocol (UDP)
if !serverUp {
host := server.Address + ":" + strconv.Itoa(server.Port)
steamConnection, err := steam.Connect(host)
if err == nil {
defer steamConnection.Close()
_, err := steamConnection.Ping()
if err == nil {
serverUp = true
}
}
}
if serverUp && serverUp != prevServerUp {
server.OnlineTimestamp = time.Now()
sendMessageToRooms(green, server.Name, "Is now online :smiley:", true)