mirror of
https://github.com/GameServerManagers/LinuxGSM.git
synced 2025-01-08 12:07:37 +08:00
Merge branch 'release/v23.5.0'
This commit is contained in:
commit
fc36dc9526
2
.github/workflows/details-check.yml
vendored
2
.github/workflows/details-check.yml
vendored
@ -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
48
.github/workflows/update-check.yml
vendored
Normal 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
|
12
README.md
12
README.md
@ -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&logo=Steam&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.
|
||||
|
@ -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 ####
|
||||
|
||||
|
@ -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 ####
|
||||
|
||||
|
@ -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
|
||||
|
@ -155,7 +155,7 @@ consoleinteract="no"
|
||||
|
||||
## Game Server Details
|
||||
# Do not edit
|
||||
gamename="pstbsserver"
|
||||
gamename="Post Scriptum"
|
||||
engine="unreal4"
|
||||
glibc="2.17"
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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 ####
|
||||
|
||||
|
@ -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 ####
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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,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,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
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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}")
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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}"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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
14
lgsm/modules/fix_pvr.sh
Normal 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"
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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]}")")"
|
||||
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user