Browse Source

Updated logging, created log_dirs.sh to create log directories and make links. Added mods, will be applied on top of games.

pull/553/head
Jared Ballou 10 years ago
parent
commit
e0ed19eef4
  1. 3
      functions/core_functions.sh
  2. 31
      functions/game_settings.sh
  3. 41
      functions/log_dirs.sh
  4. 92
      gamedata/__game_list
  5. 1
      gamedata/__mod_list
  6. 2
      gamedata/_steam
  7. 1
      gamedata/insserver
  8. 11
      gamedata/mods/insserver/dayofinfamy
  9. 6
      lgsm-core
  10. 17
      tools/update-game-list.sh

3
functions/core_functions.sh

@ -331,7 +331,10 @@ fn_runfunction "${FUNCNAME}"
install_logs.sh(){ install_logs.sh(){
fn_runfunction "${FUNCNAME}" fn_runfunction "${FUNCNAME}"
}
log_dirs.sh(){
fn_runfunction "${FUNCNAME}"
} }
install_retry.sh(){ install_retry.sh(){

31
functions/game_settings.sh

@ -18,6 +18,13 @@ cfg_header_default="# Default config - Changes will be overwritten by updates.\n
cfg_header_common="# Common config - Will not be overwritten by script.\n${cfg_header_all}" cfg_header_common="# Common config - Will not be overwritten by script.\n${cfg_header_all}"
cfg_header_instance="# Instance Config for ${servicename} - Will not be overwritten by script.\n${cfg_header_all}" cfg_header_instance="# Instance Config for ${servicename} - Will not be overwritten by script.\n${cfg_header_all}"
# Settings file created from gamedata
settings_file="${settingsdir}/settings"
# Get the MD5 hash of a file
fn_get_md5sum() {
md5sum "${1}" 2>/dev/null| awk '{print $1}'
}
# If default config does not exist, create it. This should come from Git, and will be overwritten by updates. # If default config does not exist, create it. This should come from Git, and will be overwritten by updates.
# Rather than try to wget it from Github or other fancy ways to get it, the simplest way to ensure it works is to simply create it here. # Rather than try to wget it from Github or other fancy ways to get it, the simplest way to ensure it works is to simply create it here.
@ -71,9 +78,11 @@ fn_update_config()
fi fi
} }
# Create config file
fn_create_config(){ fn_create_config(){
cfg_type=${1:-default} cfg_type=${1:-default}
cfg_force=$2 cfg_force=$2
# Look up file and header for cfg_type
cfg_file="cfg_file_${cfg_type}" cfg_file="cfg_file_${cfg_type}"
cfg_header="cfg_header_${cfg_type}" cfg_header="cfg_header_${cfg_type}"
@ -92,6 +101,7 @@ fn_create_config(){
fi fi
} }
# Delete all output files from the settings parser
fn_flush_game_settings(){ fn_flush_game_settings(){
if [ -e $settingsdir ]; then if [ -e $settingsdir ]; then
rm -rf $settingsdir > /dev/null rm -rf $settingsdir > /dev/null
@ -99,6 +109,7 @@ fn_flush_game_settings(){
mkdir -p $settingsdir mkdir -p $settingsdir
} }
# Pull in another gamedata file
fn_import_game_settings(){ fn_import_game_settings(){
import="${gamedatadir}/${1}" import="${gamedatadir}/${1}"
importdir=$(echo "${gamedatadir}" | sed -e "s|${lgsmdir}/||g") importdir=$(echo "${gamedatadir}" | sed -e "s|${lgsmdir}/||g")
@ -110,6 +121,7 @@ fn_import_game_settings(){
source $import source $import
} }
# Set variable in setting file
fn_set_game_setting(){ fn_set_game_setting(){
setting_set=$1 setting_set=$1
setting_name=$2 setting_name=$2
@ -118,6 +130,7 @@ fn_set_game_setting(){
fn_update_config "${setting_name}" "${setting_value}" "${settingsdir}/${setting_set}" "${setting_comment}" fn_update_config "${setting_name}" "${setting_value}" "${settingsdir}/${setting_set}" "${setting_comment}"
} }
# Set parameter and make sure there is a config setting tied to it
fn_set_game_parm(){ fn_set_game_parm(){
setting_set=$1 setting_set=$1
setting_name=$2 setting_name=$2
@ -127,6 +140,7 @@ fn_set_game_parm(){
fn_update_config "${setting_name}" "\${${setting_name}}" "${settingsdir}/${setting_set}" "" fn_update_config "${setting_name}" "\${${setting_name}}" "${settingsdir}/${setting_set}" ""
} }
# Get value from settings file
fn_get_game_setting(){ fn_get_game_setting(){
setting_set=$1 setting_set=$1
setting_name=$2 setting_name=$2
@ -152,29 +166,34 @@ fn_fix_game_dependencies() {
md5sum=$(echo $line | cut -d'"' -f2) md5sum=$(echo $line | cut -d'"' -f2)
remote_path="dependencies/${filename}.${md5sum}" remote_path="dependencies/${filename}.${md5sum}"
local_path="${dependency_path}/${filename}" local_path="${dependency_path}/${filename}"
local_md5="$(md5sum "${local_path}" | awk '{print $1}')" local_md5="$(fn_get_md5sum "${local_path}")"
echo "Checking ${filename} for ${md5sum}" echo "Checking ${filename} for ${md5sum}"
if [ "${local_md5}" != "${md5sum}" ]; then if [ "${local_md5}" != "${md5sum}" ]; then
fn_getgithubfile "${local_path}" 0 "${remote_path}" 1 fn_getgithubfile "${local_path}" 0 "${remote_path}" 1
fi fi
done < $depfile done < $depfile
} }
# Flush old setings buffer # Flush old setings buffer
fn_flush_game_settings fn_flush_game_settings
# Get the checksum of the current settings file to compare after loading gamedata
settings_file_md5="$(fn_get_md5sum "${settings_file}")"
# Import this game's settings # Import this game's settings
fn_import_game_settings $selfname fn_import_game_settings $selfname
# New method is to always run this function, it will overwrite defaults with whatever the new script values are # Compare the original MD5 hash with the settings file now that we have processed all gamedata.\
cfg_version_default=$(grep '^lgsm_version="' "${cfg_file_default}" 2>&1 | cut -d'"' -f2) # If there is a change or the config is missing, rebuild the default config
if [ "${cfg_version_default}" != "${version}" ]; then if [ "${settings_file_md5}" != "$(fn_get_md5sum "${settings_file}")" ] || [ ! -e "${cfg_file_default}" ]; then
fn_create_config default 1 fn_create_config default 1
fi fi
# Load defaults # Load default config
source $cfg_file_default source $cfg_file_default
# Load sitewide common settings (so that Git updates can safely overwrite default.cfg) # Load sitewide common settings (so that Git updates can safely overwrite _default.cfg)
if [ ! -f $cfg_file_common ]; then fn_create_config common; else source $cfg_file_common; fi if [ ! -f $cfg_file_common ]; then fn_create_config common; else source $cfg_file_common; fi
# Load instance specific settings # Load instance specific settings

41
functions/log_dirs.sh

@ -0,0 +1,41 @@
#!/bin/bash
fn_create_log_dir() {
target="${1}"
link="${2}"
createdir=${3:-1}
if [ "${target}" == "" ]; then
return;
fi
if [ ! -e "${target}" ] && [ $createdir -gt 0 ]; then
mkdir -p "${target}"
fi
if [ "${link}" == "" ]; then
return;
fi
if [ "$(readlink -f "${link}")" != "${target}" ] && [ -e "${target}" ]; then
if [ ! -e "$(dirname "${link}")" ]; then
mkdir -p "$(dirname "${link}")"
fi
ln -nfsv "${target}" "${link}"
fi
}
fn_create_log_dir "${gamelogdir}" "${logdir}/server" 0
fn_create_log_dir "${scriptlogdir}"
fn_create_log_dir "${consolelogdir}"
fn_create_log_dir "${rootdir}/Steam/logs" "${logdir}/steamcmd"
fn_create_log_dir "${systemdir}/addons/sourcemod/logs" "${logdir}/sourcemod" 0
# Create dir's for the script and console logs
#touch "${scriptlog}"
#touch "${consolelog}"
#touch "${emaillog}"
# If a server is 7 Days to Die.
if [ "${gamename}" == "7 Days To Die" ]; then
if [ ! -h "${gamelogdir}/output_log.txt" ]; then
ln -nfsv "${filesdir}/7DaysToDie_Data/output_log.txt" "${gamelogdir}/output_log.txt"
fi
fi

92
gamedata/__game_list

@ -1,46 +1,46 @@
arkserver:fn_set_game_setting settings "gamename" "ARK: Survival Evolved" arkserver "ARK Survival Evolved"
arma3server:fn_set_game_setting settings "gamename" "Arma 3" arma3server "Arma 3"
bb2server:fn_set_game_setting settings "gamename" "BrainBread 2" bb2server "BrainBread 2"
bmdmserver:fn_set_game_setting settings "gamename" "Black Mesa" bmdmserver "Black Mesa"
bsserver:fn_set_game_setting settings "gamename" "Blade Symphony" bsserver "Blade Symphony"
csczserver:fn_set_game_setting settings "gamename" "Counter Strike: Condition Zero" csczserver "Counter Strike Condition Zero"
csgoserver:fn_set_game_setting settings "gamename" "Counter Strike: Global Offensive" csgoserver "Counter Strike Global Offensive"
csserver:fn_set_game_setting settings "gamename" "Counter Strike" csserver "Counter Strike"
cssserver:fn_set_game_setting settings "gamename" "Counter Strike: Source" cssserver "Counter Strike Source"
cureserver:fn_set_game_setting settings "gamename" "Codename CURE" cureserver "Codename CURE"
dabserver:fn_set_game_setting settings "gamename" "Double Action: Boogaloo" dabserver "Double Action Boogaloo"
dmcserver:fn_set_game_setting settings "gamename" "Deathmatch Classic" dmcserver "Deathmatch Classic"
dodserver:fn_set_game_setting settings "gamename" "Day Of Defeat" dodserver "Day Of Defeat"
dodsserver:fn_set_game_setting settings "gamename" "Day Of Defeat: Source" dodsserver "Day Of Defeat Source"
dstserver:fn_set_game_setting settings "gamename" "Don't Starve Together" dstserver "Don't Starve Together"
fofserver:fn_set_game_setting settings "gamename" "Fistful Of Frags" fofserver "Fistful Of Frags"
gesserver:fn_set_game_setting settings "gamename" "GoldenEye: Source" gesserver "GoldenEye Source"
gmodserver:fn_set_game_setting settings "gamename" "Garry's Mod" gmodserver "Garry's Mod"
hl2dmserver:fn_set_game_setting settings "gamename" "Half Life 2: Deathmatch" hl2dmserver "Half Life 2 Deathmatch"
hldmserver:fn_set_game_setting settings "gamename" "Half Life: Deathmatch" hldmserver "Half Life Deathmatch"
hldmsserver:fn_set_game_setting settings "gamename" "Half-Life Deathmatch: Source" hldmsserver "Half-Life Deathmatch Source"
hwserver:fn_set_game_setting settings "gamename" "Hurtworld" hwserver "Hurtworld"
insserver:fn_set_game_setting settings "gamename" "Insurgency" insserver "Insurgency"
jc2server:fn_set_game_setting settings "gamename" "Just Cause 2" jc2server "Just Cause 2"
kfserver:fn_set_game_setting settings "gamename" "Killing Floor" kfserver "Killing Floor"
l4d2server:fn_set_game_setting settings "gamename" "Left 4 Dead 2" l4d2server "Left 4 Dead 2"
l4dserver:fn_set_game_setting settings "gamename" "Left 4 Dead" l4dserver "Left 4 Dead"
mumbleserver:fn_set_game_setting settings "gamename" "Mumble" mumbleserver "Mumble"
nmrihserver:fn_set_game_setting settings "gamename" "No More Room In Hell" nmrihserver "No More Room In Hell"
ns2cserver:fn_set_game_setting settings "gamename" "NS2: Combat" ns2cserver "NS2 Combat"
ns2server:fn_set_game_setting settings "gamename" "Natural Selection 2" ns2server "Natural Selection 2"
opforserver:fn_set_game_setting settings "gamename" "Opposing Force" opforserver "Opposing Force"
pvkiiserver:fn_set_game_setting settings "gamename" "Pirates, Vikings, and Knights II" pvkiiserver "Pirates, Vikings, and Knights II"
pzserver:fn_set_game_setting settings "gamename" "Project Zomboid" pzserver "Project Zomboid"
ricochetserver:fn_set_game_setting settings "gamename" "Ricochet" ricochetserver "Ricochet"
roserver:fn_set_game_setting settings "gamename" "Red Orchestra" roserver "Red Orchestra"
sbserver:fn_set_game_setting settings "gamename" "StarBound" sbserver "StarBound"
sdtdserver:fn_set_game_setting settings "gamename" "7 Days To Die" sdtdserver "7 Days To Die"
ss3sserver:fn_set_game_setting settings "gamename" "Serious Sam 3: BFE" ss3sserver "Serious Sam 3 BFE"
terrariaserver:fn_set_game_setting settings "gamename" "Terraria" terrariaserver "Terraria"
tf2server:fn_set_game_setting settings "gamename" "Team Fortress 2" tf2server "Team Fortress 2"
tfcserver:fn_set_game_setting settings "gamename" "Team Fortress Classic" tfcserver "Team Fortress Classic"
ts3server:fn_set_game_setting settings "gamename" "TeamSpeak 3" ts3server "TeamSpeak 3"
twserver:fn_set_game_setting settings "gamename" "Teeworlds" twserver "Teeworlds"
ut2k4server:fn_set_game_setting settings "gamename" "Unreal Tournament 2004" ut2k4server "Unreal Tournament 2004"
ut99server:fn_set_game_setting settings "gamename" "Unreal Tournament 99" ut99server "Unreal Tournament 99"

1
gamedata/__mod_list

@ -0,0 +1 @@
insserver/dayofinfamy "Day of Infamy"

2
gamedata/_steam

@ -12,7 +12,7 @@ fn_set_game_setting settings "steamuser" "anonymous" "Steam Username"
fn_set_game_setting settings "updateonstart" "off" "Update game on start" fn_set_game_setting settings "updateonstart" "off" "Update game on start"
# Script actions # Script actions
fn_set_game_setting scriptactions "fu" "update-restart force-update|forceupdate=1; update_check.sh|Bypasses the check and applies updates from SteamCMD." fn_set_game_setting scriptactions "fu" "update-restart force-update|set forceupdate=1; update_check.sh|Bypasses the check and applies updates from SteamCMD."
fn_set_game_setting scriptactions "v" "validate|command_validate.sh|Validate server files with SteamCMD." fn_set_game_setting scriptactions "v" "validate|command_validate.sh|Validate server files with SteamCMD."
fn_set_game_setting scriptactions "c" "console|command_console.sh|Console allows you to access the live view of a server." fn_set_game_setting scriptactions "c" "console|command_console.sh|Console allows you to access the live view of a server."

1
gamedata/insserver

@ -13,6 +13,7 @@ fn_set_game_setting dependencies "libpthread.so.0" "50a2a33d3cdd82f15c3de6539db
fn_set_game_setting dependencies "librt.so.1" "eabf0fc1f81292270343bd0796fc64ca" fn_set_game_setting dependencies "librt.so.1" "eabf0fc1f81292270343bd0796fc64ca"
# Override some server settings # Override some server settings
fn_set_game_setting settings "executable" "./srcds_linux"
fn_set_game_setting settings "appid" "237410" fn_set_game_setting settings "appid" "237410"
fn_set_game_setting settings "map" "ministry checkpoint" fn_set_game_setting settings "map" "ministry checkpoint"
fn_set_game_setting settings "game" "insurgency" fn_set_game_setting settings "game" "insurgency"

11
gamedata/mods/insserver/dayofinfamy

@ -0,0 +1,11 @@
# Mod Configuration
# Day of Infamy
# For Insurgency
fn_set_game_setting settings "modname" "Day of Infamy"
fn_set_game_setting workshop "subscribed_file_ids" "601757902 601791962 604412679 601789279 608694820" "Subscribed Workshop Items"
fn_set_game_setting workshop "subscribed_collection_ids" "604418860" "Subscribed Workshop Collections"
fn_set_game_parm parms_plus "workshop_start_map" "--EMPTY--" "Workshop map to start with"
fn_set_game_parm parms_plus "host_workshop_collection" "--EMPTY--" "604418860" "Subscribed Workshop Collections"
fn_set_game_parm parms_plus "sv_workshop_list_file" "\${systemdir}/subscribed_file_ids.txt" "Path to Subscribed Workshop Items file"
fn_set_game_parm parms_minus "workshop" " " "Enable Workshop Support"

6
lgsm-core

@ -51,6 +51,9 @@ lgsmdir="${rootdir}/lgsm"
# lgsmserverdir is the directory for this server's support files # lgsmserverdir is the directory for this server's support files
lgsmserverdir="${lgsmdir}/servers/${selfname}" lgsmserverdir="${lgsmdir}/servers/${selfname}"
# Log directory
logdir="${lgsmdir}/servers/${selfname}/log"
# Temporary path to store and manipulate settings # Temporary path to store and manipulate settings
settingsdir="${lgsmserverdir}/settings" settingsdir="${lgsmserverdir}/settings"
@ -208,6 +211,9 @@ else
# Process game configs and load variables needed to run script # Process game configs and load variables needed to run script
fn_runfunction game_settings.sh fn_runfunction game_settings.sh
# Create log directories
fn_runfunction log_dirs.sh
# Get option from command line and run option parser # Get option from command line and run option parser
getopt=$1 getopt=$1
core_getopt.sh core_getopt.sh

17
tools/update-game-list.sh

@ -1,4 +1,17 @@
#!/bin/bash #!/bin/bash
GAMEDATA=../gamedata/ GAMEDATA=../gamedata
MODDATA=${GAMEDATA}/mods
GAMELIST=${GAMEDATA}/__game_list 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} MODLIST=${GAMEDATA}/__mod_list
GAMEFILES=$(find "${GAMEDATA}" -maxdepth 1 -type f | egrep -v '(\/_|README.md)')
#-printf '"%p" ')
MODFILES=$(find "${MODDATA}" -type f)
# -printf '"%p" ')
#echo $GAMEFILES
#echo $MODFILES
egrep -H '"(mod|game)name"' ${GAMEFILES} | sed -e 's/^[a-z0-9A-Z\/\.]\+\///g' -e 's/[\:\t ]\+/ /g' -e 's/fn_set[^ ]\+ [^ ]\+ [^ ]\+ //g' | sort -u > ${GAMELIST}
egrep -H '"(mod|game)name"' ${MODFILES} | sed -e "s|${MODDATA}[\/]*||g" -e 's/[\:\t ]\+/ /g' -e 's/fn_set[^ ]\+ [^ ]\+ [^ ]\+ //g' | sort -u > ${MODLIST}
#[ \t]*fn_set_game_[^ \t]*[ \t]+[^ \t]+[ \t]*"(mod|game)name"[ \t]*/ /g'
#| sed -e 's/^[a-z0-9A-Z\/\.]\+\///g' -e 's/\:[ \t]*fn_set_game_\(param|setting\).* [^ \t]\+[ \t]*"modname"[ \t]*/ /g'

Loading…
Cancel
Save