Merge pull request #58 from FezVrasta/dev#1.1

Dev#1.1 shipped
This commit is contained in:
Fez Vrasta 2015-06-26 15:41:25 +02:00
commit 30d143119d
10 changed files with 540 additions and 127 deletions

11
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,11 @@
# Contribute to ARK Server Tools
This is an open source project, so feel free to fork it, improve it and send pull requests!
## Keep your fork updated
When you fork our repository and your version gets outdated, please, update it using `git pull --rebase`, in this way you will not create any additional useless commit.
## Got an idea?
If you have a nice idea you'd like to add to this project, please, first open a new issue describing your idea, so everybody can contribute to it and you'll be sure that nobody is working on the same thing.

View File

@ -9,14 +9,8 @@ https://developer.valvesoftware.com/wiki/SteamCMD#Linux
We assume you have created the `steam` user to store steamcmd and your ARK server.
## Requirements
Use this command to install soft requirement on your system
```
# Debian based/ Ubuntu
apt-get install screen
# RHEL / CentOS / Fedora
yum install screen
```
### Increase max open files
Edit /etc/sysctl.conf and set:
```
@ -34,21 +28,47 @@ session required pam_limits.so
After these edits, you'll need to restart your bash session or reconnect to your SSH shell to make the changes effective.
### Open firewall ports
```sh
iptables -I INPUT -p udp --dport 27016 -j ACCEPT
iptables -I INPUT -p tcp --dport 27016 -j ACCEPT
iptables -I INPUT -p udp --dport 7778 -j ACCEPT
iptables -I INPUT -p tcp --dport 7778 -j ACCEPT
```
NB: Change the ports according to the ones set in your `arkmanager.cfg` file.
## Install ARK Server Tools
To install ARK Server Tools run this command:
```sh
curl -s https://raw.githubusercontent.com/FezVrasta/ark-server-tools/master/netinstall.sh | sudo bash -s steam
curl -s http://git.io/vtf5N | sudo bash -s steam
```
NB: You may want to change the `bash -s` parameter to fit your steam user if different from `steam`.
This will copy the `arkmanager` and the `arkdaemon` to the proper directories and will create an empty log directory in `/var/log` for ARK Server Tools.
This will copy the `arkmanager` script and its daemon to the proper directories and will create an empty log directory in `/var/log` for ARK Server Tools.
## Configure ARK Server
## Configuration
All the needed variables are stored in the /etc/arkmanager/arkmanager.cfg configuration file change them following the comments.
Stored in `/etc/arkmanager/arkmanager.cfg` you can find the variables needed to start the server, like the port numbers, the system environment variables and so on.
Also, in this file, you can specify any parameter you want to add to the startup command of ARK server.
These parameters must be prefixed by the `ark_` string, some example could be:
```sh
ark_SessionName="My ARK server"
ark_MaxPlayers=50
ark_ServerPVE=False
ark_DifficultyOffset=1
```
Your session name may contain special characters (eg. `!![EU]!! Aw&some ARK`) which could break the startup command.
In this case you may want to comment out the `ark_SessionName` variable and define it inside your **GameUserSettings.ini** file.
You can override or add variables for a specific system user creating a file called `.arkmanager.cfg` in the home directory of the system user.
## Install ARK Server
@ -59,6 +79,8 @@ arkmanager install
```
## Commands
To get a complete list of the script commands you can run `arkmanager --help` or `arkmanager -h`.
#### arkmanager install
installs arkmanager to the directory specified in `.arkmanager.cfg`
@ -72,7 +94,10 @@ stops ARK server
restarts ARK server
#### arkmanager update
manually updates ARK server
manually updates ARK server if a new version is available
#### arkmanager forceupdate
Apply update without check the current version
#### arkmanager status
Get the status of the server. Show if the process is running, if the server is up and the current version number
@ -80,13 +105,6 @@ Get the status of the server. Show if the process is running, if the server is u
#### arkmanager checkupdate
Check if a new version of the server is available but not apply it
#### arkmanager broadcast [message]
broadcast a message to ARK server chat
```sh
arkmanager broadcast "your message here"
```
## Credits
Original author of arkmanager: LeXaT

View File

