Skip to content

Commit

Permalink
fix(sdtdserver): fixes to sdtd (#3041)
Browse files Browse the repository at this point in the history
* fix sdtd config handling for the port

* add steamclient.so fix to sdtd

* removed logfile from parameters to allow console display

* steamclient.so bug fix

* allow accurate ip to be set for webadminip in most cases

* master server query will loop through server ip addresses

* more accurate details on telnet IP address

* minor tidy up of details web admin and telnet

* sdtd does not have an interactive console

* correct steamclient.so fix

* remove x86 binary as no longer present

* more changes to steamclient.so

Co-authored-by: H3o66 <chris.h3o66@gmail.com>
  • Loading branch information
dgibbs64 and h3o66 committed Sep 16, 2020
1 parent d9690f8 commit d961b05
Show file tree
Hide file tree
Showing 16 changed files with 112 additions and 84 deletions.
6 changes: 3 additions & 3 deletions lgsm/config-default/config-lgsm/sdtdserver/_default.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ ip="0.0.0.0"

## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
fn_parms(){
parms="-logfile ${gamelogdir}/output_log__$(date +%Y-%m-%d__%H-%M-%S).txt -quit -batchmode -nographics -dedicated -configfile=${servercfgfullpath}"
parms="-quit -batchmode -nographics -dedicated -configfile=${servercfgfullpath}"
}

#### LinuxGSM Settings ####
Expand Down Expand Up @@ -138,7 +138,7 @@ querytype="protocol-valve"

## Console type
consoleverbose="yes"
consoleinteract="yes"
consoleinteract="no"

## Game Server Details
# Do not edit
Expand All @@ -152,7 +152,7 @@ glibc="2.15"
## Game Server Directories
systemdir="${serverfiles}"
executabledir="${serverfiles}"
executable=$([ "$(uname -m)" == "x86_64" ] && echo -e "./7DaysToDieServer.x86_64" || echo -e "./7DaysToDieServer.x86")
executable="./7DaysToDieServer.x86_64"
servercfgdir="${systemdir}"
servercfg="${selfname}.xml"
servercfgdirdefault="${serverfiles}"
Expand Down
18 changes: 15 additions & 3 deletions lgsm/functions/check_ip.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,25 @@ getipwc=$(${ipcommand} -o -4 addr | awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\
# If the IP variable has been set by user.
if [ -n "${ip}" ]&&[ "${ip}" != "0.0.0.0" ]; then
queryips=( "${ip}" )
# If game config does have an IP set.
webadminip=( "${ip}" )
telnetip=( "${ip}" )
# If game config does have an IP set.
elif [ -n "${configip}" ]&&[ "${configip}" != "0.0.0.0" ];then
queryips=( "${configip}" )
ip="${configip}"
# If no ip is set by the user.
webadminip=( "${configip}" )
telnetip=( "${configip}" )
# If there is only 1 server IP address.
# Some IP details can automaticly use the one IP
elif [ "${getipwc}" == "1" ]; then
queryips=( $(echo "${getip}") )
ip="0.0.0.0"
webadminip=( "${getip}" )
telnetip=( "${getip}" )
# If no ip is set by the user and server has more than one IP.
else
queryips=( $(echo "${getip}") )
ip="0.0.0.0"
# If IP has not been set by user.
webadminip=( "${ip}" )
telnetip=( "${ip}" )
fi
2 changes: 1 addition & 1 deletion lgsm/functions/command_debug.sh
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ if [ "${glibc}" ]; then
fi

# Server IP
server echo -e "${lightblue}Game Server IP:\t${default}${ip}:${port}"
echo -e "${lightblue}Game Server IP:\t${default}${ip}:${port}"

# External server IP.
if [ "${extip}" ]; then
Expand Down
1 change: 1 addition & 0 deletions lgsm/functions/fix_cmw.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ fi
if [ ! -f "${executabledir}/lib/steamclient.so" ]; then
fixname="steamclient.so x86"
fn_fix_msg_start
mkdir -p "${executabledir}/lib"
if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${executabledir}/lib/steamclient.so"
elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
Expand Down
1 change: 1 addition & 0 deletions lgsm/functions/fix_cs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ ! -f "${serverfiles}/steamclient.so" ]; then
fixname="steamclient.so x86"
fn_fix_msg_start
mkdir -p "${serverfiles}"
if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/steamclient.so"
elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
Expand Down
40 changes: 20 additions & 20 deletions lgsm/functions/fix_hw.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,26 @@

functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

if [ "${shortname}" == "hw" ]; then
# Fixes: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so.
if [ ! -f "${serverfiles}/Hurtworld_Data/Plugins/x86/steamclient.so" ]; then
fixname="steamclient.so x86"
fn_fix_msg_start
if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86/steamclient.so" >> "${lgsmlog}"
elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
cp "${steamcmddir}/linux32/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86/steamclient.so" >> "${lgsmlog}"
fi
fn_fix_msg_end
# Fixes: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so.
if [ ! -f "${serverfiles}/Hurtworld_Data/Plugins/x86/steamclient.so" ]; then
fixname="steamclient.so x86"
fn_fix_msg_start
mkdir -p "${serverfiles}/Hurtworld_Data/Plugins/x86"
if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86/steamclient.so"
elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
cp "${steamcmddir}/linux32/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86/steamclient.so"
fi
if [ ! -f "${serverfiles}/Hurtworld_Data/Plugins/x86_64/steamclient.so" ]; then
fixname="steamclient.so x86_64"
fn_fix_msg_start
if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then
cp "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86_64/steamclient.so" >> "${lgsmlog}"
elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then
cp "${steamcmddir}/linux64/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86_64/steamclient.so" >> "${lgsmlog}"
fi
fn_fix_msg_end
fn_fix_msg_end
fi
if [ ! -f "${serverfiles}/Hurtworld_Data/Plugins/x86_64/steamclient.so" ]; then
fixname="steamclient.so x86_64"
fn_fix_msg_start
mkdir -p "${serverfiles}/Hurtworld_Data/Plugins/x86_64"
if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then
cp "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86_64/steamclient.so"
elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then
cp "${steamcmddir}/linux64/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86_64/steamclient.so"
fi
fn_fix_msg_end
fi
10 changes: 6 additions & 4 deletions lgsm/functions/fix_pz.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,23 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ ! -f "${serverfiles}/linux32/steamclient.so" ]; then
fixname="steamclient.so x86"
fn_fix_msg_start
mkdir -p "${serverfiles}/linux32"
if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/linux32/steamclient.so" >> "${lgsmlog}"
cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/linux32/steamclient.so"
elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
cp "${steamcmddir}/linux32/steamclient.so" "${serverfiles}/linux32/steamclient.so" >> "${lgsmlog}"
cp "${steamcmddir}/linux32/steamclient.so" "${serverfiles}/linux32/steamclient.so"
fi
fn_fix_msg_end
fi

