Compare commits

...

3 Commits

Author SHA1 Message Date
713b23a666 fix: firewalld service 2020-07-09 22:25:09 +03:00
5e2fb911ed add TODO list 2020-07-09 02:06:51 +03:00
3eb78094ea Wed Jul 8 2020 2020-07-09 02:06:14 +03:00
8 changed files with 139 additions and 11 deletions

28
SOURCES/kf2-srv Executable file → Normal file
View File

@ -29,7 +29,7 @@ source /etc/kf2-srv/kf2-srv.conf
ScriptFullname=$(readlink -e "$0")
ScriptName=$(echo "$ScriptFullname" | awk -F '/' '{print $NF;}')
readonly ScriptVersion="0.10.1"
readonly ScriptVersion="0.11.1"
# Constants. Don't change.
readonly AppServerNum="232130"
@ -247,6 +247,16 @@ function new_instance () # $*: InstanceName[s]
multini -s "$InstanceDir/main.conf" '' 'PortQuery' "$MaxQueryPort"
multini -s "$InstanceDir/main.conf" '' 'PortWeb' "$MaxWebAdminPort"
multini -s "$InstanceDir/KFWeb.ini" "IpDrv.WebServer" "bEnabled" "true"
multini -s "$InstanceDir/LinuxServer-KFEngine.ini" "LogFiles" "PurgeLogsDays" "0"
multini -s "$InstanceDir/LinuxServer-KFEngine.ini" "LogFiles" "LogTimes" "False"
multini -s "$InstanceDir/KFWebAdmin.ini" "WebAdmin.WebAdmin" "AuthenticationClass" "WebAdmin.MultiWebAdminAuth"
multini -s "$InstanceDir/KFWebAdmin.ini" "WebAdmin.WebAdmin" "bHttpAuth" "True"
multini -s "$InstanceDir/KFWebAdmin.ini" "WebAdmin.Chatlog" "Filename" "$Instance-chat"
multini -s "$InstanceDir/KFWebAdmin.ini" "WebAdmin.Chatlog" "bIncludeTimeStamp" "True"
# LOGGING?: LinuxServer-KFGame.ini bLog*
echo "Instance $Instance created. See /etc/$ScriptName/instances$BetaPostfix/$Instance for edit configuration"
done
}
@ -480,6 +490,9 @@ function first_install ()
exit 1
fi
rm -rf "$LogDir"
ln -s "/var/log/kf2-srv$BetaPostfix" "$LogDir"
echo "Creating base ini files"
sudo -u "$SteamUser" $AppBin &> /dev/null &
while true
@ -501,6 +514,9 @@ function first_install ()
killall -KILL KFGameSteamServer.bin.x86_64; sleep 1
echo "Setting up WebAdmin"
multini -s "$DefaultConfigDir/KFWeb.ini" "IpDrv.WebServer" "bEnabled" "true"
multini -s "$DefaultConfigDir/LinuxServer-KFEngine.ini" "LogFiles" "PurgeLogsDays" "0"
multini -s "$DefaultConfigDir/LinuxServer-KFEngine.ini" "LogFiles" "LogTimes" "False"
sudo -u "$SteamUser" $AppBin &> /dev/null &
while true
do
@ -511,7 +527,10 @@ function first_install ()
done
killall -KILL KFGameSteamServer.bin.x86_64; sleep 1
multini -s "$DefaultConfigDir/KFWebAdmin.ini" "WebAdmin.WebAdmin" "AuthenticationClass" "WebAdmin.MultiWebAdminAuth"
multini -s "$DefaultConfigDir/KFWebAdmin.ini" "WebAdmin.WebAdmin" "bHttpAuth" "True"
multini -s "$DefaultConfigDir/KFWebAdmin.ini" "WebAdmin.WebAdmin" "bHttpAuth" "True"
multini -s "$DefaultConfigDir/KFWebAdmin.ini" "WebAdmin.WebAdmin" "bChatLog" "True"
multini -s "$DefaultConfigDir/KFWebAdmin.ini" "WebAdmin.Chatlog" "Filename" "default-chat"
multini -s "$DefaultConfigDir/KFWebAdmin.ini" "WebAdmin.Chatlog" "bIncludeTimeStamp" "True"
echo "Wait while WebAdmin up"
sudo -u "$SteamUser" $AppBin &> /dev/null &
@ -804,9 +823,7 @@ function workshop_del () # $*: WorkshopID[s]
local WsName=$(name_by_workshopID "$WorkshopID")
local Cache="$CacheDir/$WorkshopID"
local Downl="$DownloadDir/$WorkshopID"
echo -e "Clear cache:
$Cache
$Downl"
echo -e "Clear cache:\n$Cache\n$Downl"
rm -rf "$Cache" "$Downl"
for Instance in $(show_instances)
do
@ -1221,6 +1238,7 @@ AppBin="$InstallDir/Binaries/Win64/KFGameSteamServer.bin.x86_64"
DefaultConfigDir="$InstallDir/KFGame/Config"
DownloadDir="$InstallDir/Binaries/Win64/steamapps/workshop/content/$AppClientNum"
CacheDir="$InstallDir/KFGame/Cache"
LogDir="$InstallDir/KFGame/Logs"
InstanceConfigDir="/etc/kf2-srv/instances$BetaPostfix"
InstanceConfigLnk="$DefaultConfigDir/instances"
MainConfigTemplate="/etc/kf2-srv/main.conf.template"

