mirror of
https://github.com/jakejarvis/npqueue.git
synced 2026-07-26 09:36:03 -04:00
some clean-up
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user