some clean-up

This commit is contained in:
2019-06-25 12:08:43 -04:00
parent ca2070d6f5
commit b626005acc
2 changed files with 141 additions and 126 deletions
+21 -6
View File
@@ -48,36 +48,41 @@ var (
jsonGet = &http.Client{Timeout: 10 * time.Second} jsonGet = &http.Client{Timeout: 10 * time.Second}
// Using an environment variable to protect IP // Using an environment variable to protect IP
ServerAddress = os.Getenv("SERVER_IP") ServerAddress = os.Getenv("SERVER_IP")
// ServerDetails struct to holds PlayerList & ServerDetails struct // ServerDetails struct to hold PlayerList & ServerDetails struct
ServerDetails = &ServerDetailsStruct{} ServerDetails = &ServerDetailsStruct{}
// NoPixelData struct // NoPixelData struct
NoPixelData Nopixeldata NoPixelData Nopixeldata
) )
// GetPlayerList sends HTTP get request to server to get list of players // getPlayerList sends HTTP get request to get list of players from /players.json
func getPlayerList() (err error) { func getPlayerList() (err error) {
server := strings.Builder{} server := strings.Builder{}
fmt.Fprintf(&server, "http://%s/players.json", ServerAddress) fmt.Fprintf(&server, "http://%s/players.json", ServerAddress)
req, err := jsonGet.Get(server.String()) req, err := jsonGet.Get(server.String())
if err != nil { if err != nil {
return err return err
} }
defer req.Body.Close() defer req.Body.Close()
err = json.NewDecoder(req.Body).Decode(&ServerDetails.Players) err = json.NewDecoder(req.Body).Decode(&ServerDetails.Players)
if err != nil { if err != nil {
return err return err
} }
return return
} }
// GetServerQueueDetails opens UDP socket to FiveM Server and current players and queue from server details // getServerQueue opens UDP socket to get queue count
func getServerQueueDetails() (err error) { func getServerQueue() (err error) {
serverData := make([]byte, 256) serverData := make([]byte, 256)
serverConnection, err := net.Dial("udp", ServerAddress) serverConnection, err := net.Dial("udp", ServerAddress)
defer serverConnection.Close() defer serverConnection.Close()
if err != nil { if err != nil {
return err return err
} }
// UDP voodoo to get server info -- https://github.com/LiquidObsidian/fivereborn-query/blob/master/index.js#L54
fmt.Fprintf(serverConnection, "\xFF\xFF\xFF\xFFgetinfo f") fmt.Fprintf(serverConnection, "\xFF\xFF\xFF\xFFgetinfo f")
_, err = bufio.NewReader(serverConnection).Read(serverData) _, err = bufio.NewReader(serverConnection).Read(serverData)
@@ -89,18 +94,21 @@ func getServerQueueDetails() (err error) {
currentPlayerValues, _ := strconv.ParseInt(string(serverDetails[4]), 0, 64) currentPlayerValues, _ := strconv.ParseInt(string(serverDetails[4]), 0, 64)
currentserverQueueValues, _ := strconv.ParseInt(string(serverQueue[0]), 0, 64) currentserverQueueValues, _ := strconv.ParseInt(string(serverQueue[0]), 0, 64)
ServerDetails.ServerQueue.CurrentPlayers = currentPlayerValues ServerDetails.ServerQueue.CurrentPlayers = currentPlayerValues
if currentserverQueueValues >= 1 { if currentserverQueueValues >= 1 {
ServerDetails.ServerQueue.CurrentQueue = currentserverQueueValues ServerDetails.ServerQueue.CurrentQueue = currentserverQueueValues
} }
} else { } else {
return err return err
} }
return return
} }
func steam64toSteam(input int64) (steamid string) { func steam64toSteam(input int64) (steamid string) {
legacySteamid := ((input - 76561197960265728) / 2) legacySteamid := ((input - 76561197960265728) / 2)
steamid = fmt.Sprintf("STEAM_0:%d:%d", (input % 2), legacySteamid) steamid = fmt.Sprintf("STEAM_0:%d:%d", (input % 2), legacySteamid)
return return
} }
@@ -125,6 +133,7 @@ func parsePlayers() (err error) {
} }
ServerDetails.Players[i].Identifiers = steamIDs ServerDetails.Players[i].Identifiers = steamIDs
} }
return return
} }
@@ -133,10 +142,12 @@ func loadPlayersJSON() (err error) {
if err != nil { if err != nil {
return return
} }
err = json.NewDecoder(jsonFile.Body).Decode(&NoPixelData) err = json.NewDecoder(jsonFile.Body).Decode(&NoPixelData)
if err != nil { if err != nil {
return err return err
} }
return return
} }
@@ -146,6 +157,7 @@ func getPlayerNoPixelInformation(id string) (p NoPixelPlayer) {
return NoPixelData[i] return NoPixelData[i]
} }
} }
return return
} }
@@ -156,11 +168,14 @@ func List(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "failed to load JSON file %v", err) fmt.Fprintf(w, "failed to load JSON file %v", err)
return return
} }
getPlayerList() getPlayerList()
getServerQueueDetails() getServerQueue()
parsePlayers() parsePlayers()
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
w.Header().Set("Access-Control-Allow-Origin", "*") w.Header().Set("Access-Control-Allow-Origin", "*")
json.NewEncoder(w).Encode(ServerDetails) json.NewEncoder(w).Encode(ServerDetails)
} }
@@ -174,4 +189,4 @@ func main() {
if err := http.ListenAndServe(addr, nil); err != nil { if err := http.ListenAndServe(addr, nil); err != nil {
panic(err) panic(err)
} }
} }