mirror of
https://github.com/mgerb/ServerStatus
synced 2026-01-09 18:52:50 +00:00
feat(RCON): added RCON support for UDP servers
This commit is contained in:
54
Gopkg.lock
generated
54
Gopkg.lock
generated
@@ -1,41 +1,89 @@
|
||||
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
|
||||
|
||||
|
||||
[[projects]]
|
||||
digest = "1:87c2e02fb01c27060ccc5ba7c5a407cc91147726f8f40b70cceeedbc52b1f3a8"
|
||||
name = "github.com/Sirupsen/logrus"
|
||||
packages = ["."]
|
||||
pruneopts = "UT"
|
||||
revision = "e1e72e9de974bd926e5c56f83753fba2df402ce5"
|
||||
version = "v1.3.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:b7e05c8da029b985907b15e126cde5f42f2814b08211a184dac436eeec6fe780"
|
||||
name = "github.com/anvie/port-scanner"
|
||||
packages = [
|
||||
".",
|
||||
"predictors",
|
||||
"predictors/webserver"
|
||||
"predictors/webserver",
|
||||
]
|
||||
pruneopts = "UT"
|
||||
revision = "8159197d3770eb6dbf3a9706a6d40462ebb69cec"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:4fd5ce7844c22e194005b9e12fee8adc70fb5ba0bbba9e1964d2e3d1f301d789"
|
||||
name = "github.com/bwmarrin/discordgo"
|
||||
packages = ["."]
|
||||
pruneopts = "UT"
|
||||
revision = "4a33b9bc7c56cfdb9bb244e33e83cb3941fe2bdc"
|
||||
version = "v0.18.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:43dd08a10854b2056e615d1b1d22ac94559d822e1f8b6fcc92c1a1057e85188e"
|
||||
name = "github.com/gorilla/websocket"
|
||||
packages = ["."]
|
||||
pruneopts = "UT"
|
||||
revision = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b"
|
||||
version = "v1.2.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:50993a8fbb3042b88dfecb8f4473a42f13ac70d6fd86f64df525a28b357c2d5b"
|
||||
name = "github.com/kidoman/go-steam"
|
||||
packages = ["."]
|
||||
pruneopts = "UT"
|
||||
revision = "2e40e0d508cbac591bab4ae18b231153295f3a0a"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:0a69a1c0db3591fcefb47f115b224592c8dfa4368b7ba9fae509d5e16cdc95c8"
|
||||
name = "github.com/konsorten/go-windows-terminal-sequences"
|
||||
packages = ["."]
|
||||
pruneopts = "UT"
|
||||
revision = "5c8c8bd35d3832f5d134ae1e1e375b69a4d25242"
|
||||
version = "v1.0.1"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:e035fb07be76ce6e4ce005add75491d9f0749403f595f153d6e2823a71c24149"
|
||||
name = "golang.org/x/crypto"
|
||||
packages = [
|
||||
"nacl/secretbox",
|
||||
"poly1305",
|
||||
"salsa20/salsa"
|
||||
"salsa20/salsa",
|
||||
"ssh/terminal",
|
||||
]
|
||||
pruneopts = "UT"
|
||||
revision = "c4a91bd4f524f10d064139674cf55852e055ad01"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
digest = "1:43cde116ff48f299eddb7e6515677e6d0a2c915854bb05a333877f07c3bb3033"
|
||||
name = "golang.org/x/sys"
|
||||
packages = [
|
||||
"unix",
|
||||
"windows",
|
||||
]
|
||||
pruneopts = "UT"
|
||||
revision = "11f53e03133963fb11ae0588e08b5e0b85be8be5"
|
||||
|
||||
[solve-meta]
|
||||
analyzer-name = "dep"
|
||||
analyzer-version = 1
|
||||
inputs-digest = "0832269100c492c595c4fe5f02e10d70889b9fa4d6a869c3ad59584cda0c5d31"
|
||||
input-imports = [
|
||||
"github.com/anvie/port-scanner",
|
||||
"github.com/bwmarrin/discordgo",
|
||||
"github.com/kidoman/go-steam",
|
||||
]
|
||||
solver-name = "gps-cdcl"
|
||||
solver-version = 1
|
||||
|
||||
@@ -36,3 +36,7 @@
|
||||
[prune]
|
||||
go-tests = true
|
||||
unused-packages = true
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "github.com/kidoman/go-steam"
|
||||
|
||||
5
main.go
5
main.go
@@ -8,11 +8,6 @@ import (
|
||||
"github.com/mgerb/ServerStatus/serverstatus"
|
||||
)
|
||||
|
||||
// Variables used for command line parameters
|
||||
var (
|
||||
BotID string
|
||||
)
|
||||
|
||||
var version = "undefined"
|
||||
|
||||
func init() {
|
||||
|
||||
10
readme.md
10
readme.md
@@ -1,11 +1,9 @@
|
||||
# Server Status
|
||||
Scans a list of TCP servers checking checking which are currently online.
|
||||
Scans a list of servers checking checking which are currently online.
|
||||
This bot will send a chat notification when the status of a server changes (goes on or offline).
|
||||
|
||||
I originally made this bot to check if private World of Warcraft servers were up or not.
|
||||
It's actually much more useful than that and can be used for most servers.
|
||||
|
||||
NOTE: This bot currently does not have any UDP support.
|
||||
- **TCP** - should work with all servers
|
||||
- **UDP** - [Source RCON Protocol](https://developer.valvesoftware.com/wiki/Source_RCON_Protocol) is supported
|
||||
|
||||
## Configuration
|
||||
- Download the latest release [here](https://github.com/mgerb/ServerStatus/releases)
|
||||
@@ -13,7 +11,7 @@ NOTE: This bot currently does not have any UDP support.
|
||||
- Execute the OS specific binary!
|
||||
|
||||
### Mentioning Roles/Users
|
||||
- you must first get your role/user id
|
||||
- you must first get your role/user id (see below of obtaining ID's)
|
||||
- for user `<@userid>`
|
||||
- for role `<@&roleid>`
|
||||
|
||||
|
||||
@@ -2,11 +2,13 @@ package serverstatus
|
||||
|
||||
import (
|
||||
"log"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/anvie/port-scanner"
|
||||
"github.com/bwmarrin/discordgo"
|
||||
steam "github.com/kidoman/go-steam"
|
||||
"github.com/mgerb/ServerStatus/bot"
|
||||
"github.com/mgerb/ServerStatus/config"
|
||||
)
|
||||
@@ -52,6 +54,19 @@ func scanServers() {
|
||||
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 && serverUp != prevServerUp {
|
||||
sendMessageToRooms(green, server.Name, "Is now online :smiley:", true)
|
||||
} else if !serverUp && serverUp != prevServerUp {
|
||||
|
||||
Reference in New Issue
Block a user