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(){
fn_runfunction "${FUNCNAME}"
}
log_dirs.sh(){
fn_runfunction "${FUNCNAME}"
}
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_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.
# 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
}
# Create config file
fn_create_config(){
cfg_type=${1:-default}
cfg_force=$2
# Look up file and header for cfg_type
cfg_file="cfg_file_${cfg_type}"
cfg_header="cfg_header_${cfg_type}"
@ -92,6 +101,7 @@ fn_create_config(){
fi
}
# Delete all output files from the settings parser
fn_flush_game_settings(){
if [ -e $settingsdir ]; then
rm -rf $settingsdir > /dev/null
@ -99,6 +109,7 @@ fn_flush_game_settings(){
mkdir -p $settingsdir
}
# Pull in another gamedata file
fn_import_game_settings(){
import="${gamedatadir}/${1}"
importdir=$(echo "${gamedatadir}" | sed -e "s|${lgsmdir}/||g")
@ -110,6 +121,7 @@ fn_import_game_settings(){
source $import
}
# Set variable in setting file
fn_set_game_setting(){
setting_set=$1
setting_name=$2
@ -118,6 +130,7 @@ fn_set_game_setting(){
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(){
setting_set=$1
setting_name=$2
@ -127,6 +140,7 @@ fn_set_game_parm(){
fn_update_config "${setting_name}" "\${${setting_name}}" "${settingsdir}/${setting_set}" ""
}
# Get value from settings file
fn_get_game_setting(){
setting_set=$1
setting_name=$2
@ -152,29 +166,34 @@ fn_fix_game_dependencies() {
md5sum=$(echo $line | cut -d'"' -f2)
remote_path="dependencies/${filename}.${md5sum}"
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}"
if [ "${local_md5}" != "${md5sum}" ]; then
fn_getgithubfile "${local_path}" 0 "${remote_path}" 1
fi
done < $depfile
}
# Flush old setings buffer
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
fn_import_game_settings $selfname
# New method is to always run this function, it will overwrite defaults with whatever the new script values are
cfg_version_default=$(grep '^lgsm_version="' "${cfg_file_default}" 2>&1 | cut -d'"' -f2)
if [ "${cfg_version_default}" != "${version}" ]; then
# Compare the original MD5 hash with the settings file now that we have processed all gamedata.\
# If there is a change or the config is missing, rebuild the default config
if [ "${settings_file_md5}" != "$(fn_get_md5sum "${settings_file}")" ] || [ ! -e "${cfg_file_default}" ]; then
fn_create_config default 1
fi
# Load defaults
# Load default config
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
# 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"
arma3server:fn_set_game_setting settings "gamename" "Arma 3"
bb2server:fn_set_game_setting settings "gamename" "BrainBread 2"
bmdmserver:fn_set_game_setting settings "gamename" "Black Mesa"
bsserver:fn_set_game_setting settings "gamename" "Blade Symphony"
csczserver:fn_set_game_setting settings "gamename" "Counter Strike: Condition Zero"
csgoserver:fn_set_game_setting settings "gamename" "Counter Strike: Global Offensive"
csserver:fn_set_game_setting settings "gamename" "Counter Strike"
cssserver:fn_set_game_setting settings "gamename" "Counter Strike: Source"
cureserver:fn_set_game_setting settings "gamename" "Codename CURE"
dabserver:fn_set_game_setting settings "gamename" "Double Action: Boogaloo"
dmcserver:fn_set_game_setting settings "gamename" "Deathmatch Classic"
dodserver:fn_set_game_setting settings "gamename" "Day Of Defeat"
dodsserver:fn_set_game_setting settings "gamename" "Day Of Defeat: Source"
dstserver:fn_set_game_setting settings "gamename" "Don't Starve Together"
fofserver:fn_set_game_setting settings "gamename" "Fistful Of Frags"
gesserver:fn_set_game_setting settings "gamename" "GoldenEye: Source"
gmodserver:fn_set_game_setting settings "gamename" "Garry's Mod"
hl2dmserver:fn_set_game_setting settings "gamename" "Half Life 2: Deathmatch"
hldmserver:fn_set_game_setting settings "gamename" "Half Life: Deathmatch"
hldmsserver:fn_set_game_setting settings "gamename" "Half-Life Deathmatch: Source"
hwserver:fn_set_game_setting settings "gamename" "Hurtworld"
insserver:fn_set_game_setting settings "gamename" "Insurgency"
jc2server:fn_set_game_setting settings "gamename" "Just Cause 2"
kfserver:fn_set_game_setting settings "gamename" "Killing Floor"
l4d2server:fn_set_game_setting settings "gamename" "Left 4 Dead 2"
l4dserver:fn_set_game_setting settings "gamename" "Left 4 Dead"
mumbleserver:fn_set_game_setting settings "gamename" "Mumble"
nmrihserver:fn_set_game_setting settings "gamename" "No More Room In Hell"
ns2cserver:fn_set_game_setting settings "gamename" "NS2: Combat"
ns2server:fn_set_game_setting settings "gamename" "Natural Selection 2"
opforserver:fn_set_game_setting settings "gamename" "Opposing Force"
pvkiiserver:fn_set_game_setting settings "gamename" "Pirates, Vikings, and Knights II"
pzserver:fn_set_game_setting settings "gamename" "Project Zomboid"
ricochetserver:fn_set_game_setting settings "gamename" "Ricochet"
roserver:fn_set_game_setting settings "gamename" "Red Orchestra"
sbserver:fn_set_game_setting settings "gamename" "StarBound"
sdtdserver:fn_set_game_setting settings "gamename" "7 Days To Die"
ss3sserver:fn_set_game_setting settings "gamename" "Serious Sam 3: BFE"
terrariaserver:fn_set_game_setting settings "gamename" "Terraria"
tf2server:fn_set_game_setting settings "gamename" "Team Fortress 2"
tfcserver:fn_set_game_setting settings "gamename" "Team Fortress Classic"
ts3server:fn_set_game_setting settings "gamename" "TeamSpeak 3"
twserver:fn_set_game_setting settings "gamename" "Teeworlds"
ut2k4server:fn_set_game_setting settings "gamename" "Unreal Tournament 2004"
ut99server:fn_set_game_setting settings "gamename" "Unreal Tournament 99"
arkserver "ARK Survival Evolved"
arma3server "Arma 3"
bb2server "BrainBread 2"
bmdmserver "Black Mesa"
bsserver "Blade Symphony"
csczserver "Counter Strike Condition Zero"
csgoserver "Counter Strike Global Offensive"
csserver "Counter Strike"
cssserver "Counter Strike Source"
cureserver "Codename CURE"
dabserver "Double Action Boogaloo"
dmcserver "Deathmatch Classic"
dodserver "Day Of Defeat"
dodsserver "Day Of Defeat Source"
dstserver "Don't Starve Together"
fofserver "Fistful Of Frags"
gesserver "GoldenEye Source"
gmodserver "Garry's Mod"
hl2dmserver "Half Life 2 Deathmatch"
hldmserver "Half Life Deathmatch"
hldmsserver "Half-Life Deathmatch Source"
hwserver "Hurtworld"
insserver "Insurgency"
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"
opforserver "Opposing Force"
pvkiiserver "Pirates, Vikings, and Knights II"
pzserver "Project Zomboid"
ricochetserver "Ricochet"
roserver "Red Orchestra"
sbserver "StarBound"
sdtdserver "7 Days To Die"
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"

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"
# 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 "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"
# Override some server settings
fn_set_game_setting settings "executable" "./srcds_linux"
fn_set_game_setting settings "appid" "237410"
fn_set_game_setting settings "map" "ministry checkpoint"
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="${lgsmdir}/servers/${selfname}"
# Log directory
logdir="${lgsmdir}/servers/${selfname}/log"
# Temporary path to store and manipulate settings
settingsdir="${lgsmserverdir}/settings"
@ -208,6 +211,9 @@ else
# Process game configs and load variables needed to run script
fn_runfunction game_settings.sh
# Create log directories
fn_runfunction log_dirs.sh
# Get option from command line and run option parser
getopt=$1
core_getopt.sh

17
tools/update-game-list.sh

@ -1,4 +1,17 @@
#!/bin/bash
GAMEDATA=../gamedata/
GAMEDATA=../gamedata
MODDATA=${GAMEDATA}/mods
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