if [ ! -f "${serverfiles}/linux64/steamclient.so" ]; then
fixname="steamclient.so x86_64"
fn_fix_msg_start
mkdir -p "${serverfiles}/linux64"
if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then
cp "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${serverfiles}/linux64/steamclient.so" >> "${lgsmlog}"
cp "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${serverfiles}/linux64/steamclient.so"
elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then
cp "${steamcmddir}/linux64/steamclient.so" "${serverfiles}/linux64/steamclient.so" >> "${lgsmlog}"
cp "${steamcmddir}/linux64/steamclient.so" "${serverfiles}/linux64/steamclient.so"
fi
fn_fix_msg_end
fi
2 changes: 1 addition & 1 deletion lgsm/functions/fix_rust.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

# Fixes: [Raknet] Server Shutting Down (Shutting Down).
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${systemdir}/RustDedicated_Data/Plugins/x86_64"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/RustDedicated_Data/Plugins/x86_64"
2 changes: 1 addition & 1 deletion lgsm/functions/fix_sdtd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@

functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}/7DaysToDieServer_Data/Plugins/x86_64"
5 changes: 3 additions & 2 deletions lgsm/functions/fix_ss3.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ ! -f "${serverfiles}/Bin/steamclient.so" ]||[ "$(diff "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/Bin/steamclient.so" 2>/dev/null)" ]; then
fixname="steamclient.so"
fn_fix_msg_start
mkdir -p "${serverfiles}/Bin"
cp -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/Bin/steamclient.so"
fn_fix_msg_end
fi
Expand All @@ -18,7 +19,7 @@ fi
if [ ! -f "${HOME}/.steam/bin32/libsteam.so" ]; then
fixname="libsteam.so"
fn_fix_msg_start
mkdir -pv "${HOME}/.steam/bin32" >> "${lgsmlog}"
cp "${serverfiles}/Bin/libsteam.so" "${HOME}/.steam/bin32/libsteam.so" >> "${lgsmlog}"
mkdir -p "${HOME}/.steam/bin32"
cp "${serverfiles}/Bin/libsteam.so" "${HOME}/.steam/bin32/libsteam.so"
fn_fix_msg_end
fi
12 changes: 6 additions & 6 deletions lgsm/functions/fix_steamcmd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ ! -f "${HOME}/.steam/sdk64/steamclient.so" ]; then
fixname="steamclient.so sdk64"
fn_fix_msg_start
mkdir -pv "${HOME}/.steam/sdk64" >> "${lgsmlog}"
mkdir -p "${HOME}/.steam/sdk64"
if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then
cp "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${HOME}/.steam/sdk64/steamclient.so" >> "${lgsmlog}"
cp "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${HOME}/.steam/sdk64/steamclient.so"
elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then
cp "${steamcmddir}/linux64/steamclient.so" "${HOME}/.steam/sdk64/steamclient.so" >> "${lgsmlog}"
cp "${steamcmddir}/linux64/steamclient.so" "${HOME}/.steam/sdk64/steamclient.so"
fi
fn_fix_msg_end
fi
Expand All @@ -23,11 +23,11 @@ fi
if [ ! -f "${HOME}/.steam/sdk32/steamclient.so" ]; then
fixname="steamclient.so sdk32"
fn_fix_msg_start
mkdir -pv "${HOME}/.steam/sdk32" >> "${lgsmlog}"
mkdir -p "${HOME}/.steam/sdk32"
if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${HOME}/.steam/sdk32/steamclient.so" >> "${lgsmlog}"
cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${HOME}/.steam/sdk32/steamclient.so"
elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
cp "${steamcmddir}/linux32/steamclient.so" "${HOME}/.steam/sdk32/steamclient.so" >> "${lgsmlog}"
cp "${steamcmddir}/linux32/steamclient.so" "${HOME}/.steam/sdk32/steamclient.so"
fi
fn_fix_msg_end
fi
5 changes: 3 additions & 2 deletions lgsm/functions/fix_tu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ ! -f "${executabledir}/steamclient.so" ]; then
fixname="steamclient.so x86_64"
fn_fix_msg_start
mkdir -p "${executabledir}"
if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then
cp "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${executabledir}/steamclient.so" >> "${lgsmlog}"
cp "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${executabledir}/steamclient.so"
elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then
cp "${steamcmddir}/linux64/steamclient.so" "${executabledir}/steamclient.so" >> "${lgsmlog}"
cp "${steamcmddir}/linux64/steamclient.so" "${executabledir}/steamclient.so"
fi
fn_fix_msg_end
fi
5 changes: 3 additions & 2 deletions lgsm/functions/fix_wurm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ ! -f "${serverfiles}/nativelibs" ]; then
fixname="steamclient.so x86"
fn_fix_msg_start
mkdir -p "${serverfiles}/nativelibs"
if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/nativelibs" >> "${lgsmlog}"
cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/nativelibs/steamclient.so"
elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
cp "${steamcmddir}/linux32/steamclient.so" "${serverfiles}/nativelibs" >> "${lgsmlog}"
cp "${steamcmddir}/linux32/steamclient.so" "${serverfiles}/nativelibs/steamclient.so"
fi
fn_fix_msg_end
fi
Expand Down
7 changes: 6 additions & 1 deletion lgsm/functions/info_config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1241,6 +1241,7 @@ fn_info_config_sdtd(){
telnetenabled="${unavailable}"
telnetport="${zero}"
telnetpass="${unavailable}"
telnetip="${unavailable}"
maxplayers="${unavailable}"
gamemode="${unavailable}"
gameworld="${unavailable}"
Expand All @@ -1256,7 +1257,11 @@ fn_info_config_sdtd(){
telnetenabled=$(grep "TelnetEnabled" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
telnetport=$(grep "TelnetPort" "${servercfgfullpath}" | tr -cd '[:digit:]')
telnetpass=$(grep "TelnetPassword" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")

# Telnet IP will be localhost if no password is set
# check_ip will set the IP first. This will overwrite it.
if [ -z "${telnetpass}" ]; then
telnetip="127.0.0.1"
fi
maxplayers=$(grep "ServerMaxPlayerCount" "${servercfgfullpath}" | tr -cd '[:digit:]')
gamemode=$(grep "GameMode" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
gameworld=$(grep "GameWorld" "${servercfgfullpath}" | sed 's/^.*value="//' | cut -f1 -d"\"")
Expand Down
6 changes: 5 additions & 1 deletion lgsm/functions/info_distro.sh
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,11 @@ fi
if [ "$(command -v jq 2>/dev/null)" ]; then
if [ "${ip}" ]&&[ "${port}" ]; then
if [ "${steammaster}" == "true" ]; then
masterserver=$(curl -m 3 -s 'https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr='${ip}':'${port}'&format=json' | jq '.response.servers[]|.addr' | wc -l 2>/dev/null)
# Will query server IP addresses first.
for queryip in "${queryips[@]}"; do
masterserver=$(curl -m 3 -s 'https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr='${queryip}':'${port}'&format=json' | jq '.response.servers[]|.addr' | wc -l 2>/dev/null)
done
# Should that not work it will try the external IP.
if [ "${masterserver}" == "0" ]; then
masterserver=$(curl -m 3 -s 'https://api.steampowered.com/ISteamApps/GetServersAtAddress/v0001?addr='${extip}':'${port}'&format=json' | jq '.response.servers[]|.addr' | wc -l 2>/dev/null)
fi
Expand Down
Loading

0 comments on commit d961b05

Please sign in to comment.