diff --git a/_MasterScript b/_MasterScript new file mode 120000 index 000000000..945c9b46d --- /dev/null +++ b/_MasterScript @@ -0,0 +1 @@ +. \ No newline at end of file diff --git a/functions/game_settings.sh b/functions/game_settings.sh index f75276e1f..db0db03a6 100644 --- a/functions/game_settings.sh +++ b/functions/game_settings.sh @@ -76,7 +76,7 @@ fn_create_config(){ cfg_force=$2 cfg_file="cfg_file_${cfg_type}" cfg_header="cfg_header_${cfg_type}" - + cfg_dir=$(dirname ${!cfg_file}) #If config directory does not exist, create it if [ ! -e $cfg_dir ]; then mkdir -p $cfg_dir; fi diff --git a/gamedata/__game_list b/gamedata/__game_list index 0d2766532..8ab87ec1d 100644 --- a/gamedata/__game_list +++ b/gamedata/__game_list @@ -24,6 +24,7 @@ jc2server "Just Cause 2" kfserver "Killing Floor" l4d2server "Left 4 Dead 2" l4dserver "Left 4 Dead" +mumbleserver "Mumble" nmrihserver "No More Room In Hell" ns2cserver "NS2: Combat" ns2server "Natural Selection 2" @@ -38,6 +39,7 @@ ss3sserver "Serious Sam 3: BFE" terrariaserver "Terraria" tf2server "Team Fortress 2" tfcserver "Team Fortress Classic" +ts3server "TeamSpeak 3" twserver "Teeworlds" ut2k4server "Unreal Tournament 2004" ut99server "Unreal Tournament 99" diff --git a/gamedata/_avalanche b/gamedata/_avalanche index 7fea812a4..a47e5ebd7 100644 --- a/gamedata/_avalanche +++ b/gamedata/_avalanche @@ -2,7 +2,7 @@ # _avalanche # Avalanche Engine -fn_import_game_settings _default +fn_import_game_settings _steam # Dependencies fn_set_game_params dependencies "libstdc++.so.6" "4f9c911de2276f988afaf47659a8367f" diff --git a/gamedata/_default b/gamedata/_default index 9f28f8dd2..d0054b5b9 100644 --- a/gamedata/_default +++ b/gamedata/_default @@ -6,7 +6,6 @@ fn_set_game_params settings "dependency_path" "${filesdir}" # Default settings. This group includes a lot of blanks just so that the comments are set (and the engine/game files will show blank values to remind people to set them). -fn_set_game_params settings "appid" "--EMPTY--" "Steam App ID" fn_set_game_params settings "backupdir" "\${lgsmdir}/backups" "Backup Directory" fn_set_game_params settings "defaultmap" "--EMPTY--" "Default map to load" fn_set_game_params settings "email" "email@example.com" "Email address for notification" @@ -22,9 +21,6 @@ fn_set_game_params settings "lockselfname" ".\${servicename}.lock" "LGSM Lock Fi fn_set_game_params settings "logdays" "7" "Number of days to retain logs" fn_set_game_params settings "maxplayers" "--EMPTY--" "Maximum player count" fn_set_game_params settings "port" "--EMPTY--" "Port to bind for server" -fn_set_game_params settings "steampass" "--EMPTY--" "Steam Password" -fn_set_game_params settings "steamuser" "anonymous" "Steam Username" -fn_set_game_params settings "updateonstart" "off" "Update game on start" # These settings are in a second group, since they reference the first group. fn_set_game_params settings "consolelogdir" "\${lgsmdir}/log/console" "Console Log Dir" @@ -47,6 +43,22 @@ fn_set_game_params settings "servercfg" "\${servicename}\${servercfg_suffix}" "S fn_set_game_params settings "servercfgdefault" "\${servercfgdir}/lgsm-default\${servercfg_suffix}" "Default server configuration file" fn_set_game_params settings "servercfgfullpath" "\${servercfgdir}/\${servercfg}" "Full path to server config" +# Script actions +fn_set_game_params scriptactions "st|start" "command_start.sh" "Start the server." +fn_set_game_params scriptactions "sp|stop" "command_stop.sh" "Stop the server." +fn_set_game_params scriptactions "r|restart" "fn_restart" "Restart the server." +fn_set_game_params scriptactions "dd|depsdetect" "command_dev_detect_deps.sh" "Detect Dependencies" +fn_set_game_params scriptactions "u|update" "update_check.sh" "Checks and applies updates from SteamCMD." +fn_set_game_params scriptactions "uf|update-functions" "update_functions.sh" "Removes all functions so latest can be downloaded." +fn_set_game_params scriptactions "m|monitor" "command_monitor.sh" "Checks that the server is running." +fn_set_game_params scriptactions "et|email-test" "command_email_test.sh" "Sends test monitor email." +fn_set_game_params scriptactions "d|details" "command_details.sh" "Displays useful infomation about the server." +fn_set_game_params scriptactions "d|debug" "command_debug.sh" "See the output of the server directly to your terminal." +fn_set_game_params scriptactions "dev|dev-debug" "command_dev_debug.sh" "Toggle Developer Debug mode" +fn_set_game_params scriptactions "i|install" "command_install.sh" "Install the server." +fn_set_game_params scriptactions "ai|auto-install" "fn_autoinstall" "Install the server, without prompts." +fn_set_game_params scriptactions "b|backup" "command_backup.sh" "Create archive of the server." + # Default fn_parms just loads the parms file. Still need to figure out how to handle "simple" parms. fn_parms(){ source "${settingsdir}/parms" diff --git a/gamedata/_dontstarve b/gamedata/_dontstarve index a84a0cd34..ce7b63b6a 100644 --- a/gamedata/_dontstarve +++ b/gamedata/_dontstarve @@ -3,7 +3,7 @@ # Don't Starve Engine # Import default settings -fn_import_game_settings _default +fn_import_game_settings _steam # And the settings for defaults fn_set_game_params settings "engine" "dontstarve" diff --git a/gamedata/_halflife_shared b/gamedata/_halflife_shared index 57f6430b8..0dd0a851f 100644 --- a/gamedata/_halflife_shared +++ b/gamedata/_halflife_shared @@ -3,7 +3,7 @@ # Half-Life Shared Engine (Source and GoldSource) # Import default settings -fn_import_game_settings _default +fn_import_game_settings _steam fn_import_game_settings _parms_plusminus # Dependencies diff --git a/gamedata/_projectzomboid b/gamedata/_projectzomboid index e5fa49dc4..891e347cc 100644 --- a/gamedata/_projectzomboid +++ b/gamedata/_projectzomboid @@ -3,7 +3,7 @@ # Project Zomboid Engine # Import default settings -fn_import_game_settings _default +fn_import_game_settings _steam # And the settings for defaults fn_set_game_params settings "engine" "projectzomboid" diff --git a/gamedata/_realvirtuality b/gamedata/_realvirtuality index 8bc35c6d3..ec84143ce 100644 --- a/gamedata/_realvirtuality +++ b/gamedata/_realvirtuality @@ -3,7 +3,7 @@ # Real Virtuality Engine # Import default settings -fn_import_game_settings _default +fn_import_game_settings _steam # Dependencies fn_set_game_params dependencies "libstdc++.so.6" "4f9c911de2276f988afaf47659a8367f" diff --git a/gamedata/_seriousengine35 b/gamedata/_seriousengine35 index 95a25b7e6..29592dcb6 100644 --- a/gamedata/_seriousengine35 +++ b/gamedata/_seriousengine35 @@ -3,7 +3,7 @@ # Serious Engine 3.5 # Import default settings -fn_import_game_settings _default +fn_import_game_settings _steam # Dependencies fn_set_game_params settings "dependency_path" "${filesdir}/Bin" diff --git a/gamedata/_source b/gamedata/_source index c65023e2a..9a0d079de 100644 --- a/gamedata/_source +++ b/gamedata/_source @@ -13,3 +13,5 @@ fn_set_game_params parms_plus "tv_port" "\${sourcetvport}" # These are values that the script uses, they don't get used by the srcds server directly fn_set_game_params settings "executable" "./srcds_linux" + +fn_set_game_params scriptactions "sm|sourcemod" "install_sourcemod.sh" "Install SourceMod." diff --git a/gamedata/_spark b/gamedata/_spark index ca23b268c..fe451f382 100644 --- a/gamedata/_spark +++ b/gamedata/_spark @@ -3,7 +3,7 @@ # Spark Engine # Import default settings -fn_import_game_settings _default +fn_import_game_settings _steam # http://wiki.unknownworlds.com/ns2/Dedicated_Server fn_parms(){ diff --git a/gamedata/_starbound b/gamedata/_starbound index 430f35a82..799a0cd21 100644 --- a/gamedata/_starbound +++ b/gamedata/_starbound @@ -3,7 +3,7 @@ # Base SRCDS Game # Import default settings -fn_import_game_settings _default +fn_import_game_settings _steam fn_set_game_params settings "engine" "starbound" fn_set_game_params settings "executabledir" "\${filesdir}/linux64" diff --git a/gamedata/_steam b/gamedata/_steam new file mode 100644 index 000000000..8c406e953 --- /dev/null +++ b/gamedata/_steam @@ -0,0 +1,17 @@ +# Game Settings File +# _steam +# Steam based games + +# Import default settings +fn_import_game_settings _default + +fn_set_game_params settings "appid" "--EMPTY--" "Steam App ID" +fn_set_game_params settings "steampass" "--EMPTY--" "Steam Password" +fn_set_game_params settings "steamuser" "anonymous" "Steam Username" +fn_set_game_params settings "updateonstart" "off" "Update game on start" + +# Script actions +fn_set_game_params scriptactions "fu|force-update|update-restart" "forceupdate=1; update_check.sh" "Bypasses the check and applies updates from SteamCMD." +fn_set_game_params scriptactions "v|validate" "command_validate.sh" "Validate server files with SteamCMD." +fn_set_game_params scriptactions "c|console" "command_console.sh" "Console allows you to access the live view of a server." + diff --git a/gamedata/_terraria b/gamedata/_terraria index 37b11f0cb..454709466 100644 --- a/gamedata/_terraria +++ b/gamedata/_terraria @@ -3,7 +3,7 @@ # Terarria Engine # Import default settings -fn_import_game_settings _default +fn_import_game_settings _steam fn_set_game_params settings "engine" "terraria" fn_set_game_params settings "executabledir" "\${filesdir}" diff --git a/gamedata/_unity3d b/gamedata/_unity3d index cd5448fa6..1fc5c35fc 100644 --- a/gamedata/_unity3d +++ b/gamedata/_unity3d @@ -3,7 +3,7 @@ # Unity 3D Engine # Import default settings -fn_import_game_settings _default +fn_import_game_settings _steam fn_set_game_params settings "engine" "unity3d" # http://hurtworld.wikia.com/wiki/Hosting_A_Server diff --git a/gamedata/_unreal b/gamedata/_unreal index 034947c7e..eb4e0c79b 100644 --- a/gamedata/_unreal +++ b/gamedata/_unreal @@ -3,18 +3,9 @@ # Unreal Engine # Import default settings -fn_import_game_settings _default +fn_import_game_settings _unreal_shared # This is the way we create a script that collates and parses the parameters fn_parms(){ parms="" } -fn_set_game_params settings "systemdir" "\${filesdir}/System" -fn_set_game_params settings "gamelogdir" "\${systemdir}/logs" -fn_set_game_params settings "executabledir" "\${systemdir}" -fn_set_game_params settings "executable" "./ucc-bin" -fn_set_game_params settings "servercfg" "\${servicename}.ini" -fn_set_game_params settings "servercfgdir" "\${systemdir}" -fn_set_game_params settings "servercfgfullpath" "\${servercfgdir}/\${servercfg}" -fn_set_game_params settings "servercfgdefault" "\${servercfgdir}/Default.ini" -fn_set_game_params settings "compressedmapsdir" "${rootdir}/Maps-Compressed" "Compressed Maps Directory" diff --git a/gamedata/_unreal2 b/gamedata/_unreal2 index 7b289200a..09e716293 100644 --- a/gamedata/_unreal2 +++ b/gamedata/_unreal2 @@ -3,16 +3,9 @@ # Unreal 2 Engine # Import default settings -fn_import_game_settings _default +fn_import_game_settings _steam +fn_import_game_settings _unreal_shared fn_parms(){ parms="" } -fn_set_game_params settings "systemdir" "${filesdir}/System" -fn_set_game_params settings "executabledir" "${systemdir}" -fn_set_game_params settings "executable" "./ucc-bin" -fn_set_game_params settings "servercfg" "${servicename}.ini" -fn_set_game_params settings "servercfgdir" "${systemdir}" -fn_set_game_params settings "servercfgfullpath" "${servercfgdir}/${servercfg}" -fn_set_game_params settings "servercfgdefault" "${servercfgdir}/Default.ini" -fn_set_game_params settings "compressedmapsdir" "${rootdir}/Maps-Compressed" diff --git a/gamedata/_unreal4 b/gamedata/_unreal4 index e7f01274d..20b5eec69 100644 --- a/gamedata/_unreal4 +++ b/gamedata/_unreal4 @@ -3,16 +3,11 @@ # Unreal 4 Engine # Import default settings -fn_import_game_settings _default +fn_import_game_settings _unreal_shared -fn_parms(){ - parms="" -} fn_set_game_params settings "systemdir" "\${filesdir}/\${game}" -fn_set_game_params settings "gamelogdir" "\${systemdir}/logs" fn_set_game_params settings "executabledir" "\${systemdir}/Binaries/Linux" fn_set_game_params settings "executable" "./\${game}Server" fn_set_game_params settings "servercfg" "GameUserSettings.ini" fn_set_game_params settings "servercfgdir" "\${systemdir}/Saved/Config/LinuxServer" -fn_set_game_params settings "servercfgfullpath" "\${servercfgdir}/\${servercfg}" fn_set_game_params settings "servercfgdefault" "\${servercfgdir}/lgsm-default.ini" diff --git a/gamedata/_unreal_shared b/gamedata/_unreal_shared new file mode 100644 index 000000000..fb407afb1 --- /dev/null +++ b/gamedata/_unreal_shared @@ -0,0 +1,20 @@ +# Game Settings File +# _unreal_shared +# Unreal Engine Shared (across all generations) + +# Import default settings +fn_import_game_settings _default + +fn_set_game_params settings "systemdir" "${filesdir}/System" +fn_set_game_params settings "executabledir" "${systemdir}" +fn_set_game_params settings "gamelogdir" "\${systemdir}/logs" +fn_set_game_params settings "servercfgdir" "${systemdir}" +fn_set_game_params settings "servercfg" "${servicename}.ini" +fn_set_game_params settings "executable" "./ucc-bin" +fn_set_game_params settings "servercfgfullpath" "${servercfgdir}/${servercfg}" +fn_set_game_params settings "servercfgdefault" "${servercfgdir}/Default.ini" +fn_set_game_params settings "compressedmapsdir" "${rootdir}/Maps-Compressed" "Compressed Maps Directory" + +fn_set_game_params scriptactions "c|console" "command_console.sh" "Console View." +fn_set_game_params scriptactions "mc|map-compressor" "compress_ut99_maps.sh" "Map Compressor." + diff --git a/gamedata/arkserver b/gamedata/arkserver index 302b4398c..37f9d33ef 100644 --- a/gamedata/arkserver +++ b/gamedata/arkserver @@ -3,6 +3,7 @@ # # Import Engine +fn_import_game_settings _steam fn_import_game_settings _unreal4 fn_parms(){ diff --git a/gamedata/kfserver b/gamedata/kfserver index 48b709de6..6f156c82e 100644 --- a/gamedata/kfserver +++ b/gamedata/kfserver @@ -1,5 +1,6 @@ # Game Settings File # Import Engine +fn_import_game_settings _steam fn_import_game_settings _unreal2 fn_parms(){ diff --git a/gamedata/mumbleserver b/gamedata/mumbleserver new file mode 100644 index 000000000..18d8e55d3 --- /dev/null +++ b/gamedata/mumbleserver @@ -0,0 +1,19 @@ +# Game Settings File +# mumbleserver +# Mumble Server + +# Import default settings +fn_import_game_settings _default + +fn_parms(){ + parms="-fg -ini ${servercfgfullpath}" +} + +fn_set_game_params settings "gamename" "Mumble" +fn_set_game_params settings "servicename" "mumble-server" +fn_set_game_params settings "executable" "./murmur.x86" +fn_set_game_params settings "servercfg" "murmur.ini" +fn_set_game_params settings "servercfgdir" "\${filesdir}" + +fn_set_game_params scriptactions "console" "command_console.sh" "Console View." + diff --git a/gamedata/roserver b/gamedata/roserver index f8cbe9863..6b0225c73 100644 --- a/gamedata/roserver +++ b/gamedata/roserver @@ -1,5 +1,6 @@ # Game Settings File # Import Engine +fn_import_game_settings _steam fn_import_game_settings _unreal2 fn_parms(){ diff --git a/gamedata/ts3server b/gamedata/ts3server new file mode 100644 index 000000000..596b889c2 --- /dev/null +++ b/gamedata/ts3server @@ -0,0 +1,18 @@ +# Game Settings File +# ts3server +# TeamSpeak 3 Server + +# Import default settings +fn_import_game_settings _default + +fn_set_game_params settings "gamename" "TeamSpeak 3" +fn_set_game_params settings "servername" "TeamSpeak 3 Server" +fn_set_game_params settings "servicename" "ts3-server" +fn_set_game_params settings "executabledir" "\${filesdir}" +fn_set_game_params settings "executable" "./ts3server_startscript.sh" +fn_set_game_params settings "servercfg" "\${servicename}.ini" +fn_set_game_params settings "servercfgdir" "\${filesdir}" +fn_set_game_params settings "servercfgdefault" "\${servercfgdir}/lgsm-default.ini" + +fn_set_game_params scriptactions "pw|change-password" "command_ts3_server_pass.sh" "Change Password." + diff --git a/_MasterScript/lgsm-core b/lgsm-core similarity index 83% rename from _MasterScript/lgsm-core rename to lgsm-core index c7d29619a..ba253a18d 100755 --- a/_MasterScript/lgsm-core +++ b/lgsm-core @@ -3,8 +3,34 @@ # Server Management Script # Author: Daniel Gibbs # Website: http://gameservermanagers.com - -version="260116" +# +# Modified by Jared Ballou +# https://github.com/jaredballou/linuxgsm + +# Version of script +version="300116" + +# Filename of the core script for installation +core_script="lgsm-core" + +# TODO: Add .lgsm.conf support to pre-load LGSM settings in the event of non-standard installations + +# Determine if we are running from a script file, or being piped into bash via curl +if [ "${BASH_SOURCE[0]}" != "" ]; then + # The name of this script file, used to show the LGSM link properly + scriptpath=$(readlink -f "${BASH_SOURCE[0]}") + # The basename of the real script file + selfname=$(basename "${scriptpath}") + # Name of this service (will return symlink name for multiple instance support) + servicename="$(basename $0)" + # Script root directory + rootdir="$(dirname "${scriptpath}") +else + scriptpath="$(pwd)/${core_script}" + selfname="${core_script}" + servicename="${core_script}" + rootdir="$(pwd)" +fi # File fetching settings # Github Branch Select @@ -14,21 +40,11 @@ githubuser="jaredballou" githubrepo="linuxgsm" githubbranch="master" -# Update stale files on the fly using Git +# Update stale files on the fly using Git. git_update=0 -#### Variables #### - -# The name of this script file, used to show the LGSM link properly -selfname=$(basename $(readlink -f "${BASH_SOURCE[0]}")) - -# Name of this service (for symlinked instances) -servicename="$(basename $0)" - # Directories -# Script root -rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # LGSM Support Files - set ro rootdir for old behavior lgsmdir="${rootdir}/lgsm" # Temporary path to store and manipulate settings @@ -47,9 +63,6 @@ for dir in $(grep '^[a-zA-Z0-9]*dir=' $0 | cut -d'=' -f1); do mkdir -p "${!dir}" fi done -# Git last commit file (for tracking updates) -lastcommit_file="${cachedir}/lastcommit" - # Debugging, if debugflag exists send output to $debuglog debugflag="${lgsmdir}/.dev-debug" @@ -60,6 +73,10 @@ if [ -f "${debugflag}" ]; then set -x fi +# Git last commit file (for tracking updates) +lastcommit_file="${cachedir}/lastcommit" + + #ipaddr=$(ip addr show $(ip route | grep '^default' | awk '{print $NF}') | grep 'inet ' | awk '{print $2}' | cut -f1 -d'/') ##### Script ##### @@ -177,7 +194,7 @@ fn_getgithubfile "gsquery.py" norun "GameServerQuery/gsquery.py" # Load core functions fn_runfunction core_functions.sh -if [ "${selfname}" == "lgsm-core" ]; +if [ "${selfname}" == "${core_script}" ]; then fn_runfunction install_lgsm.sh else diff --git a/tools/update-game-list.sh b/tools/update-game-list.sh index f7849823b..dedc736fa 100755 --- a/tools/update-game-list.sh +++ b/tools/update-game-list.sh @@ -1,2 +1,4 @@ #!/bin/bash -grep gamename ../gamedata/[a-z]* | grep -v 'README\.md' | sed -e 's/^[a-z0-9A-Z\/\.]\+\///g' -e 's/\:[ \t]*fn_set_game_params settings[ \t]*"gamename"[ \t]*/ /g' > ../gamedata/__game_list +GAMEDATA=../gamedata/ +GAMELIST=${GAMEDATA}/__game_list +grep gamename ${GAMEDATA}/[a-z]* | grep -v 'README\.md' | sed -e 's/^[a-z0-9A-Z\/\.]\+\///g' -e 's/\:[ \t]*fn_set_game_params settings[ \t]*"gamename"[ \t]*/ /g' > ${GAMELIST}