mirror of
https://github.com/eliasstepanik/ark-ac-server-tools.git
synced 2026-01-25 07:48:28 +00:00
commit
46f8c16828
836
tools/arkmanager
836
tools/arkmanager
File diff suppressed because it is too large
Load Diff
@ -11,29 +11,35 @@ steamcmd_appinfocache="/home/steam/Steam/appcache/appinfo.vdf" # cache of t
|
|||||||
#steamlogin="anonymous" # Uncomment this to specify steam login instead of using anonymous login
|
#steamlogin="anonymous" # Uncomment this to specify steam login instead of using anonymous login
|
||||||
|
|
||||||
# config environment
|
# config environment
|
||||||
arkserverroot="/home/steam/ARK" # path of your ARK server files (default ~/ARK)
|
|
||||||
arkserverexec="ShooterGame/Binaries/Linux/ShooterGameServer" # name of ARK server executable
|
arkserverexec="ShooterGame/Binaries/Linux/ShooterGameServer" # name of ARK server executable
|
||||||
arkbackupdir="/home/steam/ARK-Backups" # path to backup directory
|
arkbackupdir="/home/steam/ARK-Backups" # path to backup directory
|
||||||
arkwarnminutes="60" # number of minutes to warn players when using update --warn
|
arkwarnminutes="60" # number of minutes to warn players when using update --warn
|
||||||
arkautorestartfile="ShooterGame/Saved/.autorestart" # path to autorestart file
|
arkautorestartfile="ShooterGame/Saved/.autorestart" # path to autorestart file
|
||||||
|
arkAutoUpdateOnStart="false" # set this to true if you want to always update before startup
|
||||||
arkBackupPreUpdate="false" # set this to true if you want to perform a backup before updating
|
arkBackupPreUpdate="false" # set this to true if you want to perform a backup before updating
|
||||||
|
#arkStagingDir="/home/steam/ARK-Staging" # Uncomment to enable updates to be fully downloaded before restarting the server (reduces downtime while updating)
|
||||||
|
|
||||||
|
# Options to automatically remove old backups to keep backup size in check
|
||||||
|
# Each compressed backup is generally about 1-2MB in size.
|
||||||
|
arkMaxBackupSizeMB="500" # Set to automatically remove old backups when size exceeds this limit
|
||||||
|
#arkMaxBackupSizeGB="2" # Uncomment this and comment the above to specify the limit in whole GB
|
||||||
|
|
||||||
# Update warning messages
|
# Update warning messages
|
||||||
# Modify as desired, putting the %d replacement operator where the number belongs
|
# Modify as desired, putting the %d replacement operator where the number belongs
|
||||||
msgWarnUpdateMinutes="This ARK server will shutdown for an update in %d minutes"
|
msgWarnUpdateMinutes="This ARK server will shutdown for an update in %d minutes"
|
||||||
msgWarnUpdateSeconds="This ARK server will shutdown for an update in %d seconds"
|
msgWarnUpdateSeconds="This ARK server will shutdown for an update in %d seconds"
|
||||||
|
msgWarnRestartMinutes="This ARK server will shutdown for a restart in %d minutes"
|
||||||
|
msgWarnRestartSeconds="This ARK server will shutdown for a restart in %d seconds"
|
||||||
|
msgWarnShutdownMinutes="This ARK server will shutdown in %d minutes"
|
||||||
|
msgWarnShutdownSeconds="This ARK server will shutdown in %d seconds"
|
||||||
|
|
||||||
# ARK server options - use ark_<optionname>=<value>
|
# ARK server common options - use ark_<optionname>=<value>
|
||||||
# comment out these values if you want to define them
|
# comment out these values if you want to define them
|
||||||
# inside your GameUserSettings.ini file
|
# inside your GameUserSettings.ini file
|
||||||
serverMap="TheIsland" # server map (default TheIsland)
|
serverMap="TheIsland" # server map (default TheIsland)
|
||||||
#serverMapModId="469987622" # Uncomment this to specify the Map Mod Id (<fileid> in http://steamcommunity.com/sharedfiles/filedetails/?id=<fileid>)
|
#serverMapModId="469987622" # Uncomment this to specify the Map Mod Id (<fileid> in http://steamcommunity.com/sharedfiles/filedetails/?id=<fileid>)
|
||||||
#ark_TotalConversionMod="496735411" # Uncomment this to specify a total-conversion mod
|
#ark_TotalConversionMod="496735411" # Uncomment this to specify a total-conversion mod
|
||||||
ark_RCONEnabled="True" # Enable RCON Protocol
|
ark_RCONEnabled="True" # Enable RCON Protocol
|
||||||
ark_RCONPort="32330" # RCON Port
|
|
||||||
ark_SessionName="ARK Server Tools" # if your session name needs special characters please use the .ini instead
|
|
||||||
ark_Port="7778" # ARK server port (default 7778)
|
|
||||||
ark_QueryPort="27015" # ARK query port (default 27015)
|
|
||||||
ark_ServerPassword="" # ARK server password, empty: no password required to login
|
ark_ServerPassword="" # ARK server password, empty: no password required to login
|
||||||
ark_ServerAdminPassword="keyboardcat" # ARK server admin password, KEEP IT SAFE!
|
ark_ServerAdminPassword="keyboardcat" # ARK server admin password, KEEP IT SAFE!
|
||||||
ark_MaxPlayers="70"
|
ark_MaxPlayers="70"
|
||||||
@ -48,7 +54,6 @@ ark_MaxPlayers="70"
|
|||||||
#arkopt_StructureDestructionTag=DestroySwampSnowStructures
|
#arkopt_StructureDestructionTag=DestroySwampSnowStructures
|
||||||
|
|
||||||
# config Service
|
# config Service
|
||||||
servicename="arkserv" # Name of the service (don't change if you don't know what are you doing)
|
|
||||||
logdir="/var/log/arktools" # Logs path (default /var/log/arktools)
|
logdir="/var/log/arktools" # Logs path (default /var/log/arktools)
|
||||||
|
|
||||||
# steamdb specific
|
# steamdb specific
|
||||||
@ -63,3 +68,5 @@ mod_branch=Windows
|
|||||||
# alternate configs
|
# alternate configs
|
||||||
# example for config name "ark1":
|
# example for config name "ark1":
|
||||||
#configfile_ark1="/path/to/config/file"
|
#configfile_ark1="/path/to/config/file"
|
||||||
|
|
||||||
|
#defaultinstance="main"
|
||||||
|
|||||||
@ -99,10 +99,14 @@ if [ "$userinstall" == "yes" ]; then
|
|||||||
PREFIX="${PREFIX:-${HOME}}"
|
PREFIX="${PREFIX:-${HOME}}"
|
||||||
EXECPREFIX="${EXECPREFIX:-${PREFIX}}"
|
EXECPREFIX="${EXECPREFIX:-${PREFIX}}"
|
||||||
DATAPREFIX="${DATAPREFIX:-${PREFIX}/.local/share}"
|
DATAPREFIX="${DATAPREFIX:-${PREFIX}/.local/share}"
|
||||||
|
CONFIGFILE="${PREFIX}/.arkmanager.cfg"
|
||||||
|
INSTANCEDIR="${PREFIX}/.config/arkmanager/instances"
|
||||||
else
|
else
|
||||||
PREFIX="${PREFIX:-/usr/local}"
|
PREFIX="${PREFIX:-/usr/local}"
|
||||||
EXECPREFIX="${EXECPREFIX:-${PREFIX}}"
|
EXECPREFIX="${EXECPREFIX:-${PREFIX}}"
|
||||||
DATAPREFIX="${DATAPREFIX:-${PREFIX}/share}"
|
DATAPREFIX="${DATAPREFIX:-${PREFIX}/share}"
|
||||||
|
CONFIGFILE="/etc/arkmanager/.arkmanager.cfg"
|
||||||
|
INSTANCEDIR="/etc/arkmanager/instances"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
BINDIR="${BINDIR:-${EXECPREFIX}/bin}"
|
BINDIR="${BINDIR:-${EXECPREFIX}/bin}"
|
||||||
@ -155,8 +159,17 @@ if [ "$userinstall" == "yes" ]; then
|
|||||||
# Create a folder in ~/logs to let Ark tools write its own log files
|
# Create a folder in ~/logs to let Ark tools write its own log files
|
||||||
mkdir -p "${INSTALL_ROOT}${PREFIX}/logs/arktools"
|
mkdir -p "${INSTALL_ROOT}${PREFIX}/logs/arktools"
|
||||||
|
|
||||||
|
# Create a folder in ~/.config/arkamanger to hold instance configs
|
||||||
|
mkdir -p "${INSTALL_ROOT}${INSTANCEDIR}"
|
||||||
|
|
||||||
|
# Copy example instance config
|
||||||
|
cp instance.cfg.example "${INSTALL_ROOT}/${INSTANCEDIR}/instance.cfg.example"
|
||||||
|
# Change the defaults in the new instance config template
|
||||||
|
sed -i -e "s|\"/home/steam|\"${PREFIX}|" \
|
||||||
|
"${INSTALL_ROOT}${INSTANCEDIR}/instance.cfg.example"
|
||||||
|
|
||||||
# Copy arkmanager.cfg to ~/.arkmanager.cfg.NEW
|
# Copy arkmanager.cfg to ~/.arkmanager.cfg.NEW
|
||||||
cp arkmanager.cfg "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg.NEW"
|
cp arkmanager.cfg "${INSTALL_ROOT}${CONFIGFILE}.NEW"
|
||||||
# Change the defaults in the new config file
|
# Change the defaults in the new config file
|
||||||
sed -i -e "s|^steamcmd_user=\"steam\"|steamcmd_user=\"--me\"|" \
|
sed -i -e "s|^steamcmd_user=\"steam\"|steamcmd_user=\"--me\"|" \
|
||||||
-e "s|\"/home/steam|\"${PREFIX}|" \
|
-e "s|\"/home/steam|\"${PREFIX}|" \
|
||||||
@ -164,35 +177,18 @@ if [ "$userinstall" == "yes" ]; then
|
|||||||
-e "s|^install_bindir=.*|install_bindir=\"${BINDIR}\"|" \
|
-e "s|^install_bindir=.*|install_bindir=\"${BINDIR}\"|" \
|
||||||
-e "s|^install_libexecdir=.*|install_libexecdir=\"${LIBEXECDIR}\"|" \
|
-e "s|^install_libexecdir=.*|install_libexecdir=\"${LIBEXECDIR}\"|" \
|
||||||
-e "s|^install_datadir=.*|install_datadir=\"${DATADIR}\"|" \
|
-e "s|^install_datadir=.*|install_datadir=\"${DATADIR}\"|" \
|
||||||
"${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg.NEW"
|
"${INSTALL_ROOT}${CONFIGFILE}.NEW"
|
||||||
|
|
||||||
# Copy arkmanager.cfg to ~/.arkmanager.cfg if it doesn't already exist
|
# Copy arkmanager.cfg to ~/.arkmanager.cfg if it doesn't already exist
|
||||||
if [ -f "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg" ]; then
|
if [ -f "${INSTALL_ROOT}${CONFIGFILE}" ]; then
|
||||||
newopts=( arkbackupdir arkautorestartfile install_bindir install_libexecdir install_datadir mod_appid )
|
bash ./migrate-config.sh "${INSTALL_ROOT}${CONFIGFILE}"
|
||||||
newopt_steamcmd_appinfocache="${PREFIX}/Steam/appcache/appinfo.vdf"
|
bash ./migrate-main-instance.sh "${INSTALL_ROOT}${CONFIGFILE}" "${INSTALL_ROOT}${INSTANCEDIR}/main.cfg"
|
||||||
newopt_arkbackupdir="${PREFIX}/ARK-Backups"
|
|
||||||
newopt_arkautorestartfile="ShooterGame/Saved/.autorestart"
|
|
||||||
newopt_install_bindir="${BINDIR}"
|
|
||||||
newopt_install_libexecdir="${LIBEXECDIR}"
|
|
||||||
newopt_install_datadir="${DATADIR}"
|
|
||||||
newopt_mod_appid=346110
|
|
||||||
|
|
||||||
if grep '^\(servermail\|arkstVersion\)=' "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg" >/dev/null 2>&1; then
|
|
||||||
sed -i '/^\(servermail\|arkstVersion\)=/d' "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for optname in "${newopts[@]}"; do
|
|
||||||
if ! grep "^${optname}=" "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg" >/dev/null 2>&1; then
|
|
||||||
noptname="newopt_${optname}"
|
|
||||||
echo "${optname}='${!noptname}'" >>"${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "A previous version of ARK Server Tools was detected in your system, your old configuration was not overwritten. You may need to manually update it."
|
echo "A previous version of ARK Server Tools was detected in your system, your old configuration was not overwritten. You may need to manually update it."
|
||||||
echo "A copy of the new configuration file was included in '${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg.NEW'. Make sure to review any changes and update your config accordingly!"
|
echo "A copy of the new configuration file was included in '${CONFIGFILE}.NEW'. Make sure to review any changes and update your config accordingly!"
|
||||||
exit 2
|
exit 2
|
||||||
else
|
else
|
||||||
mv -n "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg.NEW" "${INSTALL_ROOT}${PREFIX}/.arkmanager.cfg"
|
mv -n "${INSTALL_ROOT}${CONFIGFILE}.NEW" "${INSTALL_ROOT}${CONFIGFILE}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# Copy arkmanager to /usr/bin and set permissions
|
# Copy arkmanager to /usr/bin and set permissions
|
||||||
@ -214,11 +210,12 @@ else
|
|||||||
if [ -f /etc/systemd/system.conf ]; then # used by systemd
|
if [ -f /etc/systemd/system.conf ]; then # used by systemd
|
||||||
mkdir -p "${INSTALL_ROOT}${LIBEXECDIR}"
|
mkdir -p "${INSTALL_ROOT}${LIBEXECDIR}"
|
||||||
cp systemd/arkmanager.init "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
cp systemd/arkmanager.init "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
||||||
|
sed -i "s|^DAEMON=\"/usr/bin/|DAEMON=\"${BINDIR}/|" "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
||||||
chmod +x "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
chmod +x "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
||||||
cp systemd/arkmanager.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
|
cp systemd/arkmanager.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
|
||||||
sed -i "s|=/usr/libexec/arkmanager/|=${LIBEXECDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
|
sed -i "s|=/usr/libexec/arkmanager/|=${LIBEXECDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
|
||||||
cp systemd/arkmanager@.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager@.service"
|
cp systemd/arkmanager@.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager@.service"
|
||||||
sed -i "s|=/usr/bin/|=${BINDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager@.service"
|
sed -i "s|=/usr/bin/|=${BINDIR}/|;s|=steam$|=${steamcmd_user}|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager@.service"
|
||||||
if [ -z "${INSTALL_ROOT}" ]; then
|
if [ -z "${INSTALL_ROOT}" ]; then
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable arkmanager.service
|
systemctl enable arkmanager.service
|
||||||
@ -241,11 +238,12 @@ else
|
|||||||
if [ -f /etc/systemd/system.conf ]; then # used by systemd
|
if [ -f /etc/systemd/system.conf ]; then # used by systemd
|
||||||
mkdir -p "${INSTALL_ROOT}${LIBEXECDIR}"
|
mkdir -p "${INSTALL_ROOT}${LIBEXECDIR}"
|
||||||
cp systemd/arkmanager.init "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
cp systemd/arkmanager.init "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
||||||
|
sed -i "s|^DAEMON=\"/usr/bin/|DAEMON=\"${BINDIR}/|" "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
||||||
chmod +x "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
chmod +x "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
||||||
cp systemd/arkmanager.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
|
cp systemd/arkmanager.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
|
||||||
sed -i "s|=/usr/libexec/arkmanager/|=${LIBEXECDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
|
sed -i "s|=/usr/libexec/arkmanager/|=${LIBEXECDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
|
||||||
cp systemd/arkmanager@.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager@.service"
|
cp systemd/arkmanager@.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager@.service"
|
||||||
sed -i "s|=/usr/bin/|=${BINDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager@.service"
|
sed -i "s|=/usr/bin/|=${BINDIR}/|;s|=steam$|=${steamcmd_user}|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager@.service"
|
||||||
if [ -z "${INSTALL_ROOT}" ]; then
|
if [ -z "${INSTALL_ROOT}" ]; then
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable arkmanager.service
|
systemctl enable arkmanager.service
|
||||||
@ -274,11 +272,12 @@ else
|
|||||||
elif [ -f /etc/systemd/system.conf ]; then # used by systemd
|
elif [ -f /etc/systemd/system.conf ]; then # used by systemd
|
||||||
mkdir -p "${INSTALL_ROOT}${LIBEXECDIR}"
|
mkdir -p "${INSTALL_ROOT}${LIBEXECDIR}"
|
||||||
cp systemd/arkmanager.init "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
cp systemd/arkmanager.init "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
||||||
|
sed -i "s|^DAEMON=\"/usr/bin/|DAEMON=\"${BINDIR}/|" "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
||||||
chmod +x "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
chmod +x "${INSTALL_ROOT}${LIBEXECDIR}/arkmanager.init"
|
||||||
cp systemd/arkmanager.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
|
cp systemd/arkmanager.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
|
||||||
sed -i "s|=/usr/libexec/arkmanager/|=${LIBEXECDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
|
sed -i "s|=/usr/libexec/arkmanager/|=${LIBEXECDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
|
||||||
cp systemd/arkmanager@.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager@.service"
|
cp systemd/arkmanager@.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager@.service"
|
||||||
sed -i "s|=/usr/bin/|=${BINDIR}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager@.service"
|
sed -i "s|=/usr/bin/|=${BINDIR}/|;s|=steam$|=${steamcmd_user}|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager@.service"
|
||||||
if [ -z "${INSTALL_ROOT}" ]; then
|
if [ -z "${INSTALL_ROOT}" ]; then
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable arkmanager.service
|
systemctl enable arkmanager.service
|
||||||
@ -291,43 +290,34 @@ else
|
|||||||
mkdir -p "${INSTALL_ROOT}/var/log/arktools"
|
mkdir -p "${INSTALL_ROOT}/var/log/arktools"
|
||||||
chown "$steamcmd_user" "${INSTALL_ROOT}/var/log/arktools"
|
chown "$steamcmd_user" "${INSTALL_ROOT}/var/log/arktools"
|
||||||
|
|
||||||
|
# Create a folder in /etc/arkmanager to hold instance config files
|
||||||
|
mkdir -p "${INSTALL_ROOT}${INSTANCEDIR}"
|
||||||
|
chown "$steamcmd_user" "${INSTALL_ROOT}${INSTANCEDIR}"
|
||||||
|
|
||||||
|
# Copy example instance config
|
||||||
|
cp instance.cfg.example "${INSTALL_ROOT}${INSTANCEDIR}/instance.cfg.example"
|
||||||
|
|
||||||
# Copy arkmanager.cfg inside linux configuation folder if it doesn't already exists
|
# Copy arkmanager.cfg inside linux configuation folder if it doesn't already exists
|
||||||
mkdir -p "${INSTALL_ROOT}/etc/arkmanager"
|
mkdir -p "${INSTALL_ROOT}/etc/arkmanager"
|
||||||
cp arkmanager.cfg "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg.NEW"
|
chown "$steamcmd_user" "${INSTALL_ROOT}/etc/arkmanager"
|
||||||
chown "$steamcmd_user" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg.NEW"
|
cp arkmanager.cfg "${INSTALL_ROOT}${CONFIGFILE}.NEW"
|
||||||
|
chown "$steamcmd_user" "${INSTALL_ROOT}${CONFIGFILE}.NEW"
|
||||||
sed -i -e "s|^steamcmd_user=\"steam\"|steamcmd_user=\"$steamcmd_user\"|" \
|
sed -i -e "s|^steamcmd_user=\"steam\"|steamcmd_user=\"$steamcmd_user\"|" \
|
||||||
-e "s|\"/home/steam|\"/home/$steamcmd_user|" \
|
-e "s|\"/home/steam|\"/home/$steamcmd_user|" \
|
||||||
-e "s|^install_bindir=.*|install_bindir=\"${BINDIR}\"|" \
|
-e "s|^install_bindir=.*|install_bindir=\"${BINDIR}\"|" \
|
||||||
-e "s|^install_libexecdir=.*|install_libexecdir=\"${LIBEXECDIR}\"|" \
|
-e "s|^install_libexecdir=.*|install_libexecdir=\"${LIBEXECDIR}\"|" \
|
||||||
-e "s|^install_datadir=.*|install_datadir=\"${DATADIR}\"|" \
|
-e "s|^install_datadir=.*|install_datadir=\"${DATADIR}\"|" \
|
||||||
"${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg.NEW"
|
"${INSTALL_ROOT}${CONFIGFILE}.NEW"
|
||||||
|
|
||||||
if [ -f "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" ]; then
|
if [ -f "${INSTALL_ROOT}${CONFIGFILE}" ]; then
|
||||||
newopts=( arkbackupdir arkautorestartfile install_bindir install_libexecdir install_datadir mod_appid )
|
bash ./migrate-config.sh "${INSTALL_ROOT}${CONFIGFILE}"
|
||||||
newopt_steamcmd_appinfocache="/home/${steamcmd_user}/Steam/appcache/appinfo.vdf"
|
bash ./migrate-main-instance.sh "${INSTALL_ROOT}${CONFIGFILE}" "${INSTALL_ROOT}${INSTANCEDIR}/main.cfg"
|
||||||
newopt_arkbackupdir="/home/${steamcmd_user}/ARK-Backups"
|
|
||||||
newopt_arkautorestartfile="ShooterGame/Saved/.autorestart"
|
|
||||||
newopt_install_bindir="${BINDIR}"
|
|
||||||
newopt_install_libexecdir="${LIBEXECDIR}"
|
|
||||||
newopt_install_datadir="${DATADIR}"
|
|
||||||
newopt_mod_appid=346110
|
|
||||||
|
|
||||||
if grep '^\(servermail\|arkstVersion\)=' "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" >/dev/null 2>&1; then
|
|
||||||
sed -i '/^\(servermail\|arkstVersion\)=/d' "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for optname in "${newopts[@]}"; do
|
|
||||||
if ! grep "^${optname}=" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" >/dev/null 2>&1; then
|
|
||||||
noptname="newopt_${optname}"
|
|
||||||
echo "${optname}='${!noptname}'" >>"${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "A previous version of ARK Server Tools was detected in your system, your old configuration was not overwritten. You may need to manually update it."
|
echo "A previous version of ARK Server Tools was detected in your system, your old configuration was not overwritten. You may need to manually update it."
|
||||||
echo "A copy of the new configuration file was included in /etc/arkmanager. Make sure to review any changes and update your config accordingly!"
|
echo "A copy of the new configuration file was included in /etc/arkmanager. Make sure to review any changes and update your config accordingly!"
|
||||||
exit 2
|
exit 2
|
||||||
else
|
else
|
||||||
mv -n "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg.NEW" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg"
|
mv -n "${INSTALL_ROOT}${CONFIGFILE}.NEW" "${INSTALL_ROOT}${CONFIGFILE}.cfg"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
28
tools/instance.cfg.example
Normal file
28
tools/instance.cfg.example
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# config environment
|
||||||
|
arkserverroot="/home/steam/ARK" # path of your ARK server files (default ~/ARK)
|
||||||
|
|
||||||
|
# ARK server options - use ark_<optionname>=<value>
|
||||||
|
# comment out these values if you want to define them
|
||||||
|
# inside your GameUserSettings.ini file
|
||||||
|
serverMap="TheIsland" # server map (default TheIsland)
|
||||||
|
#serverMapModId="469987622" # Uncomment this to specify the Map Mod Id (<fileid> in http://steamcommunity.com/sharedfiles/filedetails/?id=<fileid>)
|
||||||
|
#ark_TotalConversionMod="496735411" # Uncomment this to specify a total-conversion mod
|
||||||
|
ark_RCONEnabled="True" # Enable RCON Protocol
|
||||||
|
ark_RCONPort="32330" # RCON Port
|
||||||
|
ark_SessionName="ARK Server Tools" # if your session name needs special characters please use the .ini instead
|
||||||
|
ark_Port="7778" # ARK server port (default 7778)
|
||||||
|
ark_QueryPort="27015" # ARK query port (default 27015)
|
||||||
|
ark_ServerPassword="" # ARK server password, empty: no password required to login
|
||||||
|
ark_ServerAdminPassword="keyboardcat" # ARK server admin password, KEEP IT SAFE!
|
||||||
|
ark_MaxPlayers="70"
|
||||||
|
#ark_GameModIds="487516323,487516324,487516325" # Uncomment to specify additional mods by Mod Id separated by commas
|
||||||
|
#ark_AltSaveDirectoryName="SotF" # Uncomment to specify a different save directory name
|
||||||
|
|
||||||
|
# ARK server flags - use arkflag_<optionname>=true
|
||||||
|
#arkflag_OnlyAdminRejoinAsSpectator=true # Uncomment to only allow admins to rejoin as spectator
|
||||||
|
#arkflag_DisableDeathSpectator=true # Uncomment to disable players from becoming spectators when they die
|
||||||
|
|
||||||
|
# ARK server options - i.e. for -optname=val, use arkopt_optname=val
|
||||||
|
#arkopt_StructureDestructionTag=DestroySwampSnowStructures
|
||||||
|
|
||||||
|
|
||||||
@ -20,46 +20,99 @@ NAME="ShooterGameServer"
|
|||||||
LOGFILE="${logdir}/${NAME}.log"
|
LOGFILE="${logdir}/${NAME}.log"
|
||||||
DAEMON="/usr/bin/arkmanager"
|
DAEMON="/usr/bin/arkmanager"
|
||||||
|
|
||||||
|
SVCNAME="${0##*/}"
|
||||||
|
INSTANCE="${SVCNAME#*.}"
|
||||||
|
|
||||||
|
if [ "$INSTANCE" == "$SVCNAME" ]; then
|
||||||
|
INSTANCE="$2"
|
||||||
|
fi
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# If the daemon is not there, then exit.
|
# If the daemon is not there, then exit.
|
||||||
test -x $DAEMON || exit 5
|
test -x $DAEMON || exit 5
|
||||||
|
|
||||||
|
function start_instance(){
|
||||||
|
local INSTANCE="$1"
|
||||||
|
PID="$(<"/var/run/arkmanager.${INSTANCE}.pid")"
|
||||||
|
if [ -n "$PID" ] && kill -0 "$PID" >/dev/null 2>&1; then
|
||||||
|
if grep " ${PID} .* ${DAEMON}" <(ps -ef) >/dev/null 2>&1; then
|
||||||
|
echo "$NAME @${INSTANCE} is already running"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
log_daemon_msg "Starting" "$NAME @${INSTANCE}"
|
||||||
|
ulimit -n 100000
|
||||||
|
"${DAEMON}" run "@${INSTANCE}" &
|
||||||
|
PID="$!"
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
if kill -0 "$PID" >/dev/null 2>&1; then
|
||||||
|
echo "$PID" >"/var/run/arkmanager.${INSTANCE}.pid"
|
||||||
|
log_end_msg 0
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
log_end_msg 1
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function start_all_instances(){
|
||||||
|
local nosuccess=0
|
||||||
|
local anyfailure=0
|
||||||
|
for instance in $("${DAEMON}" list-instances --brief); do
|
||||||
|
if start_instance "$instance"; then
|
||||||
|
nosuccess=0
|
||||||
|
else
|
||||||
|
anyfailure=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return $nosuccess
|
||||||
|
}
|
||||||
|
|
||||||
|
function stop_instance(){
|
||||||
|
local INSTANCE="$1"
|
||||||
|
log_daemon_msg "Stopping $NAME @${INSTANCE}: "
|
||||||
|
"${DAEMON}" stop "@${INSTANCE}" &
|
||||||
|
rm -f "/var/run/arkmanager.${INSTANCE}.pid"
|
||||||
|
log_end_msg 0
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
start)
|
start)
|
||||||
log_daemon_msg "Starting" "$NAME"
|
if [ -n "$INSTANCE" ]; then
|
||||||
ulimit -n 100000
|
start_instance "$INSTANCE"
|
||||||
su -s /bin/sh -c "$DAEMON start --all" $steamcmd_user
|
exit $?
|
||||||
sleep 5
|
|
||||||
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
|
|
||||||
if [ -n "$PID" ]; then
|
|
||||||
echo "$PID" >/var/run/arkmanager.pid
|
|
||||||
log_end_msg 0
|
|
||||||
else
|
else
|
||||||
log_end_msg 1
|
if start_all_instances; then
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
stop)
|
stop)
|
||||||
log_daemon_msg "Stopping" "$NAME"
|
if [ -n "$INSTANCE" ]; then
|
||||||
su -s /bin/sh -c "$DAEMON stop --all" $steamcmd_user
|
stop_instance "$INSTANCE"
|
||||||
sleep 5
|
exit $?
|
||||||
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
|
|
||||||
if [ -n "$PID" ]; then
|
|
||||||
log_end_msg 1
|
|
||||||
else
|
else
|
||||||
rm /var/run/arkmanager.pid
|
for instance in $("${DAEMON}" list-instances --brief); do
|
||||||
log_end_msg 0
|
stop_instance "$instance"
|
||||||
|
done
|
||||||
|
exit $?
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
restart)
|
restart)
|
||||||
ulimit -n 100000
|
"$0" stop
|
||||||
su -s /bin/sh -c "$DAEMON restart --all" $steamcmd_user
|
"$0" start
|
||||||
;;
|
;;
|
||||||
|
|
||||||
status)
|
status)
|
||||||
su -s /bin/sh -c "$DAEMON status" $steamcmd_user
|
"$DAEMON" status "@${INSTANCE:-all}"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
|
|||||||
23
tools/migrate-config.sh
Executable file
23
tools/migrate-config.sh
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
configfile="$1"
|
||||||
|
newopts=( arkbackupdir arkautorestartfile install_bindir install_libexecdir install_datadir mod_appid )
|
||||||
|
newopt_steamcmd_appinfocache="${PREFIX}/Steam/appcache/appinfo.vdf"
|
||||||
|
newopt_arkbackupdir="${PREFIX}/ARK-Backups"
|
||||||
|
newopt_arkautorestartfile="ShooterGame/Saved/.autorestart"
|
||||||
|
newopt_install_bindir="${BINDIR}"
|
||||||
|
newopt_install_libexecdir="${LIBEXECDIR}"
|
||||||
|
newopt_install_datadir="${DATADIR}"
|
||||||
|
newopt_mod_appid=346110
|
||||||
|
|
||||||
|
if grep '^\(servermail\|arkstVersion\)=' "${configfile}" >/dev/null 2>&1; then
|
||||||
|
sed -i '/^\(servermail\|arkstVersion\)=/d' "${configfile}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for optname in "${newopts[@]}"; do
|
||||||
|
if ! grep "^${optname}=" "${configfile}" >/dev/null 2>&1; then
|
||||||
|
noptname="newopt_${optname}"
|
||||||
|
echo "${optname}='${!noptname}'" >>"${configfile}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
10
tools/migrate-main-instance.sh
Executable file
10
tools/migrate-main-instance.sh
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
configfile="$1"
|
||||||
|
instancefile="$2"
|
||||||
|
|
||||||
|
if grep "^arkserverroot=" <"$configfile" >/dev/null 2>&1 && [ ! -f "$instancefile" ]; then
|
||||||
|
sed -n '/^#*\(ark\(\|flag\|opt\)_[^=]*\|arkserverroot\|serverMap\(\|ModId\)\)=/p' <"$configfile" >"$instancefile"
|
||||||
|
sed -i '/^ark\(serverroot\|_\(RCONPort\|Port\|QueryPort\)\)=/d' "$configfile"
|
||||||
|
echo 'defaultinstance="main"' >>"$configfile"
|
||||||
|
fi
|
||||||
@ -13,27 +13,25 @@ depend(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
start(){
|
start(){
|
||||||
|
INSTANCE="${RC_SVCNAME#*.}"
|
||||||
ebegin "Starting ARK manager daemon"
|
ebegin "Starting ARK manager daemon"
|
||||||
ulimit -n 100000
|
ulimit -n 100000
|
||||||
su -s /bin/sh -c "$DAEMON start --all" $steamcmd_user
|
if [ "$INSTANCE" != "$RC_SVCNAME" ]; then
|
||||||
sleep 5
|
"$DAEMON" start "@${INSTANCE}"
|
||||||
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
|
|
||||||
if [ -n "$PID" ]; then
|
|
||||||
eend 0
|
|
||||||
else
|
else
|
||||||
eend 1
|
"$DAEMON" start "@all"
|
||||||
fi
|
fi
|
||||||
|
eend $?
|
||||||
}
|
}
|
||||||
|
|
||||||
stop(){
|
stop(){
|
||||||
|
INSTANCE="${RC_SVCNAME#*.}"
|
||||||
ebegin "Stopping ARK manager daemon"
|
ebegin "Stopping ARK manager daemon"
|
||||||
su -s /bin/sh -c "$DAEMON stop --all" $steamcmd_user
|
if [ "$INSTANCE" != "$RC_SVCNAME" ]; then
|
||||||
sleep 5
|
"$DAEMON" stop "@${INSTANCE}"
|
||||||
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
|
|
||||||
if [ -n "$PID" ]; then
|
|
||||||
eend 0
|
|
||||||
else
|
else
|
||||||
eend 1
|
"$DAEMON" stop "@all"
|
||||||
fi
|
fi
|
||||||
|
eend $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -34,54 +34,103 @@ GREEN="\\033[1;32m"
|
|||||||
RED="\\033[1;31m"
|
RED="\\033[1;31m"
|
||||||
NORMAL="\\033[0;39m"
|
NORMAL="\\033[0;39m"
|
||||||
|
|
||||||
|
SVCNAME="${0##*/}"
|
||||||
|
INSTANCE="${SVCNAME#*.}"
|
||||||
|
|
||||||
|
if [ "$INSTANCE" == "$SVCNAME" ]; then
|
||||||
|
INSTANCE="$2"
|
||||||
|
fi
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# If the daemon is not there, then exit.
|
# If the daemon is not there, then exit.
|
||||||
test -x $DAEMON || exit 5
|
test -x $DAEMON || exit 5
|
||||||
|
|
||||||
|
function start_instance(){
|
||||||
|
local INSTANCE="$1"
|
||||||
|
PID="$(<"/var/run/arkmanager.${INSTANCE}.pid")"
|
||||||
|
if [ -n "$PID" ] && kill -0 "$PID" >/dev/null 2>&1; then
|
||||||
|
if grep " ${PID} .* ${DAEMON}" <(ps -ef) >/dev/null 2>&1; then
|
||||||
|
echo "$NAME @${INSTANCE} is already running"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo -n "Starting $NAME @${INSTANCE}: "
|
||||||
|
ulimit -n 100000
|
||||||
|
"${DAEMON}" run "@${INSTANCE}" &
|
||||||
|
PID="$!"
|
||||||
|
|
||||||
|
sleep 5
|
||||||
|
if kill -0 "$PID" >/dev/null 2>&1; then
|
||||||
|
echo "$PID" >"/var/run/arkmanager.${INSTANCE}.pid"
|
||||||
|
touch "/var/lock/subsys/arkmanager.${INSTANCE}"
|
||||||
|
echo "[" "$GREEN" " OK " "$NORMAL" "]"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "[" "$RED" " FAILED " "$NORMAL" "]"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function start_all_instances(){
|
||||||
|
local nosuccess=0
|
||||||
|
local anyfailure=0
|
||||||
|
for instance in $("${DAEMON}" list-instances --brief); do
|
||||||
|
if start_instance "$instance"; then
|
||||||
|
nosuccess=0
|
||||||
|
else
|
||||||
|
anyfailure=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return $nosuccess
|
||||||
|
}
|
||||||
|
|
||||||
|
function stop_instance(){
|
||||||
|
local INSTANCE="$1"
|
||||||
|
echo -n "Stopping $NAME @${INSTANCE}: "
|
||||||
|
"${DAEMON}" stop "@${INSTANCE}" &
|
||||||
|
rm -f "/var/lock/subsys/arkmanager.${INSTANCE}"
|
||||||
|
rm -f "/var/run/arkmanager.${INSTANCE}.pid"
|
||||||
|
echo "[" "$GREEN" " OK " "$NORMAL" "]"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
start)
|
start)
|
||||||
echo -n "Starting $NAME: "
|
if [ -n "$INSTANCE" ]; then
|
||||||
ulimit -n 100000
|
start_instance "$INSTANCE"
|
||||||
su -s /bin/sh -c "$DAEMON start --all" $steamcmd_user > /dev/null
|
exit $?
|
||||||
sleep 5
|
|
||||||
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
|
|
||||||
if [ -n "$PID" ]; then
|
|
||||||
echo "${PID}" >/var/run/arkmanager.pid
|
|
||||||
touch /var/lock/subsys/arkmanager
|
|
||||||
echo "[" "$GREEN" " OK " "$NORMAL" "]"
|
|
||||||
exit 0
|
|
||||||
else
|
else
|
||||||
echo "[" "$RED" " FAILED " "$NORMAL" "]"
|
if start_all_instances; then
|
||||||
exit 1
|
touch /var/lock/subsys/arkmanager
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
stop)
|
stop)
|
||||||
echo -n "Stopping $NAME: "
|
if [ -n "$INSTANCE" ]; then
|
||||||
su -s /bin/sh -c "$DAEMON stop --all" $steamcmd_user > /dev/null
|
stop_instance "$INSTANCE"
|
||||||
sleep 5
|
exit $?
|
||||||
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
|
|
||||||
if [ -n "$PID" ]; then
|
|
||||||
echo "[" "$RED" " FAILED " "$NORMAL" "]"
|
|
||||||
exit 1
|
|
||||||
else
|
else
|
||||||
echo "[" "$GREEN" " OK " "$NORMAL" "]"
|
for instance in $("${DAEMON}" list-instances --brief); do
|
||||||
rm -f /var/lock/subsys/arkmanager
|
stop_instance "$instance"
|
||||||
rm -f /var/run/arkmanager.pid
|
done
|
||||||
exit 0
|
rm -f "/var/lock/subsys/arkmanager"
|
||||||
|
exit $?
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
restart)
|
restart)
|
||||||
echo -n "Restarting $NAME: "
|
"$0" stop
|
||||||
ulimit -n 100000
|
"$0" start
|
||||||
su -s /bin/sh -c "$DAEMON restart --all" $steamcmd_user > /dev/null
|
|
||||||
echo "OK"
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
status)
|
status)
|
||||||
su -s /bin/sh -c "$DAEMON status" $steamcmd_user
|
"$DAEMON" status "@${INSTANCE:-all}"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,14 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
for service in main $(grep -o '^configfile_[^=]*' /etc/arkmanager/arkmanager.cfg); do
|
DAEMON=/usr/bin/arkmanager
|
||||||
systemctl start arkmanager@${service#configfile_}
|
|
||||||
|
for service in $(${DAEMON} list-instances --brief); do
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
systemctl start arkmanager@${service}
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
systemctl stop arkmanager@${service}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
|
|||||||
@ -2,5 +2,6 @@
|
|||||||
Description=Daemon to start an ark server instance
|
Description=Daemon to start an ark server instance
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
User=steam
|
||||||
ExecStart=/usr/bin/arkmanager useconfig %i run
|
ExecStart=/usr/bin/arkmanager useconfig %i run
|
||||||
Type=simple
|
Type=simple
|
||||||
|
|||||||
@ -2,6 +2,8 @@ description "ARK Server Tools service"
|
|||||||
|
|
||||||
instance $service
|
instance $service
|
||||||
|
|
||||||
|
setuid steam
|
||||||
|
|
||||||
env DAEMON="/usr/bin/arkmanager"
|
env DAEMON="/usr/bin/arkmanager"
|
||||||
|
|
||||||
exec "$DAEMON" useconfig $service run
|
exec "$DAEMON" useconfig $service run
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
start on runlevel [345]
|
start on runlevel [345]
|
||||||
stop on runlevel [!345]
|
stop on runlevel [!345]
|
||||||
|
|
||||||
|
env DAEMON="/usr/bin/arkmanager"
|
||||||
|
|
||||||
script
|
script
|
||||||
for service in main $(grep -o '^configfile_[^=]*' /etc/arkmanager/arkmanager.cfg); do
|
for service in $(${DAEMON} list-instances --brief); do
|
||||||
start arkmanager-instance service=${service#configfile_}
|
start arkmanager-instance service=${service}
|
||||||
done
|
done
|
||||||
end script
|
end script
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user