View File

@ -5,8 +5,9 @@ Description=Killing Floor 2 Beta Server Daemon - %i
User=steam
Group=steam
Type=simple
StandardOutput=null
StandardError=null
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=kf2-srv-beta/%i
EnvironmentFile=/etc/kf2-srv/instances-beta/%i/main.conf
ExecStart=/usr/games/kf2-srv-beta/Binaries/Win64/KFGameSteamServer.bin.x86_64 ${Map}?Difficulty=${Difficulty}?GameLength=${Length}?Game=${Game}?Mutator=${Mutators}?${Args} configsubdir=instances/%i -webadminport=${PortWeb} -queryport=${PortQuery} -port=${PortGame}
Restart=always

View File

@ -3,7 +3,7 @@
<short>kf2-srv</short>
<description>Killing Floor 2 server</description>
<port protocol="udp" port="7777"/>
<port protocol="udp" port="27015">
<port protocol="udp" port="27015"/>
<port protocol="tcp" port="8080"/>
<port protocol="udp" port="20560"/>
<port protocol="udp" port="123"/>

View File

@ -5,8 +5,9 @@ Description=Killing Floor 2 Server Daemon - %i
User=steam
Group=steam
Type=simple
StandardOutput=null
StandardError=null
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=kf2-srv/%i
EnvironmentFile=/etc/kf2-srv/instances/%i/main.conf
ExecStart=/usr/games/kf2-srv/Binaries/Win64/KFGameSteamServer.bin.x86_64 ${Map}?Difficulty=${Difficulty}?GameLength=${Length}?Game=${Game}?Mutator=${Mutators}?${Args} configsubdir=instances/%i -webadminport=${PortWeb} -queryport=${PortQuery} -port=${PortGame}
Restart=always

16
SOURCES/logrotate-kf2-srv Normal file
View File

