diff --git a/tools/arkmanager b/tools/arkmanager index 4967dec..169dd54 100755 --- a/tools/arkmanager +++ b/tools/arkmanager @@ -16,7 +16,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="" @@ -122,10 +128,33 @@ 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" + ark_SessionName="${ark_SessionName:-${sessionname}}" + ark_Port="${ark_Port:-${arkserverport}}" + ark_QueryPort="${ark_QueryPort:-${arkqueryport}}" + ark_ServerPassword="${ark_ServerPassword:-${arkserverpass}}" + ark_ServerAdminPassword="${ark_ServerAdminPassword:-${arkserverapass}}" + arkserveropts="TheIsland" + + # 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 - $thejob >/dev/null 2>&1 & + nohup "$arkserverroot/$arkserverexec" "$arkserveropts" /dev/null 2>&1 & echo "$timestamp: start" >> "$logdir/arkserver.log" fi } @@ -149,7 +178,7 @@ doStop() { # install of ARK server # doInstall() { - mkdir -p $arkserverroot + mkdir -p "$arkserverroot" cd "$steamcmdroot" # install the server @@ -174,9 +203,7 @@ doUpdate() { 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" # we restart the server only if it was started before the update diff --git a/tools/arkmanager.cfg b/tools/arkmanager.cfg index e807853..b3af50c 100644 --- a/tools/arkmanager.cfg +++ b/tools/arkmanager.cfg @@ -12,6 +12,9 @@ arkserverport="7778" # ARK server arkserverpass="SERVERPASSWORD" # ARK server password, empty: no password required to login arkserverapass="ADMINPASSWORD" # ARK server admin password, KEEP IT SAFE! +# other options - use ark_= +ark_MaxPlayers="70" + # 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) diff --git a/tools/install.sh b/tools/install.sh index 24a34e7..47c1c73 100644 --- a/tools/install.sh +++ b/tools/install.sh @@ -1,31 +1,34 @@ #!/bin/bash -if [ ! -z $1 ]; then +EXECPREFIX="${EXECPREFIX:-/usr/local}" + +if [ ! -z "$1" ]; then # Copy arkmanager to /usr/bin and set permissions - cp arkmanager /usr/bin/arkmanager - chmod +x /usr/bin/arkmanager + 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 - cp arkdaemon /etc/init.d/arkdaemon - chmod +x /etc/init.d/arkdaemon + cp arkdaemon "${INSTALL_ROOT}/etc/init.d/arkdaemon" + chmod +x "${INSTALL_ROOT}/etc/init.d/arkdaemon" # add to startup if the system use sysinit - if [ -x /usr/sbin/update-rc.d ]; then + if [ -x /usr/sbin/update-rc.d -a -z "${INSTALL_ROOT}" ]; then update-rc.d arkdaemon 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 arkdaemon remove" 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 "${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 - cp -n arkmanager.cfg /etc/arkmanager/arkmanager.cfg - chown $1 /etc/arkmanager/arkmanager.cfg + cp -n arkmanager.cfg "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" + chown "$1" "${INSTALL_ROOT}/etc/arkmanager/arkmanager.cfg" fi else