Mon Sep 16 2019
This commit is contained in:
parent
5c3aeb7195
commit
d5ef6e9949
@ -26,32 +26,52 @@ AppNum="232130"
|
|||||||
InstallDir="/usr/games/kf2-srv"
|
InstallDir="/usr/games/kf2-srv"
|
||||||
AppBin="$InstallDir/Binaries/Win64/KFGameSteamServer.bin.x86_64"
|
AppBin="$InstallDir/Binaries/Win64/KFGameSteamServer.bin.x86_64"
|
||||||
DefaultConfigDir="$InstallDir/KFGame/Config"
|
DefaultConfigDir="$InstallDir/KFGame/Config"
|
||||||
|
CustomMapsDir="$InstallDir/KFGame/Cache"
|
||||||
InstanceConfigDir="$DefaultConfigDir/instances"
|
InstanceConfigDir="$DefaultConfigDir/instances"
|
||||||
InstanceConfigLnk="/etc/kf2-srv/instances"
|
InstanceConfigLnk="/etc/kf2-srv/instances"
|
||||||
MainConfigTemplate="/etc/kf2-srv/main.conf.template"
|
MainConfigTemplate="/etc/kf2-srv/main.conf.template"
|
||||||
|
|
||||||
function show_help ()
|
function show_help ()
|
||||||
{
|
{
|
||||||
echo "kf2-srv"
|
echo "$ScriptName"
|
||||||
echo ""
|
echo "Централизование управление серверами Killing Floor 2"
|
||||||
echo "Usage:"
|
echo "Usage:"
|
||||||
echo "$ScriptName OPTION [INSTANCE]"
|
echo "$ScriptName OPTION [INSTANCE]"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Mandatory arguments to long options are mandatory for short options too."
|
echo "Mandatory arguments to long options are mandatory for short options too."
|
||||||
echo " -n, --new INSTANCE TODO: description"
|
echo "TODO: English description"
|
||||||
echo " -d, --delete [INSTANCE] TODO: description"
|
echo " -n, --new INSTANCE создает новый ЭКЗЕМПЛЯР сервера"
|
||||||
echo " -l, --list TODO: description"
|
echo " -d, --delete [INSTANCE] удаляет указанный ЭКЗМПЛЯР сервера; если"
|
||||||
echo " -s, --status [INSTANCE] TODO: description"
|
echo " ЭКЗЕМПЛЯР не указан, удаляет все сервера"
|
||||||
echo " -u, --update TODO: description"
|
echo " -l, --list перечисляет все имеющиеся экземпляры сервера"
|
||||||
echo " -r. --run TODO: description"
|
echo " -s, --status [INSTANCE] отображает состояние указанного ЭКЗЕМПЛЯРА"
|
||||||
echo " --start [INSTANCE] TODO: description"
|
echo " сервера; если ЭКЗЕМПЛЯР не указан,"
|
||||||
echo " --stop [INSTANCE] TODO: description"
|
echo " отображает состояние всех экземпляров сервера"
|
||||||
echo " --enable [INSTANCE] TODO: description"
|
echo " -u, --update при первом запуске производит установку KF2;"
|
||||||
echo " --disable [INSTANCE] TODO: description"
|
echo " в дальнейшем устанавливает обновления при их"
|
||||||
echo " --map-sync TODO: description"
|
echo " наличии"
|
||||||
echo " --ban-sync TODO: description"
|
echo " -r. --run [OPTIONS] запускает экземпляр сервера с указанными"
|
||||||
echo " --map-rotate-save TODO: description"
|
echo " ПАРАМЕТРАМИ"
|
||||||
echo " --map-rotate-load TODO: description"
|
echo " --start [INSTANCE] запускает указанный ЭКЗЕМПЛЯР сервера; если"
|
||||||
|
echo " ЭКЗЕМПЛЯР не указан, запускает все"
|
||||||
|
echo " автозапускаемые экземпляры сервера"
|
||||||
|
echo " --stop [INSTANCE] останавливает указанный ЭКЗЕМПЛЯР сервера;"
|
||||||
|
echo " если ЭКЗЕМПЛЯР не указан, останавливает все"
|
||||||
|
echo " экземпляры сервера"
|
||||||
|
echo " --enable [INSTANCE] добавляет указанный ЭКЗЕМПЛЯР сервера в"
|
||||||
|
echo " автозапуск; если ЭКЗЕМПЛЯР не указан,"
|
||||||
|
echo " добавляет все экземпляры сервера в автозапуск"
|
||||||
|
echo " --disable [INSTANCE] удаляет указанный ЭКЗЕМПЛЯР сервера из"
|
||||||
|
echo " автозапуска; если ЭКЗЕМПЛЯР не указан,"
|
||||||
|
echo " удаляет все экземпляры сервера из автозапуска"
|
||||||
|
echo " --map-sync [INSTANCE] синхронизирует список сторонних карт в"
|
||||||
|
echo " конфигурационном файле ЭКЗЕМПЛЯРА с"
|
||||||
|
echo " имеющимися файлами сторонних карт; если"
|
||||||
|
echo " ЭКЗЕМПЛЯР не указан, синхронизирует все"
|
||||||
|
echo " экземпляры серверов"
|
||||||
|
echo " --ban-sync TODO: description & implementation"
|
||||||
|
echo " --map-rotate-save TODO: description & implementation"
|
||||||
|
echo " --map-rotate-load TODO: description & implementation"
|
||||||
echo " -h, --help display this help and exit"
|
echo " -h, --help display this help and exit"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,7 +220,7 @@ function update_kf2 ()
|
|||||||
if ! server_exists; then # First install
|
if ! server_exists; then # First install
|
||||||
chown "root:$SteamUser" "$InstallDir"
|
chown "root:$SteamUser" "$InstallDir"
|
||||||
steamcmd +login $SteamLogin +force_install_dir $InstallDir +app_update $AppNum $BetaArg validate +exit
|
steamcmd +login $SteamLogin +force_install_dir $InstallDir +app_update $AppNum $BetaArg validate +exit
|
||||||
mkdir "$InstanceConfigDir" && chown "$SteamUser:$SteamUser" "$InstanceConfigDir"
|
mkdir "$InstanceConfigDir" "$CustomMapsDir" && chown -R "$SteamUser:$SteamUser" "$InstallDir/KFGame"
|
||||||
ln -s "$InstanceConfigDir" "$InstanceConfigLnk"
|
ln -s "$InstanceConfigDir" "$InstanceConfigLnk"
|
||||||
elif updates_aviable; then # Update
|
elif updates_aviable; then # Update
|
||||||
stop_instance
|
stop_instance
|
||||||
@ -290,13 +310,34 @@ function run ()
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function map_sync ()
|
function map_sync () # $1: [InstanceName]
|
||||||
{
|
{
|
||||||
# TODO: implementation
|
local Instance="$1"
|
||||||
# подсмотреть в скрипте старого серва
|
if [[ -n "$Instance" ]]; then
|
||||||
# либо забить хер и перевести всё на steamworkshop
|
if instance_exists "$Instance"; then
|
||||||
# последний вариант наверное даже правильнее
|
stop_instance "$Instance"
|
||||||
echo "Dummy..."
|
local Config="$InstanceConfigDir/$Instance/LinuxServer-KFGame.ini"
|
||||||
|
for MapFile in $(find "$CustomMapsDir" -type f -name '*.kfm' -printf "%f\n")
|
||||||
|
do
|
||||||
|
MapName=$(echo "$MapFile" | grep -Po '([^\/]*).kfm')
|
||||||
|
if [[ ! -f "$Config" ]]; then
|
||||||
|
echo "$Config does not exist!"
|
||||||
|
elif grep -qP "MapName=$MapName[ $]" "$Config"; then
|
||||||
|
echo "$MapName is already in $Config."
|
||||||
|
else
|
||||||
|
echo "Adding $MapName to $Config."
|
||||||
|
echo -e "\n[$MapName KFMapSummary]\nMapName=$MapName" >> "$Config"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "Instance $Instance not exitst"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
for Instance in $(show_instances)
|
||||||
|
do
|
||||||
|
map_sync "$Instance"
|
||||||
|
done
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function ban_sync ()
|
function ban_sync ()
|
||||||
@ -330,7 +371,7 @@ case $1 in
|
|||||||
--stop ) if [[ "$EUID" -eq 0 ]]; then stop_instance "$2"; else run_as_root $@; fi;;
|
--stop ) if [[ "$EUID" -eq 0 ]]; then stop_instance "$2"; else run_as_root $@; fi;;
|
||||||
--enable ) if [[ "$EUID" -eq 0 ]]; then enable_instance "$2"; else run_as_root $@; fi;;
|
--enable ) if [[ "$EUID" -eq 0 ]]; then enable_instance "$2"; else run_as_root $@; fi;;
|
||||||
--disable ) if [[ "$EUID" -eq 0 ]]; then disable_instance "$2"; else run_as_root $@; fi;;
|
--disable ) if [[ "$EUID" -eq 0 ]]; then disable_instance "$2"; else run_as_root $@; fi;;
|
||||||
--map-sync ) map_sync; ;;
|
--map-sync ) if [[ "$EUID" -eq 0 ]]; then map_sync "$2"; else run_as_root $@; fi;;
|
||||||
--ban-sync ) ban_sync; ;;
|
--ban-sync ) ban_sync; ;;
|
||||||
--map-rotate-save ) map_rotate_save; ;;
|
--map-rotate-save ) map_rotate_save; ;;
|
||||||
--map-rotate-load ) map_rotate_load; ;;
|
--map-rotate-load ) map_rotate_load; ;;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
Name: kf2-srv
|
Name: kf2-srv
|
||||||
Version: 0.1.0
|
Version: 0.2.0
|
||||||
Release: 1%{dist}
|
Release: 1%{dist}
|
||||||
Summary: Killing Floor 2 server
|
Summary: Killing Floor 2 server
|
||||||
Group: Amusements/Games
|
Group: Amusements/Games
|
||||||
@ -75,5 +75,8 @@ if [[ $1 -eq 0 ]] ; then # Uninstall
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Sep 16 2019 GenZmeY <genzmey@gmail.com> - 0.2.0-1
|
||||||
|
- Add --map-sync implementation to kf2-srv.
|
||||||
|
|
||||||
* Sat Sep 14 2019 GenZmeY <genzmey@gmail.com> - 0.1.0-1
|
* Sat Sep 14 2019 GenZmeY <genzmey@gmail.com> - 0.1.0-1
|
||||||
- First version of spec.
|
- First version of spec.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user