@ -0,0 +1,16 @@
/var/log/kf2-srv/*.log
/var/log/kf2-srv-beta/*.log
{
daily
missingok
rotate 7
create 0644
missingok
compress
notifempty
postrotate
test -s /run/rsyslogd.pid && kill -HUP $(cat /run/rsyslogd.pid)
# postrotate script should always return 0
true
endscript
}

View File

@ -0,0 +1,8 @@
global(parser.permitSlashInProgramName="on")
$template NAMED_LOG,"/var/log/%programname%.log"
$FileCreateMode 0644
$Umask 0022
if $programname startswith 'kf2-srv' then ?NAMED_LOG
& stop

View File

@ -1,7 +1,7 @@
%global steamuser steam
Name: kf2-srv
Version: 0.10.1
Version: 0.11.1
Release: 1%{dist}
Summary: Killing Floor 2 server
Group: Amusements/Games
@ -20,6 +20,8 @@ Source9: %{name}-beta-update.service
Source10: %{name}-beta-update.timer
Source11: %{name}.conf
Source12: COPYING
Source13: rsyslog-%{name}.conf
Source14: logrotate-%{name}
Requires: systemd >= 219
Requires: steamcmd
@ -34,6 +36,8 @@ Requires: sudo
Requires: psmisc
Requires: gawk
Requires: multini >= 0.2.3
Requires: rsyslog >= 8.25.0
Requires: logrotate
Provides: %{name}
@ -53,9 +57,13 @@ install -d %{buildroot}/%{_prefix}/lib/firewalld/services
install -d %{buildroot}/%{_sysconfdir}/%{name}/instances
install -d %{buildroot}/%{_sysconfdir}/%{name}/instances-beta
install -d %{buildroot}/%{_sysconfdir}/%{name}/mapcycles
install -d %{buildroot}/%{_sysconfdir}/rsyslog.d
install -d %{buildroot}/%{_sysconfdir}/logrotate.d
install -d %{buildroot}/%{_prefix}/games/%{name}
install -d %{buildroot}/%{_prefix}/games/%{name}-beta
install -d %{buildroot}/%{_datadir}/licenses/%{name}
install -d %{buildroot}/%{_localstatedir}/log/%{name}
install -d %{buildroot}/%{_localstatedir}/log/%{name}-beta
# access rights are used here to prevent warnings when building the package
install -m 755 %{SOURCE1} %{buildroot}/%{_bindir}
@ -70,6 +78,8 @@ install -m 644 %{SOURCE9} %{buildroot}/%{_prefix}/lib/systemd/system
install -m 644 %{SOURCE10} %{buildroot}/%{_prefix}/lib/systemd/system
install -m 644 %{SOURCE11} %{buildroot}/%{_sysconfdir}/%{name}
install -m 644 %{SOURCE12} %{buildroot}/%{_datadir}/licenses/%{name}
install -m 644 %{SOURCE13} %{buildroot}/%{_sysconfdir}/rsyslog.d/%{name}.conf
install -m 644 %{SOURCE14} %{buildroot}/%{_sysconfdir}/logrotate.d/%{name}
%clean
rm -rf $RPM_BUILD_ROOT
@ -81,6 +91,8 @@ rm -rf $RPM_BUILD_ROOT
%attr(775,root,%{steamuser}) %dir %{_sysconfdir}/%{name}/instances
%attr(775,root,%{steamuser}) %dir %{_sysconfdir}/%{name}/instances-beta
%attr(775,root,%{steamuser}) %dir %{_sysconfdir}/%{name}/mapcycles
%attr(775,root,%{steamuser}) %dir %{_localstatedir}/log/%{name}
%attr(775,root,%{steamuser}) %dir %{_localstatedir}/log/%{name}-beta
%attr(644,root,%{steamuser}) %config(noreplace) %{_sysconfdir}/%{name}/main.conf.template
%attr(644,root,%{steamuser}) %config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
%attr(644,root,root) %config(noreplace) %{_prefix}/lib/firewalld/services/%{name}.xml
@ -88,6 +100,8 @@ rm -rf $RPM_BUILD_ROOT
%attr(755,root,root) %{_bindir}/%{name}-beta
%attr(644,root,root) %{_prefix}/lib/systemd/system/*
%attr(644,root,root) %doc %{_datadir}/licenses/%{name}/*
%attr(644,root,root) %{_sysconfdir}/rsyslog.d/%{name}.conf
%attr(644,root,root) %{_sysconfdir}/logrotate.d/%{name}
%preun
if [[ $1 -eq 0 ]] ; then # Uninstall
@ -99,7 +113,17 @@ if [[ $1 -eq 0 ]] ; then # Uninstall
rm -rf %{_sysconfdir}/%{name}/instances-beta/default
fi
%post
systemctl daemon-reload
systemctl restart rsyslog.service
%changelog
* Thu Jul 9 2020 GenZmeY <genzmey@gmail.com> - 0.11.1-1
- fix syntax error in firewalld service.
* Wed Jul 8 2020 GenZmeY <genzmey@gmail.com> - 0.11.0-1
- logging (rsyslog + logrotate).
* Wed Jul 8 2020 GenZmeY <genzmey@gmail.com> - 0.10.1-1
- add COPYING to distributive;
- add license info to kf2-srv-beta;

60
TODO Normal file
View File

@ -0,0 +1,60 @@
- selinux
- sudo for steamuser
- kick by level
- split the script into separate files
- man pages
- english help
- ban history
- temporary ban
- understand what causes a "cpu hurricane" at startup
- generate unique password for server bot on install
- parallel actions
- bash completion
###################
Split scheme:
game
update
validate
fix-permissions
run
help
instance
list
new
delete
enable
disable
start
stop
restart
chat
help
ban
list
add
delete
sync
help
workshop
list
add
delete
sync
help
password
game
admin
help
maprotate
save
load
help
help h -h --help