mirror of
https://github.com/DrBeef/JKXR.git
synced 2024-12-13 14:11:33 +00:00
4597b03873
Opens in Android Studio but haven't even tried to build it yet (it won't.. I know that much!)
68 lines
1.3 KiB
Bash
68 lines
1.3 KiB
Bash
#!/bin/bash
|
|
#
|
|
# OpenJK server utility functions.
|
|
#
|
|
|
|
# Send and receive UDP datagrams
|
|
function sendrecv
|
|
{
|
|
local COMMAND="$*"
|
|
local HEADER="\0377\0377\0377\0377"
|
|
echo -e "${HEADER}${COMMAND}" | socat -t3 -T3 - UDP:127.0.0.1:29070 | tr -d "${HEADER}" 2>/dev/null
|
|
}
|
|
|
|
# Parse a config file and get the value for a cvar
|
|
function parseconfig
|
|
{
|
|
local FILE="$1"
|
|
local KEY="$2"
|
|
if [ -e "$FILE" ]; then
|
|
grep -E -i -m 1 "^set[usa]?\s+${KEY}\s+(.*)$" "$FILE" | sed -r 's#^set[usa]?\s+[^ ]+\s+"?([^"]*)"?\s*$#\1#g'
|
|
fi
|
|
}
|
|
|
|
# Parse an info string and get the value for a key
|
|
function parseinfo
|
|
{
|
|
local INFO="$1"
|
|
local KEY="$2"
|
|
echo "$INFO" | grep -o "\\\\${KEY}\\\\[^\\\\]*\\\\" | cut -d"\\" -f 3
|
|
}
|
|
|
|
# Get live server info
|
|
function getinfo
|
|
{
|
|
sendrecv getinfo | tail -n +2
|
|
}
|
|
|
|
# Get live server status
|
|
function getstatus
|
|
{
|
|
sendrecv getstatus | tail -n +2
|
|
}
|
|
|
|
# Get live server serverinfo
|
|
function getserverinfo
|
|
{
|
|
getstatus | head -n 1
|
|
}
|
|
|
|
# Get live server players
|
|
function getplayers
|
|
{
|
|
getstatus | tail -n +2
|
|
}
|
|
|
|
# Execute a rcon command
|
|
function rcon
|
|
{
|
|
local COMMAND="$*"
|
|
local CONFIG
|
|
for CONFIG in "$OJK_HOMEPATH/$OJK_MOD/server.cfg" "$OJK_BASEPATH/$OJK_MOD/server.cfg" "$OJK_CDPATH/$OJK_MOD/server.cfg"; do
|
|
local RCON_PASSWORD=`parseconfig "$CONFIG" rconpassword`
|
|
if [ -n "$RCON_PASSWORD" ]; then
|
|
sendrecv "rcon $RCON_PASSWORD $COMMAND"
|
|
break
|
|
fi
|
|
done
|
|
}
|