@ -3,7 +3,8 @@
# ARK: survival evolved manager
#
# Original author: LeXaT
# Maintainer: FezVrasta, Sispheor
# Maintainer: FezVrasta
# Contributors: Sispheor, Atriusftw, klightspeed, lexat, puseidr
# Check the user is not currently running this script as root
if [ "$(id -u)" == "0" ]; then
@ -16,7 +17,13 @@ fi
#---------------------
# Global variables
source /etc/arkmanager/arkmanager.cfg
if [ -f "/etc/arkmanager/arkmanager.cfg" ]; then
source /etc/arkmanager/arkmanager.cfg
fi
if [ -f "${HOME}/.arkmanager.cfg" ]; then
source "${HOME}/.arkmanager.cfg"
fi
# Local variables
info=""
@ -28,27 +35,31 @@ GREEN="\\033[1;32m"
RED="\\033[1;31m"
NORMAL="\\033[0;39m"
arkmanagerLog="arkmanager.log" # here are logged the actions performed by arkmanager
arkserverLog="arkserver.log" # here is logged the output of ShooterGameServer
#---------------------
# functions
#---------------------
function testfunction(){
if [ -z $servermail ]; then
echo "mail ok"
fi
}
#
# Check if a new version is available but not apply it
#
function checkForUpdate(){
tput sc
echo "Querying Steam database for latest version..."
if isUpdateNeeded; then
echo "Current version:" $instver
echo "Available version:" $bnumber
echo "Your server needs to be restarted in order to receive the latest update."
echo "Run \"arkmanager update\" to do so"
tput rc; tput ed;
echo -e "Current version:" "$RED" $instver "$NORMAL"
echo -e "Available version:" "$GREEN" $bnumber "$NORMAL"
echo -e "Your server needs to be restarted in order to receive the latest update."
echo -e "Run \"arkmanager update\" to do so"
else
echo "No update available"
tput rc; tput ed;
echo -e "Current version:" "$GREEN" $instver "$NORMAL"
echo -e "Available version:" "$GREEN" $bnumber "$NORMAL"
echo "Your server is up to date!"
fi
}
@ -56,7 +67,7 @@ function checkForUpdate(){
# Set the new current version in a file
#
function setCurrentVersion(){
cd $arkserverroot
cd "$arkserverroot"
echo $bnumber > arkversion
}
@ -75,22 +86,51 @@ function isUpdateNeeded(){
}
#
# Parse an ACF structure
# $1 is the desired path
# $2 is the desired property
# $3 is the current path
#
function parseSteamACF(){
local sname
while read name val; do
name="${name#\"}"
name="${name%\"}"
val="${val#\"}"
val="${val%\"}"
if [ "$name" = "}" ]; then
break
elif [ "$name" == "{" ]; then
parseSteamACF "$1" "$2" "${3}.${sname}"
else
if [ "$3" == "$1" -a "$name" == "$2" ]; then
echo "$val"
break
fi
sname="${name}"
fi
done
}
#
# Return the current version number
#
function getCurrentVersion(){
cd $arkserverroot
touch arkversion # If the file doesn't exist
instver=`cat "arkversion"`
if [ -f "${arkserverroot}/steamapps/appmanifest_${appid}.acf" ]; then
instver=`while read name val; do if [ "${name}" == "{" ]; then parseSteamACF "" "buildid"; break; fi; done <"${arkserverroot}/steamapps/appmanifest_${appid}.acf"`
else
instver=""
fi
return $instver
}
#
# Get the current available server version on steamdb
#
function getAvailableVersion(){
bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_print "$appid" +quit | grep -EA 5 "^\s+\"public\"$" | grep -E "^\s+\"buildid\"\s+" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -f3 | sed 's/^ //' | cut -c9-14`
rm -f "$steamcmd_appinfocache"
bnumber=`$steamcmdroot/$steamcmdexec +login anonymous +app_info_update 1 +app_info_print "$appid" +quit | while read name val; do if [ "${name}" == "{" ]; then parseSteamAppVer; break; fi; done`
return $bnumber
}
@ -106,15 +146,21 @@ function isTheServerRunning(){
#
# Check if the server is up and visible in steam server list
# If the server is listenning on his port return 0, else return 1
#
#
function isTheServerUp(){
lsof -i |grep $arkserverport > /dev/null
lsof -i :"$ark_Port" > /dev/null
result=$?
return $result
# In this case, the result is:
# 1 if the command fail. The port is not listenning
# 0 if the command succeed. The port is listenning
if [ $result -eq 0 ];then
return 1
else
return 0
fi
}
#
# start function
#
@ -122,11 +168,35 @@ doStart() {
if isTheServerRunning; then
echo "The server is already running"
else
arkserveropts="TheIsland?SessionName=$sessioname?QueryPort=$arkqueryport?ServerPassword=$arkserverpass?ServerAdminPassword=$arkserverapass?listen"
thejob="$arkserverroot/$arkserverexec $arkserveropts"
screen -dmS "$servicename" $thejob
echo "$timestamp: start" >> "$logdir/arkserver.log"
tail -n 1 "$logdir/arkserver.log"
tput sc
echo "The server is starting..."
arkserveropts=$serverMap
# bring in ark_... options
for varname in "${!ark_@}"; do
name="${varname#ark_}"
val="${!varname}"
# Port is actually one higher than specified
# i.e. specifying port 7777 will have the server
# use port 7778
if [ "$name" == "Port" ]; then
(( val = val - 1 ))
fi
if [ -n "$val" ]; then
arkserveropts="${arkserveropts}?${name}=${val}"
fi
done
arkserveropts="${arkserveropts}?listen"
# run the server in background
echo "$timestamp: start" >> "$logdir/$arkserverLog"
nohup "$arkserverroot/$arkserverexec" "$arkserveropts" </dev/null >"$logdir/$arkserverLog" 2>&1 & # output of this command is logged
echo "$timestamp: start" >> "$logdir/$arkmanagerLog"
tput rc; tput ed;
echo "The server is now up"
fi
}
@ -135,11 +205,15 @@ doStart() {
#
doStop() {
if isTheServerRunning; then
tput sc
echo "Stopping server..."
screen -X -S "$servicename" -X stuff "^C"
sleep 10
echo "$timestamp: stop" >> "$logdir/arkserver.log"
tail -n 1 "$logdir/arkserver.log"
# kill the server with the PID
PID=`ps -ef | grep "$arkserverroot/$arkserverexec" | grep -v grep | awk '{print $2}'`
kill -9 $PID
tput rc; tput ed;
echo "The server has been stopped"
echo "$timestamp: stop" >> "$logdir/$arkmanagerLog"
else
echo "The server is already stopped"
fi
@ -149,10 +223,9 @@ doStop() {
# install of ARK server
#
doInstall() {
if [ ! -d "$arkserverroot" ]; then
mkdir $arkserverroot
fi
cd $steamcmdroot
mkdir -p "$arkserverroot"
cd "$steamcmdroot"
# install the server
./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid validate +quit
# the current version should be the last version. We set our version
@ -164,46 +237,34 @@ doInstall() {
# Stop the server, update it and then start it back.
#
doUpdate() {
cd $arkserverroot
cd "$arkserverroot"
if isUpdateNeeded; then
# check if the server was alive before the update so we can launch it back after the update
serverWasAlive=0
if isTheServerRunning ;then
serverWasAlive=1
fi
doStop
cd $steamcmdroot
./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid +quit
cd $logdir
echo "$bnumber" > "$arkserverroot/arkversion"
cd $steamcmdroot
echo "$timestamp: update to $bnumber complete" >> "$logdir/update.log"
tail -n 1 "$logdir/arkserver.log"
# we restart the server only if it was started before the update
if [ $serverWasAlive -eq 1 ]; then
doStart
fi
# send mail to admin
#if [ -z $servermail ]; then
# mail -a $logdir/update.log -s "Update-Log" $servermail < /dev/null
#fi
forceUpdate
else
echo "No update available"
echo "$timestamp: No update needed." >> "$logdir/update.log"
tail -n 1 "$logdir/update.log"
echo "Your server is already up to date! The most recent version is ${bnumber}."
echo "$timestamp: No update needed." >> "$logdir/update.log"
fi;
}
#
# Broadcast message to server
#
doInfo() {
if [ ! -z $1 ]; then
info=$1
fi
screen -S "$servicename" -p 0 -X stuff "broadcast $info $(printf \\r)"
forceUpdate(){
# check if the server was alive before the update so we can launch it back after the update
serverWasAlive=0
if isTheServerRunning ;then
serverWasAlive=1
fi
doStop
cd "$steamcmdroot"
./$steamcmdexec +login anonymous +force_install_dir "$arkserverroot" +app_update $appid +quit
# the current version should be the last version. We set our version
getAvailableVersion
setCurrentVersion
echo "$timestamp: update to $instver complete" >> "$logdir/update.log"
# we restart the server only if it was started before the update
if [ $serverWasAlive -eq 1 ]; then
doStart
fi
}
#
@ -211,19 +272,18 @@ doInfo() {
#
printStatus(){
if isTheServerRunning ;then
echo -e "$NORMAL" "Server running:" "$GREEN" "Yes"
echo -e "$NORMAL" "Server running: " "$GREEN" "Yes" "$NORMAL"
else
echo -e "$NORMAL" "Server running:" "$RED" "No"
echo -e "$NORMAL" "Server running: " "$RED" "No" "$NORMAL"
fi
if isTheServerUp ;then
echo -e "$NORMAL" "Server online:" "$GREEN" " Yes"
echo -e "$NORMAL" "Server online: " "$RED" "No" "$NORMAL"
else
echo -e "$NORMAL" "Server online:" "$RED" " No"
echo -e "$NORMAL" "Server online: " "$GREEN" "Yes" "$NORMAL"
fi
getCurrentVersion
echo -e "$NORMAL" "Server version:" "$GREEN" $instver
echo -e "$NORMAL"
echo -e "$NORMAL" "Server version: " "$GREEN" $instver "$NORMAL"
}
@ -239,14 +299,11 @@ case "$1" in
;;
restart)
doStop
echo "$timestamp: stop" >> "$logdir/arkserver.log"
tail -n 1 "$logdir/arkserver.log"
echo "$timestamp: stop" >> "$logdir/$arkmanagerLog"
sleep 10
doStart
echo "$timestamp: start" >> "$logdir/arkserver.log"
tail -n 1 "$logdir/arkserver.log"
echo "$timestamp: restart" >> "$logdir/arkserver.log"
tail -n 1 "$logdir/arkserver.log"
echo "$timestamp: start" >> "$logdir/$arkmanagerLog"
echo "$timestamp: restart" >> "$logdir/$arkmanagerLog"
;;
install)
doInstall
@ -255,6 +312,9 @@ case "$1" in
doUpdate
#testfunction
;;
forceupdate)
forceUpdate
;;
checkupdate)
checkForUpdate
;;
@ -264,7 +324,21 @@ case "$1" in
status)
printStatus
;;
-h|--help)
echo -e "Usage: arkmanager [OPTION]\n"
echo "Option Description"
echo "start Starts the server"
echo "stop Stops the server"
echo "restart Stops the server and then starts it"
echo "install Install the ARK server files from steamcmd"
echo "update Check for a new ARK server version, if needed, stops the server, updates it, and starts it again"
echo "forceupdate Apply update without check the current version"
echo "checkupdate Check for a new ARK server version"
echo "boradcast PLACEHOLDER, not supported yet"
echo "status Returns the status of the current ARK server instance"
;;
*)
echo "use arkmanager <start|stop|restart|install|update|broadcast|status>"
echo "arkmanager: no command specified"
echo "Try 'arkmanager -h' or 'arkmanager --help' for more information."
;;
esac

View File

@ -2,15 +2,22 @@
steamcmdroot="/home/steam/steamcmd" # path of your steamcmd instance
steamcmdexec="steamcmd.sh" # name of steamcmd executable
steamcmd_user="steam" # name of the system user who own steamcmd folder
steamcmd_appinfocache="/home/steam/Steam/appinfo.vdf" # cache of the appinfo command
# config Server
sessioname=YourLinuxSessionName
# config environment
arkserverroot="/home/steam/ARK" # path of your ARK server files (default ~/ARK)
arkserverexec="ShooterGame/Binaries/Linux/ShooterGameServer" # name of ARK server executable
arkqueryport="27016" # ARK query port (default 27016)
arkserverport="7778" # ARK server port (default 7778)
arkserverpass="SERVERPASSWORD" # ARK server password, empty: no password required to login
arkserverapass="ADMINPASSWORD" # ARK server admin password, KEEP IT SAFE!
# 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)
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="27016" # ARK query port (default 27016)
ark_ServerPassword="" # ARK server password, empty: no password required to login
ark_ServerAdminPassword="keyboardcat" # ARK server admin password, KEEP IT SAFE!
ark_MaxPlayers="70"
# config Service
servicename="arkserv" # Name of the service (don't change if you don't know what are you doing)

101
tools/install.sh Normal file → Executable file
View File

@ -1,26 +1,97 @@
#!/bin/bash
if [ ! -z $1 ]; then
# Copy arkmanager to /usr/bin and set permissions
cp arkmanager /usr/bin/arkmanager
chmod +x /usr/bin/arkmanager
EXECPREFIX="${EXECPREFIX:-/usr/local}"
# Copy arkdaemon to /etc/init.d and set permissions
cp arkdaemon /etc/init.d/arkdaemon
chmod +x /etc/init.d/arkdaemon
if [ ! -z "$1" ]; then
# Copy arkmanager to /usr/bin and set permissions
cp arkmanager "${INSTALL_ROOT}${EXECPREFIX}/bin/arkmanager"
chmod +x "${INSTALL_ROOT}${EXECPREFIX}/bin/arkmanager"
# Copy arkdaemon to /etc/init.d ,set permissions and add it to boot
if [ -f /lib/lsb/init-functions ]; then
# on debian 8, sysvinit and systemd are present. If systemd is available we use it instead of sysvinit
if [ -f /etc/systemd/system.conf ]; then # used by systemd
mkdir -p "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager"
cp lsb/arkdaemon "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init"
chmod +x "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init"
cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
sed -i "s|=/usr/|=${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
if [ -z "${INSTALL_ROOT}" ]; then
systemctl daemon-reload
systemctl enable arkmanager.service
echo "Ark server will now start on boot, if you want to remove this feature run the following line"
echo "systemctl disable arkmanager.service"
fi
else # systemd not present, so use sysvinit
cp lsb/arkdaemon "${INSTALL_ROOT}/etc/init.d/arkmanager"
chmod +x "${INSTALL_ROOT}/etc/init.d/arkmanager"
sed -i "s|^DAEMON=\"/usr|DAEMON=\"${EXECPREFIX}|" "${INSTALL_ROOT}/etc/init.d/arkmanager"
# add to startup if the system use sysinit
if [ -x /usr/sbin/update-rc.d -a -z "${INSTALL_ROOT}" ]; then
update-rc.d arkmanager defaults
echo "Ark server will now start on boot, if you want to remove this feature run the following line"
echo "update-rc.d -f arkmanager remove"
fi
fi
elif [ -f /etc/rc.d/init.d/functions ]; then
# on RHEL 7, sysvinit and systemd are present. If systemd is available we use it instead of sysvinit
if [ -f /etc/systemd/system.conf ]; then # used by systemd
mkdir -p "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager"
cp redhat/arkdaemon "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init"
chmod +x "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init"
cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
sed -i "s|=/usr/|=${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
if [ -z "${INSTALL_ROOT}" ]; then
systemctl daemon-reload
systemctl enable arkmanager.service
echo "Ark server will now start on boot, if you want to remove this feature run the following line"
echo "systemctl disable arkmanager.service"
fi
else # systemd not preset, so use sysvinit
cp redhat/arkdaemon "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager"
chmod +x "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager"
sed -i "s@^DAEMON=\"/usr@DAEMON=\"${EXECPREFIX}@" "${INSTALL_ROOT}/etc/rc.d/init.d/arkmanager"
if [ -x /sbin/chkconfig -a -z "${INSTALL_ROOT}" ]; then
chkconfig --add arkmanager
echo "Ark server will now start on boot, if you want to remove this feature run the following line"
echo "chkconfig arkmanager off"
fi
fi
elif [ -f /sbin/runscript ]; then
cp openrc/arkdaemon "${INSTALL_ROOT}/etc/init.d/arkmanager"
chmod +x "${INSTALL_ROOT}/etc/init.d/arkmanager"
sed -i "s@^DAEMON=\"/usr@DAEMON=\"${EXECPREFIX}@" "${INSTALL_ROOT}/etc/init.d/arkmanager"
if [ -x /sbin/rc-update -a -z "${INSTALL_ROOT}" ]; then
rc-update add arkmanager default
echo "Ark server will now start on boot, if you want to remove this feature run the following line"
echo "rc-update del arkmanager default"
fi
elif [ -f /etc/systemd/system.conf ]; then # used by systemd
mkdir -p "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager"
cp systemd/arkdaemon.init "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init"
chmod +x "${INSTALL_ROOT}${EXECPREFIX}/libexec/arkmanager/arkmanager.init"
cp systemd/arkdeamon.service "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
sed -i "s|=/usr/|=${EXECPREFIX}/|" "${INSTALL_ROOT}/etc/systemd/system/arkmanager.service"
if [ -z "${INSTALL_ROOT}" ]; then
systemctl enable arkmanager.service
echo "Ark server will now start on boot, if you want to remove this feature run the following line"
echo "systemctl disable arkmanager.service"
fi
fi
# Create a folder in /var/log to let Ark tools write its own log files
mkdir -p /var/log/arktools
chown $1 /var/log/arktools
mkdir -p "${INSTALL_ROOT}/var/log/arktools"
chown "$1" "${INSTALL_ROOT}/var/log/arktools"
# Copy arkmanager.cfg inside linux configuation folder if it doesn't already exists
if [ ! -f /etc/arkmanager/arkmanager.cfg ]; then
mkdir -p /etc/arkmanager
cp -n arkmanager.cfg /etc/arkmanager/arkmanager.cfg
chown $1 /etc/arkmanager/arkmanager.cfg
mkdir -p "${INSTALL_ROOT}/etc/arkmanager"
if [ -f "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" ]; then
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."
exit 2
else
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.";
exit 2
cp -n arkmanager.cfg "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg"
chown "$1" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg"
sed -i "s|^steamcmd_user=\"steam\"|steamcmd_user=\"$1\"|;s|\"/home/steam|\"/home/$1|" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg"
fi
else

View File

@ -1,3 +1,4 @@
#!/bin/bash
### BEGIN INIT INFO
# Provides: ARK manager deamon
# Required-Start: networking
@ -27,9 +28,11 @@ test -x $DAEMON || exit 5
case "$1" in
start)
log_daemon_msg "Starting" "$NAME"
sudo -u $steamcmd_user $DAEMON start
su -s /bin/sh -c "$DAEMON start" $steamcmd_user
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
log_end_msg 1
@ -38,21 +41,23 @@ case "$1" in
stop)
log_daemon_msg "Stopping" "$NAME"
sudo -u $steamcmd_user $DAEMON stop
su -s /bin/sh -c "$DAEMON stop" $steamcmd_user
sleep 5
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
if [ -n "$PID" ]; then
log_end_msg 1
else
rm /var/run/arkmanager.pid
log_end_msg 0
fi
;;
restart)
sudo -u $steamcmd_user $DAEMON restart
su -s /bin/sh -c "$DAEMON restart" $steamcmd_user
;;
status)
sudo -u $steamcmd_user $DAEMON status
su -s /bin/sh -c "$DAEMON status" $steamcmd_user
;;
*)

38
tools/openrc/arkdaemon Normal file
View File

@ -0,0 +1,38 @@
#!/sbin/runscript
# Short-Description: ARK manager deamon
# Description: ARK manager daemon used to start the server and keep it updated
source /etc/arkmanager/arkmanager.cfg
NAME="ShooterGameServer"
LOGFILE="${logdir}/${NAME}.log"
DAEMON="/usr/bin/arkmanager"
depend(){
require net
}
start(){
ebegin "Starting ARK manager daemon"
su -s /bin/sh -c "$DAEMON start" $steamcmd_user
sleep 5
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
if [ -n "$PID" ]; then
eend 0
else
eend 1
fi
}
stop(){
ebegin "Stopping ARK manager daemon"
su -s /bin/sh -c "$DAEMON start" $steamcmd_user
sleep 5
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
if [ -n "$PID" ]; then
eend 0
else
eend 1
fi
}

91
tools/redhat/arkdaemon Executable file
View File

@ -0,0 +1,91 @@
#!/bin/bash
#
# /etc/rc.d/init.d/arkmanager
#
# ARK manager daemon
#
# chkconfig: 2345 80 20
# description: ARK manager daemon used to start the server and keep it updated
# processname: ShooterGameServer
# config: /etc/arkmanager/arkmanager.cfg
### BEGIN INIT INFO
# Provides: ARK manager deamon
# Required-Start: networking
# Required-Stop: networking
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: ARK manager deamon
# Description: ARK manager daemon used to start the server and keep it updated
#
### END INIT INFO
# Using the lsb functions to perform the operations.
. /etc/rc.d/init.d/functions
# Global variables
source /etc/arkmanager/arkmanager.cfg
NAME="ShooterGameServer"
LOGFILE="${logdir}/${NAME}.log"
DAEMON="/usr/bin/arkmanager"
GREEN="\\033[1;32m"
RED="\\033[1;31m"
NORMAL="\\033[0;39m"
set -e
# If the daemon is not there, then exit.
test -x $DAEMON || exit 5
case "$1" in
start)
echo -n "Starting $NAME: "
su -s /bin/sh -c "$DAEMON start" $steamcmd_user > /dev/null
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
echo "[" "$RED" " FAILED " "$NORMAL" "]"
exit 1
fi
;;
stop)
echo -n "Stopping $NAME: "
su -s /bin/sh -c "$DAEMON stop" $steamcmd_user > /dev/null
sleep 5
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
if [ -n "$PID" ]; then
echo "[" "$RED" " FAILED " "$NORMAL" "]"
exit 1
else
echo "[" "$GREEN" " OK " "$NORMAL" "]"
rm -f /var/lock/subsys/arkmanager
rm -f /var/run/arkmanager.pid
exit 0
fi
;;
restart)
echo -n "Restarting $NAME: "
su -s /bin/sh -c "$DAEMON restart" $steamcmd_user > /dev/null
echo "OK"
;;
status)
su -s /bin/sh -c "$DAEMON status" $steamcmd_user
exit 0
;;
*)
# For invalid arguments, print the usage message.
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac

86
tools/systemd/arkdaemon.init Executable file
View File

@ -0,0 +1,86 @@
#!/bin/bash
#
# /usr/libexec/arkmanager/arkmanager.init
#
# ARK manager daemon
#
# chkconfig: 2345 80 20
# description: ARK manager daemon used to start the server and keep it updated
# processname: ShooterGameServer
# config: /etc/arkmanager/arkmanager.cfg
### BEGIN INIT INFO
# Provides: ARK manager deamon
# Required-Start: networking
# Required-Stop: networking
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: ARK manager deamon
# Description: ARK manager daemon used to start the server and keep it updated
#
### END INIT INFO
# Global variables
source /etc/arkmanager/arkmanager.cfg
NAME="ShooterGameServer"
LOGFILE="${logdir}/${NAME}.log"
DAEMON="/usr/bin/arkmanager"
GREEN="\\033[1;32m"
RED="\\033[1;31m"
NORMAL="\\033[0;39m"
set -e
# If the daemon is not there, then exit.
test -x $DAEMON || exit 5
case "$1" in
start)
echo -n "Starting $NAME: "
su -s /bin/sh -c "$DAEMON start" $steamcmd_user > /dev/null
sleep 5
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
if [ -n "$PID" ]; then
echo "$PID" >/var/run/arkmanager.pid
echo "[" "$GREEN" " OK " "$NORMAL" "]"
exit 0
else
echo "[" "$RED" " FAILED " "$NORMAL" "]"
exit 1
fi
;;
stop)
echo -n "Stopping $NAME: "
su -s /bin/sh -c "$DAEMON stop" $steamcmd_user > /dev/null
sleep 5
PID=`ps -ef | grep $NAME | grep -v grep | awk '{print $2}'`
if [ -n "$PID" ]; then
echo "[" "$RED" " FAILED " "$NORMAL" "]"
exit 1
else
echo "[" "$GREEN" " OK " "$NORMAL" "]"
rm /var/run/arkmanager.pid
exit 0
fi
;;
restart)
echo -n "Restarting $NAME: "
su -s /bin/sh -c "$DAEMON restart" $steamcmd_user > /dev/null
echo "OK"
;;
status)
su -s /bin/sh -c "$DAEMON status" $steamcmd_user
exit 0
;;
*)
# For invalid arguments, print the usage message.
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac

View File

@ -0,0 +1,12 @@
[Unit]
Description=Daemon to start ark server
After=network.target
[Service]
ExecStart=/usr/libexec/arkmanager/arkmanager.init start
ExecStop=/usr/libexec/arkmanager/arkmanager.init stop
Type=forking
PIDFile=/var/run/arkmanager.pid
[Install]
WantedBy=multi-user.target