Merge branch 'release/v23.5.0'

This commit is contained in:
Daniel Gibbs 2023-09-10 20:12:49 +01:00
commit fc36dc9526
No known key found for this signature in database
GPG Key ID: 2076B128385E8C55
123 changed files with 876 additions and 764 deletions

View File

@ -5,7 +5,7 @@ on:
push:
concurrency:
group: ${{ github.ref_name }}
group: details-check-${{ github.ref_name }}
cancel-in-progress: true
jobs:

48
.github/workflows/update-check.yml vendored Normal file
View File

@ -0,0 +1,48 @@
name: Update Check
# This action will check that LinuxGSM is picking up game server config and parameter variables.
on:
workflow_dispatch:
push:
concurrency:
group: update-check-${{ github.ref_name }}
cancel-in-progress: true
jobs:
update-check:
continue-on-error: true
runs-on: ubuntu-latest
strategy:
matrix:
shortname: [css, fctr, jk2, mc, mcb, mta, pmc, ts3, ut99, vints]
steps:
- name: Download linuxgsm.sh
run: wget https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/${GITHUB_REF#refs/heads/}/linuxgsm.sh; chmod +x linuxgsm.sh
- name: Install dependencies
run: sudo dpkg --add-architecture i386; sudo apt-get update;
- name: Grab server
run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./linuxgsm.sh ${{ matrix.shortname }}server
- name: Enable developer mode
run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./${{ matrix.shortname }}server developer
- name: Insert steamuser
if: matrix.shortname == 'jk2'
run: echo -e "steamuser=\"${{ secrets.STEAMCMD_USER }}\"\nsteampass='${{ secrets.STEAMCMD_PASS }}'" > lgsm/config-lgsm/${{ matrix.shortname }}server/common.cfg
- name: Install server
run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./${{ matrix.shortname }}server auto-install
- name: Check Update server
run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./${{ matrix.shortname }}server check-update
- name: Update server
run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./${{ matrix.shortname }}server update
- name: Force Update server
if: matrix.shortname == 'css'
run: LGSM_GITHUBBRANCH="${GITHUB_REF#refs/heads/}" ./${{ matrix.shortname }}server force-update

View File

@ -1,7 +1,7 @@
<p align="center">
<a href="https://linuxgsm.com"><img src="https://i.imgur.com/Eoh1jsi.jpg" alt="LinuxGSM">
<a href="https://www.codacy.com/gh/GameServerManagers/LinuxGSM/dashboard"><img src="https://img.shields.io/codacy/grade/d19c5234dc3743d8a8a14093711ca52d?style=flat-square&logo=codacy&logoColor=white" alt="Codacy grade"></a>
<img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/GameServerManagers/LinuxGSM/git-sync.yml?color=0052CC&logo=bitbucket&style=flat-square">
<a href="https://bitbucket.org/GameServerManagers/linuxgsm"><img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/GameServerManagers/LinuxGSM/git-sync.yml?color=0052CC&logo=bitbucket&style=flat-square"></a>
<a href="https://linuxgsm.com/discord"><img alt="Discord" src="https://img.shields.io/discord/127498813903601664?color=5865F2&label=%20&logo=discord&logoColor=ffffff&style=flat-square"></a>
<a href="https://developer.valvesoftware.com/wiki/SteamCMD"><img src="https://img.shields.io/badge/SteamCMD-000000?style=flat-square&amp;logo=Steam&amp;logoColor=white" alt="SteamCMD"></a>
<a href="https://github.com/GameServerManagers/LinuxGSM/blob/main/LICENSE"><img src="https://img.shields.io/github/license/gameservermanagers/LinuxGSM?style=flat-square" alt="MIT License"></a>
@ -11,7 +11,7 @@
## Hassle-Free Dedicated Game Servers
Traditionally game servers are not easy to manage yourself. Admins often have to spend hours messing around trying to get their server working. LinuxGSM is a command-line tool designed to be as simple as possible, allowing admins to spend less time on management and more time gaming.
Traditionally game servers are not easy to manage yourself. Admins often have to spend hours messing around trying to get their servers working. LinuxGSM is a command-line tool designed to be as simple as possible, allowing admins to spend less time on management and more time gaming.
## Main features
@ -45,12 +45,12 @@ Documentation is found at [linuxgsm.com](https://linuxgsm.com) and [docs.linuxgs
## :question: Support
There are various ways to get support, check out the [support](https://linuxgsm.com/support/) page to the right support.
There are various ways to get support, check out the [support](https://linuxgsm.com/support/) page for the right support.
## :heart: Sponsor
If you would like to [sponsor](https://linuxgsm.com/sponsor) to the project there are several ways you can, via [GitHub Sponsors](https://github.com/sponsors/dgibbs64) and [PayPal](https://www.paypal.me/dgibbs64). I would like to thank everyone who sponsors me. Since 2012 LinuxGSM has been steadily growing with new servers, features and improvements added regularly.
If you would like to [sponsor](https://linuxgsm.com/sponsor) to the project there are several ways you can, via [GitHub Sponsors](https://github.com/sponsors/dgibbs64) and [PayPal](https://www.paypal.me/dgibbs64). I would like to thank everyone who sponsors me. Since 2012 LinuxGSM has been steadily growing with new servers, features, and improvements added regularly.
## Contributors
## 🧙‍♂️ Contributors
A big thank you goes to all the wonderful people who contribute ideas, code, docs and support to this project.
A big thank you goes to all the wonderful people who contribute ideas, code, docs, and support to this project.

View File

@ -19,7 +19,7 @@ altsavedirectoryname="${defaultmap}"
maxplayers="70"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
startparameters="${defaultmap}?AltSaveDirectoryName=${altsavedirectoryname}?listen?MultiHome=${ip}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port} -automanagedmods -crossplay -PublicIPForEpic=${ip}"
startparameters="${defaultmap}?AltSaveDirectoryName=${altsavedirectoryname}?listen?MultiHome=${ip}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port} -automanagedmods -crossplay -PublicIPForEpic=${publicip}"
#### LinuxGSM Settings ####

View File

@ -14,7 +14,7 @@ port="7777"
queryport="7780"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
startparameters="/Game/Maps/Final_Maps/Derailed?Game=/Script/ShooterGame.WartideGameMode?listen -log -broadcastip=\"${extip}\" -PORT=${port} -QueryPort=${queryport} -defgameini=\"${servercfgfullpath}\""
startparameters="/Game/Maps/Final_Maps/Derailed?Game=/Script/ShooterGame.WartideGameMode?listen -log -broadcastip=\"${publicip}\" -PORT=${port} -QueryPort=${queryport} -defgameini=\"${servercfgfullpath}\""
#### LinuxGSM Settings ####

View File

@ -19,9 +19,14 @@ defaultmap="Canyon"
defaultscenario="Scenario_Crossing_Push_Security"
maxplayers="28"
## Game Server Login Token (GSLT): Optional
# GSLT can be used for running a public server.
# More info: https://docs.linuxgsm.com/steamcmd/gslt
gslt=""
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
## Parameter Docs | https://mod.io/g/insurgencysandstorm/r/server-admin-guide
startparameters="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers} -Port=${port} -QueryPort=${queryport} -hostname='${servername}' -Rcon -RconPassword=${rconpassword} -RconListenPort=${rconport} -log"
startparameters="${defaultmap}?Scenario=${defaultscenario}?MaxPlayers=${maxplayers} -Port=${port} -QueryPort=${queryport} -hostname='${servername}' -Rcon -RconPassword=${rconpassword} -RconListenPort=${rconport} -GSLTToken=${gslt} -log"
#### LinuxGSM Settings ####
@ -127,7 +132,7 @@ steamcmdforcewindows="no"
branch=""
betapassword=""
# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server
steammaster="false"
steammaster="true"
## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
# 1: tmux kill

View File

@ -155,7 +155,7 @@ consoleinteract="no"
## Game Server Details
# Do not edit
gamename="pstbsserver"
gamename="Post Scriptum"
engine="unreal4"
glibc="2.17"

View File

@ -14,9 +14,11 @@ port="7777"
# Maps: bridge, datacenter, sand
defaultmap="datacenter"
# Get an API key from https://pavlov-ms.vankrupt.com/servers/v1/key
apikey=""
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
startparameters="${defaultmap} -log -MultiHome=${ip} -Port=${port}"
startparameters="Pavlov ${defaultmap} -log -MultiHome=${ip} -Port=${port} ApiKey=${apikey}"
#### LinuxGSM Settings ####
@ -163,7 +165,7 @@ glibc="2.17"
## Game Server Directories
systemdir="${serverfiles}/Pavlov"
executabledir="${systemdir}/Binaries/Linux"
executable="./PavlovServer"
executable="./PavlovServer-Linux-Shipping"
servercfgdir="${systemdir}/Saved/Config/LinuxServer"
servercfg="Game.ini"
servercfgdefault="Game.ini"

View File

@ -10,11 +10,10 @@
## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
ip="0.0.0.0"
javaram="8192" # -Xmx$8192M
adminpassword="CHANGE_ME"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
startparameters="--ip ${ip} -adminpassword \"${adminpassword}\" -servername ${selfname} -Xmx${javaram}M"
startparameters="-servername ${selfname}"
#### LinuxGSM Settings ####

View File

@ -13,6 +13,9 @@ ip="0.0.0.0"
port="27015"
maxplayers="20"
defaultmap="PEI"
servername="LinuxGSM"
perspective="first" # Values: first, third, vehicle, Both.
gamemode="normal" # Values: normal, easy, gold.
## Game Server Login Token (GSLT): Required
# GSLT is required for running a public server.
@ -20,7 +23,7 @@ defaultmap="PEI"
gslt=""
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
startparameters="-nographics -batchmode -bind ${ip} -port ${port} -maxplayers ${maxplayers} -map ${defaultmap} -gslt ${gslt} +InternetServer/${selfname}"
startparameters="-nographics -batchmode -bind ${ip} -port ${port} -maxplayers ${maxplayers} -perspective ${perspective} -mode ${gamemode} -name ${servername} -map ${defaultmap} -gslt ${gslt} +InternetServer/${selfname}"
#### LinuxGSM Settings ####

View File

@ -9,7 +9,7 @@
#### Game Server Settings ####
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
startparameters="--datapath ${servercfgdir}"
startparameters="--dataPath ${servercfgdir}"
## Release Settings | https://docs.linuxgsm.com/game-servers/vintagestory#release-settings
# Branch (stable|unstable)
@ -150,8 +150,8 @@ glibc="2.17"
## Game Server Directories
systemdir="${serverfiles}"
executabledir="${systemdir}"
preexecutable="mono"
executable="./VintagestoryServer.exe"
preexecutable=""
executable="./VintagestoryServer"
servercfgdir="${serverfiles}/data/${selfname}"
servercfg="serverconfig.json"
servercfgdefault="serverconfig.json"

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,java-17-openjdk
pstbs,GConf2
ps,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,java-17-openjdk
vs
wet

1 all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
83 pc
84 pc2
85 pmc,java-17-openjdk
86 pstbs,GConf2 ps,GConf2
87 pvkii
88 pvr,libcxx
89 pz,java-11-openjdk rng-tools
124 ut3
125 ut99
126 vh,glibc-devel
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,java-17-openjdk
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,java-17-openjdk
pstbs,GConf2
ps,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,java-17-openjdk
vs
wet

1 all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python3,tar,tmux,unzip,util-linux,wget,xz
83 pc
84 pc2
85 pmc,java-17-openjdk
86 pstbs,GConf2 ps,GConf2
87 pvkii
88 pvr,libcxx
89 pz,java-11-openjdk rng-tools
124 ut3
125 ut99
126 vh,glibc-devel
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,java-17-openjdk
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,java-11-openjdk
pstbs,GConf2
ps,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,java-11-openjdk
vs
wet

1 all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python3,tar,tmux,unzip,util-linux,wget,xz
83 pc
84 pc2
85 pmc,java-11-openjdk
86 pstbs,GConf2 ps,GConf2
87 pvkii
88 pvr,libcxx
89 pz,java-11-openjdk rng-tools
124 ut3
125 ut99
126 vh,glibc-devel
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,java-11-openjdk
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,java-17-openjdk
pstbs,GConf2
ps,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,java-17-openjdk
vs
wet

1 all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
83 pc
84 pc2
85 pmc,java-17-openjdk
86 pstbs,GConf2 ps,GConf2
87 pvkii
88 pvr,libcxx
89 pz,java-11-openjdk rng-tools
124 ut3
125 ut99
126 vh,glibc-devel
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,java-17-openjdk
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,java-17-openjdk
pstbs,GConf2
ps,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,java-17-openjdk
vs
wet

1 all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python3,tar,tmux,unzip,util-linux,wget,xz
83 pc
84 pc2
85 pmc,java-17-openjdk
86 pstbs,GConf2 ps,GConf2
87 pvkii
88 pvr,libcxx
89 pz,java-11-openjdk rng-tools
124 ut3
125 ut99
126 vh,glibc-devel
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,java-17-openjdk
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,openjdk-11-jre
pstbs,libgconf-2-4
ps,libgconf-2-4
pvkii
pvr,libc++1
pz,openjdk-11-jre,rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,libc6-dev
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,openjdk-11-jre
vs
wet

1 all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,wget,xz-utils
83 pc
84 pc2
85 pmc,openjdk-11-jre
86 pstbs,libgconf-2-4 ps,libgconf-2-4
87 pvkii
88 pvr,libc++1
89 pz,openjdk-11-jre,rng-tools
124 ut3
125 ut99
126 vh,libc6-dev
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,openjdk-11-jre
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,openjdk-17-jre
pstbs,libgconf-2-4
ps,libgconf-2-4
pvkii
pvr,libc++1
pz,openjdk-17-jre,rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,libc6-dev
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,openjdk-11-jre
vs
wet

1 all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,wget,xz-utils
83 pc
84 pc2
85 pmc,openjdk-17-jre
86 pstbs,libgconf-2-4 ps,libgconf-2-4
87 pvkii
88 pvr,libc++1
89 pz,openjdk-17-jre,rng-tools
124 ut3
125 ut99
126 vh,libc6-dev
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,openjdk-11-jre
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,openjdk-17-jre
pstbs,libgconf-2-4
ps,libgconf-2-4
pvkii
pvr,libc++1
pz,openjdk-17-jre,rng-tools5
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,libc6-dev
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,openjdk-17-jre
vs
wet

1 all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat-traditional,python3,tar,tmux,unzip,util-linux,wget,xz-utils
83 pc
84 pc2
85 pmc,openjdk-17-jre
86 pstbs,libgconf-2-4 ps,libgconf-2-4
87 pvkii
88 pvr,libc++1
89 pz,openjdk-17-jre,rng-tools5
124 ut3
125 ut99
126 vh,libc6-dev
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,openjdk-17-jre
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,openjdk-8-jre
pstbs,libgconf-2-4
ps,libgconf-2-4
pvkii
pvr,libc++1
pz,openjdk-8-jre,rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,libc6-dev
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,openjdk-8-jre
vs
wet

1 all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,wget,xz-utils
83 pc
84 pc2
85 pmc,openjdk-8-jre
86 pstbs,libgconf-2-4 ps,libgconf-2-4
87 pvkii
88 pvr,libc++1
89 pz,openjdk-8-jre,rng-tools
124 ut3
125 ut99
126 vh,libc6-dev
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,openjdk-8-jre
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,java-11-openjdk
pstbs,GConf2
ps,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,java-11-openjdk
vs
wet

1 all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
83 pc
84 pc2
85 pmc,java-11-openjdk
86 pstbs,GConf2 ps,GConf2
87 pvkii
88 pvr,libcxx
89 pz,java-11-openjdk rng-tools
124 ut3
125 ut99
126 vh,glibc-devel
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,java-11-openjdk
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,java-17-openjdk
pstbs,GConf2
ps,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,java-17-openjdk
vs
wet

1 all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
83 pc
84 pc2
85 pmc,java-17-openjdk
86 pstbs,GConf2 ps,GConf2
87 pvkii
88 pvr,libcxx
89 pz,java-11-openjdk rng-tools
124 ut3
125 ut99
126 vh,glibc-devel
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,java-17-openjdk
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,java-17-openjdk
pstbs,GConf2
ps,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,java-17-openjdk
vs
wet

1 all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python3,tar,tmux,unzip,util-linux,wget,xz
83 pc
84 pc2
85 pmc,java-17-openjdk
86 pstbs,GConf2 ps,GConf2
87 pvkii
88 pvr,libcxx
89 pz,java-11-openjdk rng-tools
124 ut3
125 ut99
126 vh,glibc-devel
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,java-17-openjdk
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,java-17-openjdk
pstbs,GConf2
ps,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,java-17-openjdk
vs
wet

1 all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
83 pc
84 pc2
85 pmc,java-17-openjdk
86 pstbs,GConf2 ps,GConf2
87 pvkii
88 pvr,libcxx
89 pz,java-11-openjdk rng-tools
124 ut3
125 ut99
126 vh,glibc-devel
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,java-17-openjdk
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,java-17-openjdk
pstbs,GConf2
ps,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,java-17-openjdk
vs
wet

1 all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python3,tar,tmux,unzip,util-linux,wget,xz
83 pc
84 pc2
85 pmc,java-17-openjdk
86 pstbs,GConf2 ps,GConf2
87 pvkii
88 pvr,libcxx
89 pz,java-11-openjdk rng-tools
124 ut3
125 ut99
126 vh,glibc-devel
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,java-17-openjdk
129 vs
130 wet

View File

@ -82,7 +82,7 @@ opfor,opforserver,Opposing Force,ubuntu-22.04
pc,pcserver,Project Cars,ubuntu-22.04
pc2,pc2server,Project Cars 2,ubuntu-22.04
pmc,pmcserver,PaperMC,ubuntu-22.04
pstbs,pstbsserver,Post Scriptum: The Bloody Seventh,ubuntu-22.04
ps,psserver,Post Scriptum,ubuntu-22.04
pvkii,pvkiiserver,Pirates Vikings & Knights II,ubuntu-22.04
pvr,pvrserver,Pavlov VR,ubuntu-22.04
pz,pzserver,Project Zomboid,ubuntu-22.04

1 shortname gameservername gamename os
82 pc pcserver Project Cars ubuntu-22.04
83 pc2 pc2server Project Cars 2 ubuntu-22.04
84 pmc pmcserver PaperMC ubuntu-22.04
85 pstbs ps pstbsserver psserver Post Scriptum: The Bloody Seventh Post Scriptum ubuntu-22.04
86 pvkii pvkiiserver Pirates Vikings & Knights II ubuntu-22.04
87 pvr pvrserver Pavlov VR ubuntu-22.04
88 pz pzserver Project Zomboid ubuntu-22.04

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,openjdk-8-jre
pstbs,libgconf-2-4
ps,libgconf-2-4
pvkii
pvr,libc++1
pz,openjdk-8-jre,rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,libc6-dev
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,openjdk-8-jre
vs
wet

1 all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,wget,xz-utils
83 pc
84 pc2
85 pmc,openjdk-8-jre
86 pstbs,libgconf-2-4 ps,libgconf-2-4
87 pvkii
88 pvr,libc++1
89 pz,openjdk-8-jre,rng-tools
124 ut3
125 ut99
126 vh,libc6-dev
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,openjdk-8-jre
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,openjdk-11-jre
pstbs,libgconf-2-4
ps,libgconf-2-4
pvkii
pvr,libc++1
pz,openjdk-11-jre,rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,libc6-dev
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,openjdk-11-jre
vs
wet

1 all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,wget,xz-utils
83 pc
84 pc2
85 pmc,openjdk-11-jre
86 pstbs,libgconf-2-4 ps,libgconf-2-4
87 pvkii
88 pvr,libc++1
89 pz,openjdk-11-jre,rng-tools
124 ut3
125 ut99
126 vh,libc6-dev
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,openjdk-11-jre
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,openjdk-17-jre
pstbs,libgconf-2-4
ps,libgconf-2-4
pvkii
pvr,libc++1
pz,openjdk-17-jre,rng-tools
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,libc6-dev
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,openjdk-11-jre
vs
wet

1 all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,wget,xz-utils
83 pc
84 pc2
85 pmc,openjdk-17-jre
86 pstbs,libgconf-2-4 ps,libgconf-2-4
87 pvkii
88 pvr,libc++1
89 pz,openjdk-17-jre,rng-tools
124 ut3
125 ut99
126 vh,libc6-dev
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,openjdk-11-jre
129 vs
130 wet

View File

@ -1,135 +0,0 @@
all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,wget,xz-utils
steamcmd,lib32gcc-s1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
ac
ahl
ahl2
ark
arma3
armar,libcurl4
ats
av
bb
bb2,libcurl4-gnutls-dev:i386
bd
bf1942,libncurses5:i386,libtinfo5:i386
bfv,libncurses5:i386,libstdc++5:i386
bmdm,libncurses5:i386
bo
bs
bt,libicu-dev,dos2unix,libxml2-utils
btl
cc
cd
ck,xvfb,libxi6
cmw
cod,libstdc++5:i386
cod2,libstdc++5:i386
cod4
coduo,libstdc++5:i386
codwaw
col
cs
cscz
csgo
css,libtinfo5:i386
ct
dab
dayz
dmc
dod
dodr
dods
doi
dst,libcurl4-gnutls-dev:i386
dys
eco,libgdiplus
em
etl
ets2
fctr
fof
gmod,libtinfo5:i386
hcu
hl2dm
hldm
hldms
hw,lib32z1
ins
inss
ios
jc2
jc3
jk2
kf
kf2
l4d
l4d2
lo
mc,openjdk-17-jre
mcb
mh
mohaa,libstdc++5:i386
mom
mta,libncursesw5,libxml2-utils
nd
nec
nmrih,libtinfo5:i386
ns
ns2,speex,libtbb2
ns2c,speex:i386,libtbb2
ohd
onset,libmariadb-dev
opfor
pc
pc2
pmc,openjdk-17-jre
pstbs,libgconf-2-4
pvkii
pvr,libc++1
pz,openjdk-17-jre,rng-tools
q2
q3
ql
qw
ricochet
ro
rtcw
rust,lib32z1
rw,openjdk-17-jre
samp
sb
sbots
scpsl,mono-complete
scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
sof2
sol
squad
st,libxml2-utils
stn
sven,libssl1.1:i386,zlib1g:i386
terraria
tf2,libcurl4-gnutls-dev:i386
tfc
ti
ts
ts3
tu
tw
unt
ut
ut2k4
ut3
ut99
vh,libc6-dev
vints,mono-complete
vpmc,openjdk-11-jre
vs
wet
wf
wmc,openjdk-17-jre
wurm,xvfb
zmr,libtinfo5:i386
zps,libtinfo5:i386
1 all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,wget,xz-utils
2 steamcmd,lib32gcc-s1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
3 ac
4 ahl
5 ahl2
6 ark
7 arma3
8 armar,libcurl4
9 ats
10 av
11 bb
12 bb2,libcurl4-gnutls-dev:i386
13 bd
14 bf1942,libncurses5:i386,libtinfo5:i386
15 bfv,libncurses5:i386,libstdc++5:i386
16 bmdm,libncurses5:i386
17 bo
18 bs
19 bt,libicu-dev,dos2unix,libxml2-utils
20 btl
21 cc
22 cd
23 ck,xvfb,libxi6
24 cmw
25 cod,libstdc++5:i386
26 cod2,libstdc++5:i386
27 cod4
28 coduo,libstdc++5:i386
29 codwaw
30 col
31 cs
32 cscz
33 csgo
34 css,libtinfo5:i386
35 ct
36 dab
37 dayz
38 dmc
39 dod
40 dodr
41 dods
42 doi
43 dst,libcurl4-gnutls-dev:i386
44 dys
45 eco,libgdiplus
46 em
47 etl
48 ets2
49 fctr
50 fof
51 gmod,libtinfo5:i386
52 hcu
53 hl2dm
54 hldm
55 hldms
56 hw,lib32z1
57 ins
58 inss
59 ios
60 jc2
61 jc3
62 jk2
63 kf
64 kf2
65 l4d
66 l4d2
67 lo
68 mc,openjdk-17-jre
69 mcb
70 mh
71 mohaa,libstdc++5:i386
72 mom
73 mta,libncursesw5,libxml2-utils
74 nd
75 nec
76 nmrih,libtinfo5:i386
77 ns
78 ns2,speex,libtbb2
79 ns2c,speex:i386,libtbb2
80 ohd
81 onset,libmariadb-dev
82 opfor
83 pc
84 pc2
85 pmc,openjdk-17-jre
86 pstbs,libgconf-2-4
87 pvkii
88 pvr,libc++1
89 pz,openjdk-17-jre,rng-tools
90 q2
91 q3
92 ql
93 qw
94 ricochet
95 ro
96 rtcw
97 rust,lib32z1
98 rw,openjdk-17-jre
99 samp
100 sb
101 sbots
102 scpsl,mono-complete
103 scpslsm,mono-complete
104 sdtd,telnet,expect,libxml2-utils
105 sf
106 sfc,libtinfo5:i386
107 sof2
108 sol
109 squad
110 st,libxml2-utils
111 stn
112 sven,libssl1.1:i386,zlib1g:i386
113 terraria
114 tf2,libcurl4-gnutls-dev:i386
115 tfc
116 ti
117 ts
118 ts3
119 tu
120 tw
121 unt
122 ut
123 ut2k4
124 ut3
125 ut99
126 vh,libc6-dev
127 vints,mono-complete
128 vpmc,openjdk-11-jre
129 vs
130 wet
131 wf
132 wmc,openjdk-17-jre
133 wurm,xvfb
134 zmr,libtinfo5:i386
135 zps,libtinfo5:i386

View File

@ -1,135 +0,0 @@
all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,wget,xz-utils
steamcmd,lib32gcc-s1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
ac
ahl
ahl2
ark
arma3
armar,libcurl4
ats
av
bb
bb2,libcurl4-gnutls-dev:i386
bd
bf1942,libncurses5:i386,libtinfo5:i386
bfv,libncurses5:i386,libstdc++5:i386
bmdm,libncurses5:i386
bo
bs
bt,libicu-dev,dos2unix,libxml2-utils
btl
cc
cd
ck,xvfb,libxi6
cmw
cod,libstdc++5:i386
cod2,libstdc++5:i386
cod4
coduo,libstdc++5:i386
codwaw
col
cs
cscz
csgo
css,libtinfo5:i386
ct
dab
dayz
dmc
dod
dodr
dods
doi
dst,libcurl4-gnutls-dev:i386
dys
eco,libgdiplus
em
etl
ets2
fctr
fof
gmod,libtinfo5:i386
hcu
hl2dm
hldm
hldms
hw,lib32z1
ins
inss
ios
jc2
jc3
jk2
kf
kf2
l4d
l4d2
lo
mc,openjdk-17-jre
mcb
mh
mohaa,libstdc++5:i386
mom
mta,libncursesw5,libxml2-utils
nd
nec
nmrih,libtinfo5:i386
ns
ns2,speex,libtbb2
ns2c,speex:i386,libtbb2
ohd
onset,libmariadb-dev
opfor
pc
pc2
pmc,openjdk-17-jre
pstbs,libgconf-2-4
pvkii
pvr,libc++1
pz,openjdk-17-jre,rng-tools
q2
q3
ql
qw
ricochet
ro
rtcw
rust,lib32z1
rw,openjdk-17-jre
samp
sb
sbots
scpsl,mono-complete
scpslsm,mono-complete
sdtd,telnet,expect,libxml2-utils
sf
sfc,libtinfo5:i386
sof2
sol
squad
st,libxml2-utils
stn
sven,libssl1.1:i386,zlib1g:i386
terraria
tf2,libcurl4-gnutls-dev:i386
tfc
ti
ts
ts3
tu
tw
unt
ut
ut2k4
ut3
ut99
vh,libc6-dev
vints,mono-complete
vpmc,openjdk-11-jre
vs
wet
wf
wmc,openjdk-17-jre
wurm,xvfb
zmr,libtinfo5:i386
zps,libtinfo5:i386
1 all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,wget,xz-utils
2 steamcmd,lib32gcc-s1,lib32stdc++6,libsdl2-2.0-0:i386,steamcmd
3 ac
4 ahl
5 ahl2
6 ark
7 arma3
8 armar,libcurl4
9 ats
10 av
11 bb
12 bb2,libcurl4-gnutls-dev:i386
13 bd
14 bf1942,libncurses5:i386,libtinfo5:i386
15 bfv,libncurses5:i386,libstdc++5:i386
16 bmdm,libncurses5:i386
17 bo
18 bs
19 bt,libicu-dev,dos2unix,libxml2-utils
20 btl
21 cc
22 cd
23 ck,xvfb,libxi6
24 cmw
25 cod,libstdc++5:i386
26 cod2,libstdc++5:i386
27 cod4
28 coduo,libstdc++5:i386
29 codwaw
30 col
31 cs
32 cscz
33 csgo
34 css,libtinfo5:i386
35 ct
36 dab
37 dayz
38 dmc
39 dod
40 dodr
41 dods
42 doi
43 dst,libcurl4-gnutls-dev:i386
44 dys
45 eco,libgdiplus
46 em
47 etl
48 ets2
49 fctr
50 fof
51 gmod,libtinfo5:i386
52 hcu
53 hl2dm
54 hldm
55 hldms
56 hw,lib32z1
57 ins
58 inss
59 ios
60 jc2
61 jc3
62 jk2
63 kf
64 kf2
65 l4d
66 l4d2
67 lo
68 mc,openjdk-17-jre
69 mcb
70 mh
71 mohaa,libstdc++5:i386
72 mom
73 mta,libncursesw5,libxml2-utils
74 nd
75 nec
76 nmrih,libtinfo5:i386
77 ns
78 ns2,speex,libtbb2
79 ns2c,speex:i386,libtbb2
80 ohd
81 onset,libmariadb-dev
82 opfor
83 pc
84 pc2
85 pmc,openjdk-17-jre
86 pstbs,libgconf-2-4
87 pvkii
88 pvr,libc++1
89 pz,openjdk-17-jre,rng-tools
90 q2
91 q3
92 ql
93 qw
94 ricochet
95 ro
96 rtcw
97 rust,lib32z1
98 rw,openjdk-17-jre
99 samp
100 sb
101 sbots
102 scpsl,mono-complete
103 scpslsm,mono-complete
104 sdtd,telnet,expect,libxml2-utils
105 sf
106 sfc,libtinfo5:i386
107 sof2
108 sol
109 squad
110 st,libxml2-utils
111 stn
112 sven,libssl1.1:i386,zlib1g:i386
113 terraria
114 tf2,libcurl4-gnutls-dev:i386
115 tfc
116 ti
117 ts
118 ts3
119 tu
120 tw
121 unt
122 ut
123 ut2k4
124 ut3
125 ut99
126 vh,libc6-dev
127 vints,mono-complete
128 vpmc,openjdk-11-jre
129 vs
130 wet
131 wf
132 wmc,openjdk-17-jre
133 wurm,xvfb
134 zmr,libtinfo5:i386
135 zps,libtinfo5:i386

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,openjdk-17-jre
pstbs,libgconf-2-4
ps,libgconf-2-4
pvkii
pvr,libc++1
pz,openjdk-17-jre,rng-tools5
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,libc6-dev
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,openjdk-17-jre
vs
wet

1 all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,wget,xz-utils
83 pc
84 pc2
85 pmc,openjdk-17-jre
86 pstbs,libgconf-2-4 ps,libgconf-2-4
87 pvkii
88 pvr,libc++1
89 pz,openjdk-17-jre,rng-tools5
124 ut3
125 ut99
126 vh,libc6-dev
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,openjdk-17-jre
129 vs
130 wet

View File

@ -83,7 +83,7 @@ opfor
pc
pc2
pmc,openjdk-17-jre
pstbs,libgconf-2-4
ps,libgconf-2-4
pvkii
pvr,libc++1
pz,openjdk-17-jre,rng-tools5
@ -124,7 +124,7 @@ ut2k4
ut3
ut99
vh,libc6-dev
vints,mono-complete
vints,aspnetcore-runtime-7.0
vpmc,openjdk-17-jre
vs
wet

1 all,bc,binutils,bsdmainutils,bzip2,ca-certificates,cpio,curl,distro-info,file,gzip,hostname,jq,lib32gcc-s1,lib32stdc++6,netcat,python3,tar,tmux,unzip,util-linux,wget,xz-utils
83 pc
84 pc2
85 pmc,openjdk-17-jre
86 pstbs,libgconf-2-4 ps,libgconf-2-4
87 pvkii
88 pvr,libc++1
89 pz,openjdk-17-jre,rng-tools5
124 ut3
125 ut99
126 vh,libc6-dev
127 vints,mono-complete vints,aspnetcore-runtime-7.0
128 vpmc,openjdk-17-jre
129 vs
130 wet

View File

@ -72,6 +72,15 @@ fn_alert_check_update() {
alertbody="${gamename} update available: ${remotebuildversion}"
}
fn_alert_update_restart() {
fn_script_log_info "Sending alert: Restarted"
alertsubject="Alert - ${selfname} - Restarted"
alertemoji="🎮"
alertsound="1"
alerturl="not enabled"
alertbody="${gamename} received update: ${remotebuildversion} and required restarting"
}
fn_alert_permissions() {
fn_script_log_info "Sending alert: Permissions error"
alertsubject="Alert - ${selfname}: Permissions error"
@ -102,6 +111,8 @@ elif [ "${alert}" == "update" ]; then
fn_alert_update
elif [ "${alert}" == "check-update" ]; then
fn_alert_check_update
elif [ "${alert}" == "update-restart" ]; then
fn_alert_update_restart
elif [ "${alert}" == "config" ]; then
fn_alert_config
fi

View File

@ -7,6 +7,19 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_install_dotnet_repo() {
if [ "${distroid}" == "ubuntu" ]; then
# if package aspnetcore-runtime-7.0 is unavailable in ubuntu repos, add the microsoft repo.
if ! apt-cache show aspnetcore-runtime-7.0 > /dev/null 2>&1; then
fn_fetch_file "https://packages.microsoft.com/config/ubuntu/${distroversion}/packages-microsoft-prod.deb" "" "" "" "/tmp" "packages-microsoft-prod.deb" "" "" "" ""
sudo dpkg -i /tmp/packages-microsoft-prod.deb
fi
elif [ "${distroid}" == "debian" ]; then
fn_fetch_file "https://packages.microsoft.com/config/debian/${distroversion}/packages-microsoft-prod.deb" "" "" "" "/tmp" "packages-microsoft-prod.deb" "" "" "" ""
sudo dpkg -i /tmp/packages-microsoft-prod.deb
fi
}
fn_install_mono_repo() {
if [ "${autodepinstall}" == "0" ]; then
fn_print_information_nl "Automatically adding Mono repository."
@ -19,20 +32,26 @@ fn_install_mono_repo() {
sleep 1
echo -en " \r"
if [ "${distroid}" == "ubuntu" ]; then
if [ "${distroversion}" == "20.04" ]; then
cmd="sudo apt install gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/ubuntu stable-focal main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
if [ "${distroversion}" == "22.04" ]; then
cmd="sudo apt-get install gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/ubuntu stable-jammy main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
elif [ "${distroversion}" == "20.04" ]; then
cmd="sudo apt-get install gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/ubuntu stable-focal main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
elif [ "${distroversion}" == "18.04" ]; then
cmd="sudo apt install gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/ubuntu stable-bionic main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
cmd="sudo apt-get install gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/ubuntu stable-bionic main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
elif [ "${distroversion}" == "16.04" ]; then
cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt install apt-transport-https ca-certificates;echo 'deb https://download.mono-project.com/repo/ubuntu stable-xenial main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
else
monoautoinstall="1"
fi
elif [ "${distroid}" == "debian" ]; then
if [ "${distroversion}" == "10" ]; then
cmd="sudo apt install apt-transport-https dirmngr gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-buster main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
if [ "${distroversion}" == "12" ]; then
cmd="sudo apt-get install apt-transport-https dirmngr gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-bookworm main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
elif [ "${distroversion}" == "11" ]; then
cmd="sudo apt-get install apt-transport-https dirmngr gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-bullseye main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
elif [ "${distroversion}" == "10" ]; then
cmd="sudo apt-get install apt-transport-https dirmngr gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-buster main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
elif [ "${distroversion}" == "9" ]; then
cmd="sudo apt install apt-transport-https dirmngr gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-stretch main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
cmd="sudo apt-get install apt-transport-https dirmngr gnupg ca-certificates;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-stretch main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update"
else
monoautoinstall="1"
fi
@ -93,16 +112,16 @@ fn_deps_email() {
array_deps_required+=(exim4)
elif [ -d /etc/sendmail ]; then
array_deps_required+=(sendmail)
elif [ "$(command -v dpkg-query 2> /dev/null)" ]; then
array_deps_required+=(mailutils postfix)
elif [ "$(command -v rpm 2> /dev/null)" ]; then
elif [ "$(command -v yum 2> /dev/null)" ] || [ "$(command -v dnf 2> /dev/null)" ]; then
array_deps_required+=(mailx postfix)
elif [ "$(command -v apt 2> /dev/null)" ]; then
array_deps_required+=(mailutils postfix)
fi
else
if [ "$(command -v dpkg-query 2> /dev/null)" ]; then
array_deps_required+=(mailutils postfix)
elif [ "$(command -v rpm 2> /dev/null)" ]; then
if [ "$(command -v yum 2> /dev/null)" ] || [ "$(command -v dnf 2> /dev/null)" ]; then
array_deps_required+=(mailx postfix)
elif [ "$(command -v apt 2> /dev/null)" ]; then
array_deps_required+=(mailutils postfix)
fi
fi
fi
@ -129,10 +148,14 @@ fn_install_missing_deps() {
fi
autodepinstall="$?"
if [ "${monostatus}" == "1" ]; then
if [ "${monoinstalled}" == "false" ]; then
fn_install_mono_repo
fi
if [ "${dotnetinstalled}" == "false" ]; then
fn_install_dotnet_repo
fi
if [ "${commandname}" == "INSTALL" ]; then
if [ "${autodepinstall}" == "0" ]; then
fn_print_information_nl "$(whoami) has sudo access."
@ -144,7 +167,7 @@ fn_install_missing_deps() {
fi
# Add sudo dpkg --add-architecture i386 if using i386 packages.
if [ "$(command -v dpkg-query 2> /dev/null)" ]; then
if [ "$(command -v apt 2> /dev/null)" ]; then
if printf '%s\n' "${array_deps_required[@]}" | grep -q -P 'i386'; then
i386installcommand="sudo dpkg --add-architecture i386; "
fi
@ -161,7 +184,7 @@ fn_install_missing_deps() {
echo -en "...\r"
sleep 1
echo -en " \r"
if [ "$(command -v dpkg-query 2> /dev/null)" ]; then
if [ "$(command -v apt 2> /dev/null)" ]; then
cmd="echo steamcmd steam/question select \"I AGREE\" | sudo debconf-set-selections; echo steamcmd steam/license note '' | sudo debconf-set-selections; ${i386installcommand}sudo apt-get update; sudo apt-get -y install ${array_deps_missing[*]}"
eval "${cmd}"
elif [ "$(command -v dnf 2> /dev/null)" ]; then
@ -181,7 +204,7 @@ fn_install_missing_deps() {
# If automatic dependency install is unavailable.
if [ "${autodepinstall}" != "0" ]; then
if [ "$(command -v dpkg-query 2> /dev/null)" ]; then
if [ "$(command -v apt 2> /dev/null)" ]; then
echo -e "${i386installcommand}sudo apt update; sudo apt install ${array_deps_missing[*]}"
elif [ "$(command -v dnf 2> /dev/null)" ]; then
echo -e "sudo dnf install ${array_deps_missing[*]}"
@ -248,13 +271,23 @@ fn_deps_detector() {
if [ -n "${monoversion}" ] && [ "${monoversion}" -ge "5" ]; then
# Mono >= 5.0.0 already installed.
depstatus=0
monostatus=0
monoinstalled=true
else
# Mono not installed or installed Mono < 5.0.0.
depstatus=1
monostatus=1
monoinstalled=false
fi
elif [ "$(command -v dpkg-query 2> /dev/null)" ]; then
# .NET Core: A .NET Core repo needs to be installed.
elif [ "${deptocheck}" == "aspnetcore-runtime-7.0" ]; then
# .NET is not installed.
if [ -n "${dotnetversion}" ]; then
depstatus=0
dotnetinstalled=true
else
depstatus=1
dotnetinstalled=false
fi
elif [ "$(command -v apt 2> /dev/null)" ]; then
dpkg-query -W -f='${Status}' "${deptocheck}" 2> /dev/null | grep -q -P '^install ok installed'
depstatus=$?
elif [ "$(command -v dnf 2> /dev/null)" ]; then

View File

@ -3,21 +3,21 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Checks lock file to see when last update happened.
# Description: Checks Lockfile to see when last update happened.
# Will reboot server if instance not rebooted since update.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ -f "${lockdir}/${selfname}-laststart.lock" ]; then
laststart=$(cat "${lockdir}/${selfname}-laststart.lock")
if [ -f "${lockdir}/${selfname}-last-started.lock" ]; then
laststart=$(cat "${lockdir}/${selfname}-last-started.lock")
fi
if [ -f "${lockdir}/lastupdate.lock" ]; then
lastupdate=$(cat "${lockdir}/lastupdate.lock")
if [ -f "${lockdir}/last-updated.lock" ]; then
lastupdate=$(cat "${lockdir}/last-updated.lock")
fi
check_status.sh
if [ -f "${lockdir}/lastupdate.lock" ] && [ "${status}" != "0" ]; then
if [ ! -f "${lockdir}/${selfname}-laststart.lock" ] || [ "${laststart}" -lt "${lastupdate}" ]; then
if [ -f "${lockdir}/last-updated.lock" ] && [ "${status}" != "0" ]; then
if [ ! -f "${lockdir}/${selfname}-last-started.lock" ] || [ "${laststart}" -lt "${lastupdate}" ]; then
fn_print_info "${selfname} has not been restarted since last update"
fn_script_log_info "${selfname} has not been restarted since last update"
command_restart.sh

View File

@ -24,3 +24,8 @@ fi
if [ "${gamelogdir}" ] && [ -d "${gamelogdir}" ] && [ ! -d "${logdir}/server" ]; then
fn_check_logs
fi
# Create Steam log symlink if missing
if [ ! -d "${logdir}/steam" ] && [ -n "${appid}" ]; then
fn_check_logs
fi

View File

@ -7,4 +7,4 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
status=$(tmux -L "${sessionname}" list-sessions -F "#{session_name}" 2> /dev/null | grep -Ecx "^${sessionname}")
status=$(tmux -L "${socketname}" list-sessions -F "#{session_name}" 2> /dev/null | grep -Ecx "^${sessionname}")

View File

@ -29,7 +29,7 @@ elif [ "${shortname}" == "rust" ]; then
elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "wmc" ]; then
ramrequirementmb="1000"
ramrequirementgb="1"
elif [ "${shortname}" == "pstbs" ]; then
elif [ "${shortname}" == "ps" ]; then
ramrequirementmb="2000"
ramrequirementgb="2"
elif [ "${shortname}" == "ns2" ] || [ "${shortname}" == "ns2c" ]; then

View File

@ -22,7 +22,7 @@ fn_backup_trap() {
echo -en "backup ${backupname}.tar.gz..."
fn_print_removed_eol_nl
fn_script_log_info "Backup ${backupname}.tar.gz: REMOVED"
# Remove lock file.
# Remove backup lockfile.
rm -f "${lockdir:?}/backup.lock"
fn_backup_start_server
unset exitbypass
@ -31,9 +31,21 @@ fn_backup_trap() {
# Check if a backup is pending or has been aborted using backup.lock.
fn_backup_check_lockfile() {
# Remove stale lockfile.
if [ -f "${lockdir}/backup.lock" ]; then
fn_print_info_nl "Lock file found: Backup is currently running"
fn_script_log_error "Lock file found: Backup is currently running: ${lockdir}/backup.lock"
if [ "$(find "${lockdir}/backup.lock" -mmin +60)" ]; then
fn_print_dots "Lockfile found: "
fn_print_checking_eol
fn_print_warn "Lockfile found: Removing stale lockfile: "
fn_print_warn_eol
fn_script_log_warn "Lockfile found: Removing stale lockfile"
rm -f "${lockdir:?}/backup.lock"
fi
fi
if [ -f "${lockdir}/backup.lock" ]; then
fn_print_info_nl "Lockfile found: Backup is currently running"
fn_script_log_error "Lockfile found: Backup is currently running: ${lockdir}/backup.lock"
core_exit.sh
fi
}
@ -117,8 +129,8 @@ fn_backup_migrate_olddir() {
fn_backup_create_lockfile() {
# Create lockfile.
date '+%s' > "${lockdir}/backup.lock"
fn_script_log_info "Lockfile generated"
date '+%s' > "${lockdir:?}/backup.lock"
fn_script_log_info "Backup lockfile generated"
fn_script_log_info "${lockdir}/backup.lock"
# trap to remove lockfile on quit.
trap fn_backup_trap INT
@ -140,7 +152,7 @@ fn_backup_compression() {
core_exit.sh
fi
tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "${excludedir}" --exclude "${lockdir}/backup.lock" ./.
tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "${excludedir}" --exclude "${lockdir}" ./.
local exitcode=$?
if [ "${exitcode}" != 0 ]; then
fn_print_fail_eol
@ -153,8 +165,6 @@ fn_backup_compression() {
fn_print_ok_nl "Completed: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')"
fn_script_log_pass "Backup created: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')"
fi
# Remove lock file
rm -f "${lockdir:?}/backup.lock"
}
# Clear old backups according to maxbackups and maxbackupdays variables.
@ -265,4 +275,6 @@ fn_backup_compression
fn_backup_prune
fn_backup_start_server
# Remove backup lockfile.
rm -f "${lockdir:?}/backup.lock"
core_exit.sh

View File

@ -17,19 +17,19 @@ core_logs.sh
if [ "${shortname}" == "ts3" ]; then
update_ts3.sh
elif [ "${shortname}" == "mc" ]; then
update_minecraft.sh
update_mc.sh
elif [ "${shortname}" == "mcb" ]; then
update_minecraft_bedrock.sh
update_mcb.sh
elif [ "${shortname}" == "pmc" ] || [ "${shortname}" == "vpmc" ] || [ "${shortname}" == "wmc" ]; then
update_papermc.sh
update_pmc.sh
elif [ "${shortname}" == "fctr" ]; then
update_factorio.sh
update_fctr.sh
elif [ "${shortname}" == "mta" ]; then
update_mta.sh
elif [ "${shortname}" == "jk2" ]; then
update_jediknight2.sh
update_jk2.sh
elif [ "${shortname}" == "vints" ]; then
update_vintagestory.sh
update_vints.sh
elif [ "${shortname}" == "ut99" ]; then
update_ut99.sh
else

View File

@ -42,7 +42,7 @@ check_status.sh
if [ "${status}" != "0" ]; then
fn_print_ok_nl "Accessing console"
fn_script_log_pass "Console accessed"
tmux -L "${sessionname}" attach-session -t "${sessionname}"
tmux -L "${socketname}" attach-session -t "${sessionname}"
fn_print_ok_nl "Closing console"
fn_script_log_pass "Console closed"
else

View File

@ -13,7 +13,7 @@ fn_firstcommand_set
# Trap to remove lockfile on quit.
fn_lockfile_trap() {
# Remove lockfile.
rm -f "${lockdir:?}/${selfname}.lock"
rm -f "${lockdir:?}/${selfname}-started.lock"
# resets terminal. Servers can sometimes mess up the terminal on exit.
reset
fn_print_dots "Stopping debug"
@ -58,9 +58,9 @@ fi
echo -e "${lightblue}Game Server IP:\t${default}${ip}:${port}"
# External server IP.
if [ "${extip}" ]; then
if [ "${ip}" != "${extip}" ]; then
echo -e "${lightblue}Internet IP:\t${default}${extip}:${port}"
if [ "${publicip}" ]; then
if [ "${ip}" != "${publicip}" ]; then
echo -e "${lightblue}Internet IP:\t${default}${publicip}:${port}"
fi
fi
@ -98,12 +98,12 @@ fn_print_dots "Starting debug"
fn_script_log_info "Starting debug"
fn_print_ok_nl "Starting debug"
# Create lockfile.
date '+%s' > "${lockdir}/${selfname}.lock"
echo "${version}" >> "${lockdir}/${selfname}.lock"
echo "${port}" >> "${lockdir}/${selfname}.lock"
# Create started lockfile.
date '+%s' > "${lockdir:?}/${selfname}-started.lock"
echo "${version}" >> "${lockdir}/${selfname}-started.lock"
echo "${port}" >> "${lockdir}/${selfname}-started.lock"
fn_script_log_info "Lockfile generated"
fn_script_log_info "${lockdir}/${selfname}.lock"
fn_script_log_info "${lockdir}/${selfname}-started.lock"
if [ "${shortname}" == "av" ]; then
cd "${systemdir}" || exit

View File

@ -44,7 +44,7 @@ declare -A server_details=(
['HTTP Password']="${httppassword}"
['HTTP Port']="${httpport}"
['HTTP User']="${httpuser}"
['Internet IP']="${extip}"
['Internet IP']="${publicip}"
['LAN Port']="${lanport}"
['Master Port']="${masterport}"
['Master']="${master}"

View File

@ -15,7 +15,7 @@ echo -e "================================="
echo -e "glibc Requirements Checker"
echo -e "================================="
if [ ! "$(command -v objdump)" ]; then
if [ ! "$(command -v objdump 2> /dev/null)" ]; then
fn_print_failure_nl "objdump is missing"
fn_script_log_fatal "objdump is missing"
core_exit.sh

View File

@ -131,7 +131,7 @@ fi
if [ "${engine}" == "unity3d" ] && [[ "${modprettyname}" == *"Oxide"* ]]; then
fn_print_information_nl "Validating to restore original ${gamename} files replaced by Oxide"
fn_script_log "Validating to restore original ${gamename} files replaced by Oxide"
exitbypass="1"
exitbypass=1
command_validate.sh
fn_firstcommand_reset
unset exitbypass

View File

@ -11,76 +11,152 @@ commandaction="Monitoring"
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_firstcommand_set
fn_monitor_check_lockfile() {
# Monitor does not run if lockfile is not found.
if [ ! -f "${lockdir}/${selfname}.lock" ]; then
fn_monitor_check_monitoring() {
if [ -f "${lockdir}/${selfname}.lock" ]; then
# Part of migration to v23.5.0. #4296
rm -f "${lockdir:?}/${selfname}.lock"
date '+%s' > "${lockdir:?}/${selfname}-monitoring.lock"
elif [ ! -f "${lockdir}/${selfname}-monitoring.lock" ]; then
# Monitor does not run if lockfile is not found.
fn_print_dots "Checking lockfile: "
fn_print_checking_eol
fn_script_log_info "Checking lockfile: CHECKING"
fn_monitor_check_update
fn_monitor_check_backup
fn_monitor_check_debug
fn_print_error "Checking lockfile: No lockfile found: "
fn_print_error_eol_nl
fn_script_log_error "Checking lockfile: No lockfile found: ERROR"
echo -e "* Start ${selfname} to run monitor."
core_exit.sh
fi
# Fix if lockfile is not unix time or contains letters
if [ -f "${lockdir}/${selfname}.lock" ] && [[ "$(head -n 1 "${lockdir}/${selfname}.lock")" =~ [A-Za-z] ]]; then
date '+%s' > "${lockdir}/${selfname}.lock"
echo "${version}" >> "${lockdir}/${selfname}.lock"
echo "${port}" >> "${lockdir}/${selfname}.lock"
fi
}
fn_monitor_check_backup() {
# Monitor will check if backup is running.
if [ "$(pgrep "${selfname} backup" | wc -l)" != "0" ] || [ "$(pgrep "${selfname} b" | wc -l)" != "0" ]; then
fn_print_info "Checking lockfile: LinuxGSM is currently running a backup: "
fn_print_info_eol
fn_script_log_info "Checking lockfile: LinuxGSM is currently running a backup"
fn_monitor_check_install() {
if [ "$(pgrep -fc -u "${USER}" "/bin/bash ./${selfname} install")" != "0" ] || [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} i")" != "0" ] || [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} auto-install")" != "0" ] || [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} ai")" != "0" ]; then
fn_print_dots "Checking installer: "
fn_print_checking_eol
fn_script_log_info "Checking installer: CHECKING"
fn_print_info "Checking installer: LinuxGSM is installing: "
fn_print_info_eol_nl
fn_script_log_pass "Checking installer: LinuxGSM is installing"
core_exit.sh
fi
}
fn_monitor_check_debug() {
# Monitor will check if backup is running.
if [ "$(pgrep -fc "${selfname} backup")" != "0" ] || [ "$(pgrep -fc "${selfname} b")" != "0" ]; then
fn_print_info "Checking lockfile: LinuxGSM is currently in debug mode: "
fn_print_info_eol
fn_script_log_pass "Checking lockfile: LinuxGSM is currently in debug mode"
if [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} debug")" != "0" ] || [ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} d")" != "0" ]; then
fn_print_dots "Checking debug: "
fn_print_checking_eol
fn_print_info "Checking debug: Debug is running: "
fn_print_info_eol_nl
fn_script_log_pass "Checking debug: Debug is running"
core_exit.sh
fi
}
fn_monitor_check_install() {
# Monitor will check if update is running.
if [ "$(pgrep -fc "${selfname} install")" != "0" ] || [ "$(pgrep -fc "${selfname} i")" != "0" ] || [ "$(pgrep -fc "${selfname} auto-install")" != "0" ] || [ "$(pgrep -fc "${selfname} ai")" != "0" ]; then
fn_print_dots "Checking for installer: "
fn_monitor_check_starting() {
# Remove stale lockfile.
if [ -f "${lockdir}/${selfname}-starting.lock" ]; then
if [ "$(find "${lockdir}/${selfname}-starting.lock" -mmin +5)" ]; then
fn_print_dots "Checking start: "
fn_print_checking_eol
fn_print_warn "Checking start: Removing stale lockfile: "
fn_print_warn_eol_nl
fn_script_log_warn "Checking start: Removing stale lockfile"
rm -f "${lockdir:?}/${selfname}-starting.lock"
fi
fi
if [ -f "${lockdir}/${selfname}-starting.lock" ] && [[ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} start")" != "0" || "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} s")" != "0" ]]; then
fn_print_dots "Checking start: "
fn_print_checking_eol
fn_script_log_info "Checking for installer: CHECKING"
fn_print_info "Checking for installer: LinuxGSM is currently installing: "
fn_print_info_eol
fn_script_log_pass "Checking for installer: LinuxGSM is currently installing"
fn_print_info "Checking start: LinuxGSM is starting: "
fn_print_info_eol_nl
fn_script_log_info "Checking backup: LinuxGSM is starting"
core_exit.sh
fi
}
fn_monitor_check_stopping() {
# Remove stale lockfile.
if [ -f "${lockdir}/${selfname}-stopping.lock" ]; then
if [ "$(find "${lockdir}/${selfname}-stopping.lock" -mmin +5)" ]; then
fn_print_dots "Checking stop: "
fn_print_checking_eol
fn_print_warn "Checking stop: Removing stale lockfile: "
fn_print_warn_eol_nl
fn_script_log_warn "Checking stop: Removing stale lockfile"
rm -f "${lockdir:?}/${selfname}-stopping.lock"
fi
fi
if [ -f "${lockdir}/${selfname}-stopping.lock" ] && [[ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} stop")" != "0" || "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} s")" != "0" ]]; then
fn_print_dots "Checking stop: "
fn_print_checking_eol
fn_print_info "Checking stop: LinuxGSM is stopping: "
fn_print_info_eol_nl
fn_script_log_info "Checking backup: LinuxGSM is stopping"
core_exit.sh
fi
}
fn_monitor_check_backup() {
# Remove stale lockfile.
if [ -f "${lockdir}/backup.lock" ]; then
if [ "$(find "${lockdir}/backup.lock" -mmin +60)" ]; then
fn_print_dots "Checking backup: "
fn_print_checking_eol
fn_print_warn "Checking backup: Removing stale lockfile: "
fn_print_warn_eol
fn_script_log_warn "Checking backup: Removing stale lockfile"
rm -f "${lockdir:?}/backup.lock"
fi
fi
if [ -f "${lockdir}/backup.lock" ] && [[ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} backup")" != "0" || "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} b")" != "0" ]]; then
fn_print_dots "Checking backup: "
fn_print_checking_eol
fn_print_info "Checking backup: Backup is running: "
fn_print_info_eol_nl
fn_script_log_info "Checking backup: Backup is running"
core_exit.sh
fi
}
fn_monitor_check_update() {
# Specific check for docker. Will ignore the command watch -n 1800 ./csgoserver update
monitorps=0
if [ "$(pgrep -fc "n*${selfname} update")" != "0" ]; then
monitorps="$((monitorps - 1))"
# Remove stale lockfile.
if [ -f "${lockdir}/update.lock" ]; then
if [ "$(find "${lockdir}/update.lock" -mmin +15)" ]; then
fn_print_dots "Checking update: "
fn_print_checking_eol
fn_print_warn "Checking update: Removing stale lockfile: "
fn_print_warn_eol_nl
fn_script_log_warn "Checking update: Removing stale lockfile"
rm -f "${lockdir:?}/update.lock"
fi
fi
# Monitor will check if an update is running.
if [ "$(pgrep -fc "${selfname} update")" != "0" ] || [ "$(pgrep -fc "${selfname} u")" != "0" ] || [ "$(pgrep -fc "${selfname} validate")" != "0" ] || [ "$(pgrep -fc "${selfname} v")" != "0" ]; then
monitorps="$((monitorps + 2))"
if [ "${monitorps}" != "0" ]; then
fn_print_info_nl "Checking lockfile: LinuxGSM is currently updating: "
fn_print_info_eol
fn_script_log_pass "Checking lockfile: LinuxGSM is currently updating"
if [ -f "${lockdir}/update.lock" ] && [[ "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} update")" != "0" || "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} validate")" != "0" || "$(pgrep -fcx -u "${USER}" "/bin/bash ./${selfname} v")" != "0" || "$(pgrep -fc force-update "${USER}" "/bin/bash ./${selfname} fu")" != "0" ]]; then
fn_print_dots "Checking update: "
fn_print_checking_eol
fn_print_info "Checking update: LinuxGSM is updating the game server: "
fn_print_info_eol_nl
fn_script_log_pass "Checking update: LinuxGSM is updating the game server"
core_exit.sh
fi
}
# Source engine games may display a messages to indicate the server needs restarting.
fn_monitor_check_update_source() {
if [ -f "${consolelogdir}/${selfname}-console.log" ] && [ "${engine}" == "source" ]; then
if grep -q "Your server needs to be restarted in order to receive the latest update." "${consolelogdir}/${selfname}-console.log"; then
fn_print_dots "Checking update: "
fn_print_checking_eol
fn_script_log_info "Checking update: CHECKING"
fn_print_ok "Checking update: "
fn_print_ok_eol_nl
fn_script_log_info "Checking update: Monitor is restarting ${selfname} to apply update"
alert="update-restart"
alert.sh
command_restart.sh
core_exit.sh
fi
fi
@ -90,8 +166,40 @@ fn_monitor_check_session() {
fn_print_dots "Checking session: "
fn_print_checking_eol
fn_script_log_info "Checking session: CHECKING"
# uses status var from check_status.sh
if [ "${status}" != "0" ]; then
# Tmux session width and height needs to be reviewed as may no longer be required.
sessionwidth="80"
sessionheight="23"
# Check for PIDS with identical tmux sessions running.
if [ "$(pgrep -fcx "tmux -L ${socketname} new-session -d -x ${sessionwidth} -y ${sessionheight} -s ${sessionname}")" -ge "2" ]; then
fn_print_error "Checking session: There are PIDS with identical tmux sessions running: "
fn_print_error_eol_nl
fn_script_log_error "Checking session: ERROR"
fn_script_log_error "Checking session: There are PIDS with identical tmux sessions running"
fn_script_log_error "Checking session: Killing all tmux sessions with the socketname name ${socketname} and session name ${sessionname}"
pkill -f "tmux -L ${socketname} new-session -d -x ${sessionwidth} -y ${sessionheight} -s ${sessionname}"
command_restart.sh
core_exit.sh
# Check for tmux pids with the same tmux session and socket names. This will reduce issues with migration to release v23.5.0. #4296
elif [ "$(pgrep -fc -u "${USER}" "tmux -L ${sessionname} new-session -d -x ${sessionwidth} -y ${sessionheight} -s ${sessionname}")" != "0" ]; then
fn_print_error "Checking session: PIDS with the same tmux session and socket names are running: "
fn_print_error_eol_nl
fn_script_log_error "Checking session: ERROR"
fn_script_log_error "Checking session: PIDS with the same tmux session and socket names are running"
fn_script_log_error "Checking session: Killing session with the socketname name ${sessionname} and session name ${sessionname}"
pkill -f "tmux -L ${sessionname} new-session -d -x ${sessionwidth} -y ${sessionheight} -s ${sessionname}"
command_restart.sh
core_exit.sh
# Check for tmux pids that are using the old type of tmux session. This will reduce issues with migration to release v23.5.0. #4296
elif [ "$(pgrep -fc -u "${USER}" "tmux new-session -d -x ${sessionwidth} -y ${sessionheight} -s ${sessionname}")" != "0" ]; then
fn_print_error "Checking session: PIDS with old type tmux session are running: "
fn_print_error_eol_nl
fn_script_log_error "Checking session: ERROR"
fn_script_log_error "Checking session: PIDS with old type tmux session are running"
fn_script_log_error "Checking session: Killing session with the session name ${sessionname}"
pkill -f "tmux new-session -d -x ${sessionwidth} -y ${sessionheight} -s ${sessionname}"
command_restart.sh
core_exit.sh
elif [ "${status}" != "0" ]; then
fn_print_ok "Checking session: "
fn_print_ok_eol_nl
fn_script_log_pass "Checking session: OK"
@ -107,8 +215,8 @@ fn_monitor_check_session() {
fi
}
# Monitor will check queryport is set before continuing.
fn_monitor_check_queryport() {
# Monitor will check queryport is set before continuing.
if [ -z "${queryport}" ] || [ "${queryport}" == "0" ]; then
fn_print_dots "Checking port: "
fn_print_checking_eol
@ -133,7 +241,7 @@ fn_query_gsquery() {
}
fn_query_tcp() {
bash -c 'exec 3<> /dev/tcp/'${queryip}'/'${queryport}'' > /dev/null 2>&1
bash -c "exec 3<> /dev/tcp/'${queryip}'/'${queryport}'" > /dev/null 2>&1
querystatus="$?"
}
@ -147,12 +255,12 @@ fn_monitor_query() {
fn_print_querying_eol
fn_script_log_info "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt} : QUERYING"
# querydelay
if [ "$(head -n 1 "${lockdir}/${selfname}.lock")" -gt "$(date "+%s" -d "${querydelay} mins ago")" ]; then
if [ "$(head -n 1 "${lockdir}/${selfname}-started.lock")" -gt "$(date "+%s" -d "${querydelay} mins ago")" ]; then
fn_print_ok "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
fn_print_delay_eol_nl
fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt} : DELAY"
fn_script_log_info "Query bypassed: ${gameservername} started less than ${querydelay} minutes ago"
fn_script_log_info "Server started: $(date -d @$(head -n 1 "${lockdir}/${selfname}.lock"))"
fn_script_log_info "Server started: $(date -d "@$(head -n 1 "${lockdir}/${selfname}-started.lock")")"
fn_script_log_info "Current time: $(date)"
monitorpass=1
core_exit.sh
@ -271,8 +379,15 @@ core_logs.sh
info_game.sh
# query pre-checks
fn_monitor_check_lockfile
fn_monitor_check_update_source
fn_monitor_check_update
fn_monitor_check_backup
fn_monitor_check_debug
fn_monitor_check_monitoring
fn_monitor_check_starting
fn_monitor_check_stopping
fn_monitor_check_session
# Monitor will not continue if session only check.
if [ "${querymode}" != "1" ]; then
fn_monitor_check_queryport

View File

@ -5,7 +5,7 @@
# Website: https://linuxgsm.com
# Description: Restarts the server.
commandname="MODS-INSTALL"
commandname="RESTART"
commandaction="Restarting"
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_firstcommand_set

View File

@ -26,7 +26,7 @@ if [ "${status}" != "0" ]; then
fi
echo ""
fn_print_dots "Sending command to console: \"${commandtosend}\""
tmux -L "${sessionname}" send-keys -t "${servicename}" "${commandtosend}" ENTER
tmux -L "${socketname}" send-keys -t "${servicename}" "${commandtosend}" ENTER
fn_print_ok_nl "Sending command to console: \"${commandtosend}\""
fn_script_log_pass "Command \"${commandtosend}\" sent to console"
else

View File

@ -5,7 +5,10 @@
# Website: https://linuxgsm.com
# Description: Creates an copy of a game servers directorys.
commandname="SKELETON"
commandaction="Skeleton"
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_firstcommand_set
fn_print_dots "Creating skeleton directory"
check.sh

View File

@ -11,39 +11,14 @@ moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
addtimestamp="gawk '{ print strftime(\\\"[$logtimestampformat]\\\"), \\\$0 }'"
fn_firstcommand_set
fn_start_teamspeak3() {
if [ ! -f "${servercfgfullpath}" ]; then
fn_print_warn_nl "${servercfgfullpath} is missing"
fn_script_log_warn "${servercfgfullpath} is missing"
echo " * Creating blank ${servercfg}"
fn_script_log_info "Creating blank ${servercfg}"
fn_sleep_time
echo " * ${servercfg} can remain blank by default."
fn_script_log_info "${servercfgfullpath} can remain blank by default."
fn_sleep_time
echo " * ${servercfg} is located in ${servercfgfullpath}."
fn_script_log_info "${servercfg} is located in ${servercfgfullpath}."
sleep 5
touch "${servercfgfullpath}"
fi
# Accept license.
if [ ! -f "${executabledir}/.ts3server_license_accepted" ]; then
install_eula.sh
fi
fn_start_tmux
}
# This will allow the Jedi Knight 2 version to be printed in console on start.
# Used to allow update to detect JK2MV server version.
fn_start_jk2() {
fn_start_tmux
tmux -L "${sessionname}" end -t "${sessionname}" version ENTER > /dev/null 2>&1
tmux -L "${socketname}" end -t "${sessionname}" version ENTER > /dev/null 2>&1
}
fn_start_tmux() {
if [ "${parmsbypass}" ]; then
startparameters=""
fi
# check for tmux size variables.
if [[ "${servercfgtmuxwidth}" =~ ^[0-9]+$ ]]; then
sessionwidth="${servercfgtmuxwidth}"
@ -68,35 +43,44 @@ fn_start_tmux() {
mv "${consolelog}" "${consolelogdate}"
fi
# Create lockfile
date '+%s' > "${lockdir}/${selfname}.lock"
echo "${version}" >> "${lockdir}/${selfname}.lock"
echo "${port}" >> "${lockdir}/${selfname}.lock"
# Create a starting lockfile that only exists while the start command is running.
date '+%s' > "${lockdir:?}/${selfname}-starting.lock"
fn_reload_startparameters
# Create uid to ensure unique tmux socket name.
if [ ! -f "${datadir}/${selfname}.uid" ]; then
check_status.sh
if [ "${status}" != "0" ]; then
# stop running server (if running) to prevent lingering tmux sessions.
exitbypass=1
command_stop.sh
fi
uid=$(date '+%s' | sha1sum | head -c 8)
echo "${uid}" > "${datadir}/${selfname}.uid"
socketname="${sessionname}-$(cat "${datadir}/${selfname}.uid")"
fi
if [ "${shortname}" == "av" ]; then
cd "${systemdir}" || exit
else
cd "${executabledir}" || exit
fi
tmux -L "${sessionname}" new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${preexecutable} ${executable} ${startparameters}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp"
tmux -L "${socketname}" new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${preexecutable} ${executable} ${startparameters}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp"
# Create logfile.
touch "${consolelog}"
# Create last start lock file
date +%s > "${lockdir}/${selfname}-laststart.lock"
# tmux compiled from source will return "master", therefore ignore it.
if [ "${tmuxv}" == "master" ]; then
fn_script_log "tmux version: master (user compiled)"
echo -e "tmux version: master (user compiled)" >> "${consolelog}"
if [ "${consolelogging}" == "on" ] || [ -z "${consolelogging}" ]; then
if [ "$logtimestamp" == "on" ]; then
tmux -L "${sessionname}" pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'"
if [ "${logtimestamp}" == "on" ]; then
tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'"
else
tmux -L "${sessionname}" pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
fi
fi
@ -114,10 +98,10 @@ fn_start_tmux() {
Currently installed: $(tmux -V)" > "${consolelog}"
# Console logging enable or not set.
elif [ "${consolelogging}" == "on" ] || [ -z "${consolelogging}" ]; then
if [ "$logtimestamp" == "on" ]; then
tmux -L "${sessionname}" pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'"
if [ "${logtimestamp}" == "on" ]; then
tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec bash -c \"cat | $addtimestamp\" >> '${consolelog}'"
else
tmux -L "${sessionname}" pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
tmux -L "${socketname}" pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
fi
fi
else
@ -127,7 +111,7 @@ fn_start_tmux() {
# Console logging disabled.
if [ "${consolelogging}" == "off" ]; then
echo -e "Console logging disabled by user" >> "${consolelog}"
echo -e "Console logging disabled in settings" >> "${consolelog}"
fn_script_log_info "Console logging disabled by user"
fi
fn_sleep_time
@ -176,8 +160,20 @@ fn_start_tmux() {
fi
fi
fi
# Remove starting lockfile when command ends.
rm -f "${lockdir:?}/${selfname}-starting.lock"
core_exit.sh
else
# Create start lockfile that exists only when the server is running.
date '+%s' > "${lockdir:?}/${selfname}-started.lock"
echo "${version}" >> "${lockdir}/${selfname}-started.lock"
echo "${port}" >> "${lockdir}/${selfname}-started.lock"
fn_print_ok "${servername}"
fn_script_log_pass "Started ${servername}"
# Create last started Lockfile.
date +%s > "${lockdir}/${selfname}-last-started.lock"
fn_print_ok "${servername}"
fn_script_log_pass "Started ${servername}"
fi
@ -185,25 +181,30 @@ fn_start_tmux() {
echo -en "\n"
}
# If user ran the start command monitor will become enabled.
if [ "${firstcommandname}" == "START" ] || [ "${firstcommandname}" == "RESTART" ]; then
date '+%s' > "${lockdir:?}/${selfname}-monitoring.lock"
fi
check.sh
# Is the server already started.
# $status comes from check_status.sh, which is run by check.sh for this command
# If the server already started dont start again.
if [ "${status}" != "0" ]; then
fn_print_dots "${servername}"
fn_print_info_nl "${servername} is already running"
fn_script_log_error "${servername} is already running"
if [ -z "${exitbypass}" ]; then
# Remove starting lockfile when command ends.
rm -f "${lockdir:?}/${selfname}-starting.lock"
core_exit.sh
fi
fi
if [ -z "${fixbypass}" ]; then
fix.sh
fi
fix.sh
info_game.sh
core_logs.sh
# Will check for updates is updateonstart is yes.
# Will check for updates if updateonstart is yes.
if [ "${updateonstart}" == "yes" ] || [ "${updateonstart}" == "1" ] || [ "${updateonstart}" == "on" ]; then
exitbypass=1
unset updateonstart
@ -212,13 +213,12 @@ if [ "${updateonstart}" == "yes" ] || [ "${updateonstart}" == "1" ] || [ "${upda
fi
fn_print_dots "${servername}"
if [ "${shortname}" == "ts3" ]; then
fn_start_teamspeak3
elif [ "${shortname}" == "jk2" ]; then
if [ "${shortname}" == "jk2" ]; then
fn_start_jk2
else
fn_start_tmux
fi
# Remove starting lockfile when command ends.
rm -f "${lockdir:?}/${selfname}-starting.lock"
core_exit.sh

View File

@ -15,7 +15,7 @@ fn_stop_graceful_ctrlc() {
fn_print_dots "Graceful: CTRL+c"
fn_script_log_info "Graceful: CTRL+c"
# Sends quit.
tmux -L "${sessionname}" send-keys -t "${sessionname}" C-c > /dev/null 2>&1
tmux -L "${socketname}" send-keys -t "${sessionname}" C-c > /dev/null 2>&1
# Waits up to 30 seconds giving the server time to shutdown gracefuly.
for seconds in {1..30}; do
check_status.sh
@ -43,7 +43,7 @@ fn_stop_graceful_cmd() {
fn_print_dots "Graceful: sending \"${1}\""
fn_script_log_info "Graceful: sending \"${1}\""
# Sends specific stop command.
tmux -L "${sessionname}" send -t "${sessionname}" ENTER "${1}" ENTER > /dev/null 2>&1
tmux -L "${socketname}" send -t "${sessionname}" ENTER "${1}" ENTER > /dev/null 2>&1
# Waits up to ${seconds} seconds giving the server time to shutdown gracefully.
for ((seconds = 1; seconds <= ${2}; seconds++)); do
check_status.sh
@ -71,7 +71,7 @@ fn_stop_graceful_goldsrc() {
fn_print_dots "Graceful: sending \"quit\""
fn_script_log_info "Graceful: sending \"quit\""
# sends quit
tmux -L "${sessionname}" send -t "${sessionname}" quit ENTER > /dev/null 2>&1
tmux -L "${socketname}" send -t "${sessionname}" quit ENTER > /dev/null 2>&1
# Waits 3 seconds as goldsrc servers restart with the quit command.
for seconds in {1..3}; do
sleep 1
@ -184,10 +184,10 @@ fn_stop_graceful_avorion() {
fn_print_dots "Graceful: /save /stop"
fn_script_log_info "Graceful: /save /stop"
# Sends /save.
tmux -L "${sessionname}" send-keys -t "${sessionname}" /save ENTER > /dev/null 2>&1
tmux -L "${socketname}" send-keys -t "${sessionname}" /save ENTER > /dev/null 2>&1
sleep 5
# Sends /quit.
tmux -L "${sessionname}" send-keys -t "${sessionname}" /stop ENTER > /dev/null 2>&1
tmux -L "${socketname}" send-keys -t "${sessionname}" /stop ENTER > /dev/null 2>&1
# Waits up to 30 seconds giving the server time to shutdown gracefuly.
for seconds in {1..30}; do
check_status.sh
@ -240,7 +240,7 @@ fn_stop_tmux() {
fn_print_dots "${servername}"
fn_script_log_info "tmux kill-session: ${sessionname}: ${servername}"
# Kill tmux session.
tmux -L "${sessionname}" kill-session -t "${sessionname}" > /dev/null 2>&1
tmux -L "${socketname}" kill-session -t "${sessionname}" > /dev/null 2>&1
sleep 0.5
check_status.sh
if [ "${status}" == "0" ]; then
@ -256,28 +256,39 @@ fn_stop_tmux() {
fn_stop_pre_check() {
if [ "${status}" == "0" ]; then
fn_print_info_nl "${servername} is already stopped"
fn_script_log_error "${servername} is already stopped"
fn_script_log_info "${servername} is already stopped"
else
# Select graceful shutdown.
fn_stop_graceful_select
fi
# Check status again, a kill tmux session if graceful shutdown failed.
check_status.sh
if [ "${status}" != "0" ]; then
fn_stop_tmux
# Check status again, a kill tmux session if graceful shutdown failed.
check_status.sh
if [ "${status}" != "0" ]; then
fn_stop_tmux
fi
fi
}
check.sh
# Create a stopping lockfile that only exists while the stop command is running.
date '+%s' > "${lockdir:?}/${selfname}-stopping.lock"
fn_print_dots "${servername}"
info_game.sh
fn_stop_pre_check
# Remove lockfile.
if [ -f "${lockdir}/${selfname}.lock" ]; then
rm -f "${lockdir:?}/${selfname}.lock"
# Remove started lockfile.
rm -f "${lockdir:?}/${selfname}-started.lock"
# If user ran the stop command monitor will become disabled.
if [ "${firstcommandname}" == "STOP" ]; then
rm -f "${lockdir:?}/${selfname}-monitoring.lock"
fi
# Remove stopping lockfile.
rm -f "${lockdir:?}/${selfname}-stopping.lock"
if [ -z "${exitbypass}" ]; then
core_exit.sh
fi

View File

@ -28,7 +28,7 @@ fn_serveradmin_password_prompt() {
fn_serveradmin_password_set() {
# Start server in "new password mode".
ts3serverpass="1"
exitbypass="1"
exitbypass=1
command_start.sh
fn_firstcommand_reset
fn_print_ok_nl "New password applied"
@ -40,7 +40,7 @@ check.sh
fn_serveradmin_password_prompt
if [ "${status}" != "0" ]; then
# Stop any running server.
exitbypass="1"
exitbypass=1
command_stop.sh
fn_firstcommand_reset
fn_serveradmin_password_set

View File

@ -18,23 +18,26 @@ check_last_update.sh
if [ "${shortname}" == "ts3" ]; then
update_ts3.sh
elif [ "${shortname}" == "mc" ]; then
update_minecraft.sh
update_mc.sh
elif [ "${shortname}" == "mcb" ]; then
update_minecraft_bedrock.sh
update_mcb.sh
elif [ "${shortname}" == "pmc" ] || [ "${shortname}" == "vpmc" ] || [ "${shortname}" == "wmc" ]; then
update_papermc.sh
update_pmc.sh
elif [ "${shortname}" == "fctr" ]; then
update_factorio.sh
update_fctr.sh
elif [ "${shortname}" == "mta" ]; then
update_mta.sh
elif [ "${shortname}" == "jk2" ]; then
update_jediknight2.sh
update_jk2.sh
elif [ "${shortname}" == "vints" ]; then
update_vintagestory.sh
update_vints.sh
elif [ "${shortname}" == "ut99" ]; then
update_ut99.sh
else
update_steamcmd.sh
fi
# remove update lockfile.
rm -f "${lockdir:?}/update.lock"
core_exit.sh

View File

@ -23,7 +23,7 @@ fn_validate() {
fi
done
fn_print_warn_nl "Validate might overwrite some customised files"
date '+%s' > "${lockdir:?}/update.lock"
fn_dl_steamcmd
}
@ -46,4 +46,7 @@ else
fn_validate
fi
# remove update lockfile
rm -f "${lockdir:?}/update.lock"
core_exit.sh

View File

@ -36,7 +36,7 @@ fn_dl_steamcmd() {
# Unbuffer will allow the output of steamcmd not buffer allowing a smooth output.
# unbuffer us part of the expect package.
if [ "$(command -v unbuffer)" ]; then
if [ "$(command -v unbuffer 2> /dev/null)" ]; then
unbuffer="unbuffer"
fi
@ -119,6 +119,14 @@ fn_dl_steamcmd() {
elif [ -n "$(grep "0x402" "${steamcmdlog}" | tail -1)" ] || [ -n "$(grep "0x602" "${steamcmdlog}" | tail -1)" ]; then
fn_print_error2_nl "${commandaction} ${selfname}: ${remotelocation}: Update required but not completed - check network"
fn_script_log_error "${commandaction} ${selfname}: ${remotelocation}: Update required but not completed - check network"
# Disk write failure.
elif [ -n "$(grep "0x606" "${steamcmdlog}" | tail -1)" ] || [ -n "$(grep "0x602" "${steamcmdlog}" | tail -1)" ]; then
fn_print_error2_nl "${commandaction} ${selfname}: ${remotelocation}: Disk write failure"
fn_script_log_error "${commandaction} ${selfname}: ${remotelocation}: Disk write failure"
# Missing update files.
elif [ -n "$(grep "0x626" "${steamcmdlog}" | tail -1)" ] || [ -n "$(grep "0x626" "${steamcmdlog}" | tail -1)" ]; then
fn_print_error2_nl "${commandaction} ${selfname}: ${remotelocation}: Missing update files"
fn_script_log_error "${commandaction} ${selfname}: ${remotelocation}: Missing update files"
else
fn_print_error2_nl "${commandaction} ${selfname}: ${remotelocation}: Unknown error occured"
echo -en "Please provide content log to LinuxGSM developers https://linuxgsm.com/steamcmd-error"

View File

@ -12,7 +12,7 @@ fn_exit_dev_debug() {
echo -e ""
echo -e "${moduleselfname} exiting with code: ${exitcode}"
if [ -f "${rootdir}/dev-debug.log" ]; then
grep "modulefile=" "${rootdir}/dev-debug.log" | sed 's/modulefile=//g' > "${rootdir}/dev-debug-module-order.log"
grep -a "modulefile=" "${rootdir}/dev-debug.log" | sed 's/modulefile=//g' > "${rootdir}/dev-debug-module-order.log"
fi
fi
}
@ -35,7 +35,9 @@ elif [ "${exitcode}" != "0" ]; then
elif [ "${exitcode}" == "3" ]; then
fn_script_log_warn "${moduleselfname} exiting with code: ${exitcode}"
else
# if exit code is not set assume error.
fn_script_log_warn "${moduleselfname} exiting with code: ${exitcode}"
exitcode=4
fi
fn_exit_dev_debug
# remove trap.

View File

@ -8,7 +8,7 @@
module_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
modulesversion="v23.4.0"
modulesversion="v23.5.0"
# Core
@ -640,17 +640,17 @@ update_ts3.sh() {
fn_fetch_function
}
update_minecraft.sh() {
update_mc.sh() {
functionfile="${FUNCNAME[0]}"
fn_fetch_function
}
update_minecraft_bedrock.sh() {
update_mcb.sh() {
functionfile="${FUNCNAME[0]}"
fn_fetch_function
}
update_papermc.sh() {
update_pmc.sh() {
functionfile="${FUNCNAME[0]}"
fn_fetch_function
}
@ -660,12 +660,12 @@ update_mta.sh() {
fn_fetch_function
}
update_factorio.sh() {
update_fctr.sh() {
functionfile="${FUNCNAME[0]}"
fn_fetch_function
}
update_jediknight2.sh() {
update_jk2.sh() {
functionfile="${FUNCNAME[0]}"
fn_fetch_function
}
@ -675,7 +675,7 @@ update_steamcmd.sh() {
fn_fetch_function
}
update_vintagestory.sh() {
update_vints.sh() {
functionfile="${FUNCNAME[0]}"
fn_fetch_function
}

View File

@ -55,7 +55,7 @@ cmd_dev_detect_deps=("dd;detect-deps" "command_dev_detect_deps.sh" "Detect requi
cmd_dev_detect_glibc=("dg;detect-glibc" "command_dev_detect_glibc.sh" "Detect required glibc.")
cmd_dev_detect_ldd=("dl;detect-ldd" "command_dev_detect_ldd.sh" "Detect required dynamic dependencies.")
cmd_dev_query_raw=("qr;query-raw" "command_dev_query_raw.sh" "The raw output of gamedig and gsquery.")
cmd_dev_clear_modules=("cf;clear-modules" "command_dev_clear_modules.sh" "Delete the contents of the modules dir.")
cmd_dev_clear_modules=("cm;clear-modules" "command_dev_clear_modules.sh" "Delete the contents of the modules dir.")
### Set specific opt here.

View File

@ -15,6 +15,10 @@ for legacy_version in "${legacy_versions_array[@]}"; do
fi
done
if [ -z "${socketname}" ]; then
socketname="${sessionname}"
fi
if [ -n "${webadminuser}" ]; then
httpuser="${webadminuser}"
fi

View File

@ -8,7 +8,7 @@
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
modulesversion="v23.4.0"
modulesversion="v23.5.0"
# Core
@ -421,6 +421,11 @@ fix_onset.sh() {
fn_fetch_module
}
fix_pvr.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
}
fix_ro.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
@ -645,17 +650,17 @@ update_ts3.sh() {
fn_fetch_module
}
update_minecraft.sh() {
update_mc.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
}
update_minecraft_bedrock.sh() {
update_mcb.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
}
update_papermc.sh() {
update_pmc.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
}
@ -665,12 +670,12 @@ update_mta.sh() {
fn_fetch_module
}
update_factorio.sh() {
update_fctr.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
}
update_jediknight2.sh() {
update_jk2.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
}
@ -680,7 +685,7 @@ update_steamcmd.sh() {
fn_fetch_module
}
update_vintagestory.sh() {
update_vints.sh() {
modulefile="${FUNCNAME[0]}"
fn_fetch_module
}

View File

@ -151,11 +151,6 @@ fn_update_steamcmd_localbuild() {
# Uses appmanifest to find local build.
localbuild=$(grep buildid "${appmanifestfile}" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3)
# Set branch to public if no custom branch.
if [ -z "${branch}" ]; then
branch="public"
fi
# Checks if localbuild variable has been set.
if [ -z "${localbuild}" ]; then
fn_print_fail "Checking local build: ${remotelocation}: missing local build info"
@ -178,6 +173,13 @@ fn_update_steamcmd_remotebuild() {
find "${HOME}" -type f -name "appinfo.vdf" -exec rm -f {} \; 2> /dev/null
fi
# Set branch to public if no custom branch.
if [ -z "${branch}" ]; then
branch="public"
fi
# added as was failing GitHub Actions test. Running SteamCMD twice seems to fix it.
${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +quit 2> /dev/null
# password for branch not needed to check the buildid
remotebuildversion=$(${steamcmdcommand} +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +quit | sed -e '/"branches"/,/^}/!d' | sed -n "/\"${branch}\"/,/}/p" | grep -m 1 buildid | tr -cd '[:digit:]')
@ -204,7 +206,10 @@ fn_update_steamcmd_remotebuild() {
fn_update_steamcmd_compare() {
fn_print_dots "Checking for update: ${remotelocation}"
# Update has been found or force update.
if [ "${localbuild}" != "${remotebuildversion}" ] || [ "${forceupdate}" == "1" ]; then
# Create update lockfile.
date '+%s' > "${lockdir:?}/update.lock"
fn_print_ok_nl "Checking for update: ${remotelocation}"
echo -en "\n"
echo -e "Update available"
@ -248,7 +253,7 @@ fn_update_steamcmd_compare() {
fn_firstcommand_reset
fi
unset exitbypass
date +%s > "${lockdir}/lastupdate.lock"
date +%s > "${lockdir:?}/last-updated.lock"
alert="update"
elif [ "${commandname}" == "CHECK-UPDATE" ]; then
alert="check-update"
@ -352,8 +357,8 @@ fn_check_steamcmd_appmanifest() {
if [ "${engine}" == "goldsrc" ]; then
shareddepotsexists=$(grep -c SharedDepots "${serverfiles}/steamapps/appmanifest_90.acf")
if [ ! -f "${serverfiles}/steamapps/appmanifest_90.acf" ] || [ "${shareddepotsexists}" == "0" ]; then
fn_print_error_nl "SharedDepots missing from appmanifest_${appid}.acf"
fn_script_log_error "SharedDepots missing from appmanifest_${appid}.acf"
fn_print_error_nl "SharedDepots missing from appmanifest_90.acf"
fn_script_log_error "SharedDepots missing from appmanifest_90.acf"
fn_print_info_nl "Forcing update to correct issue"
fn_script_log_info "Forcing update to correct issue"
if [ "${shortname}" == "ahl" ]; then

View File

@ -52,7 +52,7 @@ fn_apply_fix() {
fi
}
apply_pre_start_fix=(arma3 armar ark av bt bo csgo cmw dst hw ins nmrih onset rust rw sdtd sfc sof2 squad st tf2 terraria ts3 mcb mta unt vh wurm zmr)
apply_pre_start_fix=(arma3 armar ark av bt bo csgo cmw dst hw ins nmrih onset pvr rust rw sdtd sfc sof2 squad st tf2 terraria ts3 mcb mta unt vh wurm zmr)
apply_post_install_fix=(av kf kf2 lo ro samp ut2k4 ut ut3)
# validate registered fixes for safe development

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with ARK: Survival Evolved.
# Description: Resolves issues with ARK: Survival Evolved.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves an issue with ARMA3.
# Description: Resolves issues with ARMA3.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves an issue with Arma Reforger.
# Description: Resolves issues with Arma Reforger.
module_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves startup issue with Avorion
# Description: Resolves issues with Avorion.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Ballistic Overkill.
# Description: Resolves issues with Ballistic Overkill.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves an issue with Barotrauma.
# Description: Resolves issues with Barotrauma.
module_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves the issue of the not starting server on linux
# Description: Resolves issues with Chivalry: Medieval Warfare.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with CS:GO.
# Description: Resolves issues with Counter-Strike: Global Offensive.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
@ -37,6 +37,6 @@ libgccc_so="${serverfiles}/bin/libgcc_s.so.1"
if [ -f "${libgccc_so}" ]; then
fixname="libgcc_s.so.1 move away"
fn_fix_msg_start
mv -v "${libgccc_so}" "${libgccc_so}.bck"
mv "${libgccc_so}" "${libgccc_so}.bak"
fn_fix_msg_end
fi

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Don't Starve Together.
# Description: Resolves issues with Don't Starve Together.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Hurtworld.
# Description: Resolves issues with Hurtworld.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Insurgency.
# Description: Resolves issues with Insurgency.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Killing Floor.
# Description: Resolves issues with Killing Floor.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Killing Floor 2.
# Description: Resolves issues with Killing Floor 2.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -2,7 +2,7 @@
# LinuxGSM fix_lo.sh module
# Author: Daniel Gibbs
# Website: https://linuxgsm.com
# Description: Resolves installation issue with Last Oasis
# Description: Resolves various issues with Last Oasis.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves possible startup issue with Minecraft Bedrock.
# Description: Resolves various issues with Minecraft Bedrock.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Installs the libmysqlclient for database functions on the server.
# Description: Resolves various issues with Multi Theft Auto.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

14
lgsm/modules/fix_pvr.sh Normal file
View File

@ -0,0 +1,14 @@
#!/bin/bash
# LinuxGSM fix_pvr.sh module
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Pavlov VR.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ ! -f "${serverfiles}/linux64/libc++.so" ] && [ -f "/usr/lib/x86_64-linux-gnu/libc++.so.1" ]; then
cp "/usr/lib/x86_64-linux-gnu/libc++.so.1" "${serverfiles}/linux64/libc++.so"
fi
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/linux64"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Red Orchestra.
# Description: Resolves issues with Red Orchestra.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves startup issue with Rust.
# Description: Resolves issues with Rust.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Rising World.
# Description: Resolves issues with Rising World.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves issue that the default rcon password is not changed
# Description: Resolves issue that the default rcon password is not changed.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with 7 Days to Die.
# Description: Resolves issues with 7 Days to Die.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Source Forts Classic.
# Description: Resolves issues with Source Forts Classic.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Soldier of Fortune 2.
# Description: Resolves issues with Soldier of Fortune 2.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Squad.
# Description: Resolves issues with Squad.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves startup issue with Stationeers.
# Description: Resolves issues with Stationeers.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues related to SteamCMD.
# Description: Resolves issues with SteamCMD.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves an issue with Terraria.
# Description: Resolves issues with Terraria.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Team Fortress 2.
# Description: Resolves issues with Team Fortress 2.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,10 +3,23 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Teamspeak 3.
# Description: Resolves issues with Teamspeak 3.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Creates a blank ts3server.ini if it does not exist.
if [ ! -f "${servercfgfullpath}" ]; then
fixname="create blank ${servercfg}"
fn_fix_msg_start
touch "${servercfgfullpath}"
fn_fix_msg_end
fi
# Accept license.
if [ ! -f "${executabledir}/.ts3server_license_accepted" ]; then
install_eula.sh
fi
# Fixes: makes libmariadb2 available #1924.
if [ ! -f "${serverfiles}/libmariadb.so.2" ]; then
fixname="libmariadb.so.2"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves startup issue with Unturned.
# Description: Resolves issues with Unturned.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Unreal Tournament.
# Description: Resolves issues with Unreal Tournament.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Unreal Tournament 2004.
# Description: Resolves issues with Unreal Tournament 2004.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Unreal Tournament 3.
# Description: Resolves issues with Unreal Tournament 3.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -2,7 +2,7 @@
# LinuxGSM fix_rust.sh module
# Author: Alasdair Haig
# Website: https://linuxgsm.com
# Description: Resolves startup issue with Valheim
# Description: Resolves issues with Valheim.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Wurm Unlimited.
# Description: Resolves issues with Wurm Unlimited.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

View File

@ -3,7 +3,7 @@
# Author: Daniel Gibbs
# Contributors: http://linuxgsm.com/contrib
# Website: https://linuxgsm.com
# Description: Resolves various issues with Zombie Master: Reborn.
# Description: Resolves issues with Zombie Master: Reborn.
moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"

Some files were not shown because too many files have changed in this diff Show More