Browse Source

Merge branch 'develop' into feature/corekeeper

pull/3884/head
Daniel Gibbs 3 years ago
parent
commit
5202288cd7
  1. 50
      .github/ISSUE_TEMPLATE/bug-report.md
  2. 95
      .github/ISSUE_TEMPLATE/bug_report.yml
  3. 8
      .github/ISSUE_TEMPLATE/config.yml
  4. 43
      .github/ISSUE_TEMPLATE/feature-request.md
  5. 78
      .github/ISSUE_TEMPLATE/feature_request.yml
  6. 31
      .github/ISSUE_TEMPLATE/new-server-request.md
  7. 57
      .github/ISSUE_TEMPLATE/server_request.yml
  8. 132
      .github/labeler.yml
  9. 8
      .github/pull_request_template.md
  10. 23
      .github/workflows/create-release.yml
  11. 4
      .github/workflows/git-sync.yml
  12. 15
      .github/workflows/labeler.yml
  13. 55
      .github/workflows/linter.yml
  14. 2
      .github/workflows/lock.yml
  15. 2
      .github/workflows/potential-duplicates.yml
  16. 27
      .github/workflows/trigger-docker-build.yml
  17. 7
      .github/workflows/update-copyright-years-in-license-file.yml
  18. 1
      .github/workflows/version-check.sh
  19. 2
      LICENSE.md
  20. 14
      README.md
  21. 179
      lgsm/config-default/config-lgsm/atsserver/_default.cfg
  22. 30
      lgsm/config-default/config-lgsm/csgoserver/_default.cfg
  23. 179
      lgsm/config-default/config-lgsm/ets2server/_default.cfg
  24. 182
      lgsm/config-default/config-lgsm/necserver/_default.cfg
  25. 3
      lgsm/config-default/config-lgsm/rustserver/_default.cfg
  26. 10
      lgsm/config-default/config-lgsm/vhserver/_default.cfg
  27. 11
      lgsm/data/almalinux-8.csv
  28. 131
      lgsm/data/almalinux-9.csv
  29. 11
      lgsm/data/centos-7.csv
  30. 11
      lgsm/data/centos-8.csv
  31. 130
      lgsm/data/centos-9.csv
  32. 15
      lgsm/data/debian-10.csv
  33. 15
      lgsm/data/debian-11.csv
  34. 15
      lgsm/data/debian-9.csv
  35. 9
      lgsm/data/rhel-7.csv
  36. 9
      lgsm/data/rhel-8.csv
  37. 131
      lgsm/data/rhel-9.csv
  38. 11
      lgsm/data/rocky-8.csv
  39. 131
      lgsm/data/rocky-9.csv
  40. 260
      lgsm/data/serverlist.csv
  41. 13
      lgsm/data/ubuntu-16.04.csv
  42. 15
      lgsm/data/ubuntu-18.04.csv
  43. 15
      lgsm/data/ubuntu-20.04.csv
  44. 17
      lgsm/data/ubuntu-21.04.csv
  45. 15
      lgsm/data/ubuntu-21.10.csv
  46. 17
      lgsm/data/ubuntu-22.04.csv
  47. 4
      lgsm/functions/check.sh
  48. 4
      lgsm/functions/check_deps.sh
  49. 1
      lgsm/functions/check_executable.sh
  50. 6
      lgsm/functions/check_permissions.sh
  51. 2
      lgsm/functions/check_root.sh
  52. 21
      lgsm/functions/command_debug.sh
  53. 56
      lgsm/functions/command_dev_query_raw.sh
  54. 2
      lgsm/functions/command_install.sh
  55. 8
      lgsm/functions/command_monitor.sh
  56. 2
      lgsm/functions/core_exit.sh
  57. 2
      lgsm/functions/core_functions.sh
  58. 2
      lgsm/functions/core_getopt.sh
  59. 4
      lgsm/functions/core_steamcmd.sh
  60. 8
      lgsm/functions/fix_bt.sh
  61. 10
      lgsm/functions/fix_lo.sh
  62. 4
      lgsm/functions/fix_steamcmd.sh
  63. 16
      lgsm/functions/fix_vh.sh
  64. 165
      lgsm/functions/info_game.sh
  65. 28
      lgsm/functions/info_messages.sh
  66. 24
      lgsm/functions/install_config.sh
  67. 2
      lgsm/functions/install_server_files.sh
  68. 7
      lgsm/functions/mods_list.sh
  69. 6
      lgsm/functions/update_papermc.sh
  70. 15
      linuxgsm.sh
  71. 222
      package-lock.json
  72. 2
      tests/tests_fctrserver.sh
  73. 2
      tests/tests_jc2server.sh
  74. 14
      tests/tests_kcov.sh
  75. 2
      tests/tests_mcserver.sh
  76. 32
      tests/tests_shellcheck.sh
  77. 2
      tests/tests_ts3server.sh

50
.github/ISSUE_TEMPLATE/bug-report.md

@ -1,50 +0,0 @@
---
name: Bug Report
about: Found a bug? Raise a report.
title: "[BUG]"
labels: "type: bug"
assignees: ""
---
Issues raised here are **ONLY** for:
- LinuxGSM bugs.
- Feature suggestions.
- Code contributions.
Issues raised here are **NOT** for:
- General support.
- Specific game server issues (e.g CS:GO, TF2).
- Dedicated server issues (e.g Ubuntu, CentOS).
- Anything not directly related to LinuxGSM development.
For general support visit the **[LinuxGSM-Support](https://linuxgsm.com/support)**.
**_Please use the template below, deleting the above text_**
## User Story
As a [user description], I want [desired action] so that [desired outcome].
## Basic info
- **Distro:** [Ubuntu 18.04]
- **Game:** [Garry's Mod]
- **Command:** [Monitor]
- **LinuxGSM version:** [v20.1.3]
## Further Information
A clear description of what the bug is and any ideas on how to resolve it. Plus any further context that might be relevant to the issue.
## To Reproduce
Steps to reproduce the behaviour:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
## Expected behaviour

95
.github/ISSUE_TEMPLATE/bug_report.yml

@ -0,0 +1,95 @@
---
name: Bug Report
description: File a bug report
title: "[Bug]: "
labels: ["type: bug"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: input
id: user-story
attributes:
label: User story
description: As a [user description], I want [desired action] so that [desired outcome].
placeholder: As a [user description], I want [desired action] so that [desired outcome].
validations:
required: true
- type: input
id: game
attributes:
label: Game
description: What game server are you hosting?
placeholder: Valheim
validations:
required: true
- type: dropdown
id: distro
attributes:
label: Linux distro
multiple: true
options:
- Ubuntu 22.04
- Ubuntu 20.04
- Ubuntu 18.04
- Ubuntu 16.04
- Debian 11
- Debian 10
- Debian 9
- RedHat 9
- RedHat 8
- RedHat 7
- Other
validations:
required: true
- type: dropdown
id: command
attributes:
label: Command
multiple: true
options:
- "command: start"
- "command: stop"
- "command: restart"
- "command: monitor"
- "command: details"
- "command: update"
- "command: validate"
- "command: backup"
- "command: mods-install"
- "command: mods-update"
- "command: mods-remove"
- "command: debug"
- "command: console"
- "command: install"
- "command: auto-update"
- "command: update-lgsm"
- "command: wipe"
- "command: send"
validations:
required: true
- type: textarea
id: further-info
attributes:
label: Further information
description: A clear description of what the bug is, any ideas on how to resolve it and any further context that might be relevant to the issue.
placeholder: Tell us what you see!
validations:
required: true
- type: textarea
id: logs
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: shell
- type: textarea
id: steps
attributes:
label: Steps to reproduce
description: Steps to reproduce the behaviour.
placeholder: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

8
.github/ISSUE_TEMPLATE/config.yml

@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Ask a question
about: Ask questions and discuss with other users of LinuxGSM.
url: https://github.com/GameServerManagers/LinuxGSM/discussions
- name: Discord Server
about: Join the LinuxGSM Discord community server. Discuss your LinuxGSM setup, get help and advice
url: https://linuxgsm.com/discord

43
.github/ISSUE_TEMPLATE/feature-request.md

@ -1,43 +0,0 @@
---
name: Feature Request
about: Suggest an idea for LinuxGSM.
title: "[FEATURE]"
labels: "type: feature request"
assignees: ""
---
Issues raised here are **ONLY** for:
- LinuxGSM bugs.
- Feature suggestions.
- Code contributions.
Issues raised here are **NOT** for:
- General support.
- Specific game server issues (e.g CS:GO, TF2).
- Dedicated server issues (e.g Ubuntu, CentOS).
- Anything not directly related to LinuxGSM development.
For general support visit the **[LinuxGSM Support](https://linuxgsm.com/support)** page.
**_Please use the template below, deleting the above text_**
## User Story
As a [user description], I want [desired action] so that [desired outcome].
## Basic info
- **Distro:** [Ubuntu 20.04]
- **Game:** [Garry's Mod]
- **Command:** [Monitor]
- **LinuxGSM version:** [v20.1.3]
## Further Information
A clear description of what the feature is and any ideas on how to achieve this.
## Further Reading
Provide any useful documentation or resources that might help.

78
.github/ISSUE_TEMPLATE/feature_request.yml

@ -0,0 +1,78 @@
---
name: Feature Request
description: Suggest a feature
title: "[Feature]: "
labels: ["type: feature"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this feature request!
- type: input
id: user-story
attributes:
label: User story
description: As a [user description], I want [desired action] so that [desired outcome].
placeholder: As a [user description], I want [desired action] so that [desired outcome].
validations:
required: true
- type: input
id: game
attributes:
label: Game
description: What game server are you hosting?
placeholder: Valheim
validations:
required: false
- type: dropdown
id: distro
attributes:
label: Linux distro
multiple: true
options:
- Ubuntu 22.04
- Ubuntu 20.04
- Ubuntu 18.04
- Ubuntu 16.04
- Debian 11
- Debian 10
- Debian 9
- RedHat 9
- RedHat 8
- RedHat 7
- Other
validations:
required: false
- type: dropdown
id: command
attributes:
label: Command
multiple: true
options:
- "command: start"
- "command: stop"
- "command: restart"
- "command: monitor"
- "command: details"
- "command: update"
- "command: validate"
- "command: backup"
- "command: mods-install"
- "command: mods-update"
- "command: mods-remove"
- "command: debug"
- "command: console"
- "command: install"
- "command: auto-update"
- "command: update-lgsm"
- "command: wipe"
- "command: send"
validations:
required: true
- type: textarea
id: further-info
attributes:
label: Further information
description: A clear description of what the feature is and any ideas on how to achieve this.
validations:
required: true

31
.github/ISSUE_TEMPLATE/new-server-request.md

@ -1,31 +0,0 @@
---
name: New Server Request
about: Suggest a new game server to be added.
title: "[Server Request]"
labels: "type: game server request"
assignees: ""
---
## What game server would you like to add?
[game server]
## Can you link to any tutorials or guides?
Provide any useful documentation or resources that might help.
## Is the server on Steam?
- [ ] Yes
- [ ] No
If yes Use SteamDB to get the appid. (https://steamdb.info).
[appid]
## Is the server supported on Linux?
We only support Linux servers and do **not** support Wine.
- [ ] Yes
- [ ] No

57
.github/ISSUE_TEMPLATE/server_request.yml

@ -0,0 +1,57 @@
---
name: Server Request
description: Suggest a new game server to be added
title: "[Server Request]: "
labels: ["type: game server request"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this game server!
- type: input
id: game-server
attributes:
label: Game server
description: What game server would you like to add?
validations:
required: true
- type: checkboxes
id: on-linux
attributes:
label: Linux support
description: Does this game server have Linux support? (not wine)
options:
- label: "Yes"
validations:
required: true
- type: dropdown
id: on-steam
attributes:
label: Steam
description: Is this game server available on Steam?
options:
- "Yes"
- "No"
validations:
required: true
- type: input
id: steam-id
attributes:
label: Steam appid
description: What is the Steam appid of the game server? Use SteamDB to get the appid. (https://steamdb.info).
placeholder: "892970"
validations:
required: false
- type: textarea
id: guides
attributes:
label: Guides
description: Links to guides on how to install the game server
- type: checkboxes
id: terms
attributes:
label: Code of Conduct
description: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com)
options:
- label: I agree to follow this project's Code of Conduct
required: true

132
.github/labeler.yml

@ -1,53 +1,45 @@
# Add/remove 'critical' label if issue contains the words 'urgent' or 'critical'
# Type
"type: game server request":
- "/(Server Request)/i"
"type: bug":
- "/(bug)/i"
"type: feature request":
- "/(feature)/i"
# Commands
"command: backup": "command: backup":
- "/(backup)/i" - "/(backup)/i"
"command: console": "command: console":
- "/(console|tmux)/i" - "/(console|tmux)/i"
"command: debug": "command: debug":
- "/(debug)/i" - "/(command: debug)/i"
"command: details": "command: details":
- "/(details)/i" - "/(command: details)/i"
"command: fast-dl": "command: fast-dl":
- "/(fast-dl|fastdl)/i" - "/(fast-dl|fastdl)/i"
"command: install": "command: install":
- "/(install)/i" - "/(install)/i"
"command: mods": "command: mods":
- "/(mods)/i" - "/(command: mods)/i"
"command: monitor": "command: monitor":
- "/(monitor)/i" - "/(command: monitor)/i"
"command: post-details": "command: post-details":
- "/(post-details)/i" - "/(command: post-details)/i"
"command: restart": "command: restart":
- "/(restart)/i" - "/(command: restart)/i"
"command: send": "command: send":
- "/(send)/i" - "/(command: send)/i"
"command: skeleton": "command: skeleton":
- "/(skeleton)/i" - "/(command: skeleton)/i"
"command: start": "command: start":
- "/(start)/i" - "/(command: start)/i"
"command: stop": "command: stop":
- "/(stop)/i" - "/(command: stop)/i"
"command: update-lgsm": "command: update-lgsm":
- "/(update-lgsm)/i" - "/(update-lgsm)/i"
"command: update": "command: update":
- "/(update)/i" - "/(command: update)/i"
"command: validate": "command: validate":
- "/(validate)/i" - "/(validate)/i"
"command: wipe": "command: wipe":
- "/(wipe)/i" - "/(wipe)/i"
# Distros # Distros
"distro: AlmaLinux": "distro: AlmaLinux":
- "/(Alma)/i" - "/(Alma)/i"
"distro: Arch Linux": "distro: Arch Linux":
- "/(Arch)/i" - "/(Arch Linux)/i"
"distro: CentOS": "distro: CentOS":
- "/(CentOS)/i" - "/(CentOS)/i"
"distro: Debian": "distro: Debian":
@ -62,6 +54,81 @@
- "/(Slackware)/i" - "/(Slackware)/i"
"distro: Ubuntu": "distro: Ubuntu":
- "/(Ubuntu)/i" - "/(Ubuntu)/i"
# Games
"game: 7 Days to Die":
- "/(7 Days to Die|sdtd)/i"
"game: Ark: Survival Evolved":
- "/(Ark: Survival Evolved|Ark)/i"
"game: ARMA 3":
- "/(ARMA 3|ARMA3)/i"
"game: Assetto Corsa":
- "/(Assetto Corsa)/i"
"game: Avorion":
- "/(Avorion)/i"
"game: Ballistic Overkill":
- "/(Ballistic Overkill)/i"
"game: Battalion 1944":
- "/(Battalion 1944)/i"
"game: Barotrauma":
- "/(Barotrauma)/i"
"game: Counter-Strike: Global Offensive":
- "/(Counter-Strike: Global Offensive|CS:GO|csgo)/i"
"game: Counter-Strike: Source":
- "/(Counter-Strike: Source|CS:S)/i"
"game: Counter-Strike 1.6":
- "/(Counter-Strike 1.6|Counter Strike 1.6|CS 1.6|cs1.6)/i"
"game: Dayz":
- "/(Dayz)/i"
"game: Don't Starve Together":
- "/(Don't Starve Together|Dont Starve Together|DST)/i"
"game: Eco":
- "/(^Eco$)/i"
"game: Factorio":
- "/(Factorio)/i"
"game: Garry's Mod":
- "/(Garry's Mod|Garrys Mod|GMod)/i"
"game: Insurgency: Sandstorm":
- "/(Insurgency: Sandstorm|Insurgency)/i"
"game: Killing Floor 2":
- "/(Killing Floor 2|KF2)/i"
"game: Left 4 Dead 2":
- "/(Left 4 Dead 2|L4D2)/i"
"game: Minecraft":
- "/(minecraft)((?!bedrock).)*$/i"
"game: Minecraft Bedrock":
- "/(Bedrock)/i"
"game: Mumble":
- "/(Mumble)/i"
"game: Project Zomboid":
- "/(Project Zomboid)/i"
"game: Quake 3":
- "/(Quake 3|Q3A|q3)/i"
"game: Rising World":
- "/(Rising World)/i"
"game: Satisfactory":
- "/(Satisfactory)/i"
"game: Squad":
- "/(Squad)/i"
"game: Starbound":
- "/(Starbound)/i"
"game: Stationeers":
- "/(Stationeers)/i"
"game: Teamspeak 3":
- "/(Teamspeak 3|ts3)/i"
"game: Rust":
- "/(Rust)/i"
"game: Unturned":
- "/(Unturned)/i"
"game: Unreal Tournament 99":
- "/(Unreal Tournament 99|ut99)/i"
"game: Unreal Tournament 2004":
- "/(Unreal Tournament 2004|ut2k4)/i"
"game: Unreal Tournament 3":
- "/(Unreal Tournament 3|ut3)/i"
"game: Valheim":
- "/(Valheim)/i"
# Info # Info
"info: alerts": "info: alerts":
- "/(alert)/i" - "/(alert)/i"
@ -70,7 +137,7 @@
"info: docker": "info: docker":
- "/(docker)/i" - "/(docker)/i"
"info: docs": "info: docs":
- "/(documentation|docs)/i" - "/(documentation|^docs$)/i"
"info: email": "info: email":
- "/(postfix|sendmail|exim|smtp)/i" - "/(postfix|sendmail|exim|smtp)/i"
"info: query": "info: query":
@ -83,16 +150,11 @@
- "/(tmux)/i" - "/(tmux)/i"
"info: website": "info: website":
- "/(website)/i" - "/(website)/i"
# Games
"game: Ark: Survival Evolved": # Type
- "/(Ark: Survival Evolved|Ark)/i" "type: game server request":
"game: ARMA 3": - "/(Server Request)/i"
- "/(ARMA 3)/i" "type: bug":
"game: Assetto Corsa": - "/(bug)/i"
- "/(Assetto Corsa)/i" "type: feature request":
"game: Avorion": - "/(feature)/i"
- "/(Avorion)/i"
"game: Ballistic Overkill":
- "/(Ballistic Overkill)/i"
"game: Barotrauma":
- "/(Barotrauma)/i"

8
.github/pull_request_template.md

@ -7,7 +7,7 @@ Fixes #[issue]
## Type of change ## Type of change
- [ ] Bug fix (a change which fixes an issue). - [ ] Bug fix (a change which fixes an issue).
- [ ] New feature (change which adds functionality). - [ ] New feature (a change which adds functionality).
- [ ] New Server (new server added). - [ ] New Server (new server added).
- [ ] Refactor (restructures existing code). - [ ] Refactor (restructures existing code).
- [ ] Comment update (typo, spelling, explanation, examples, etc). - [ ] Comment update (typo, spelling, explanation, examples, etc).
@ -18,12 +18,12 @@ PR will not be merged until all steps are complete.
- [ ] This pull request links to an issue. - [ ] This pull request links to an issue.
- [ ] This pull request uses the `develop` branch as its base. - [ ] This pull request uses the `develop` branch as its base.
- [ ] This pull request Subject follows the Conventional Commits standard. - [ ] This pull request subject follows the Conventional Commits standard.
- [ ] This code follows the style guidelines of this project. - [ ] This code follows the style guidelines of this project.
- [ ] I have performed a self-review of my code. - [ ] I have performed a self-review of my code.
- [ ] I have checked that this code is commented where required. - [ ] I have checked that this code is commented where required.
- [ ] I have provided a detailed with enough description of this PR. - [ ] I have provided a detailed enough description of this PR.
- [ ] I have checked If documentation needs updating. - [ ] I have checked if documentation needs updating.
## Documentation ## Documentation

23
.github/workflows/create-release.yml

@ -1,23 +0,0 @@
name: Release Drafter
on:
push:
# branches to consider in the event; optional, defaults to all
branches:
- master
permissions:
contents: read
jobs:
update_release_draft:
permissions:
contents: write # for release-drafter/release-drafter to create a github release
pull-requests: write # for release-drafter/release-drafter to add label to PR
runs-on: ubuntu-latest
steps:
# Drafts your next Release notes as Pull Requests are merged into "master"
- uses: release-drafter/[email protected]
with:
config-name: release-drafter.yml
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

4
.github/workflows/git-sync.yml

@ -10,8 +10,8 @@ jobs:
GitHub-to-Bitbucket: GitHub-to-Bitbucket:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: webfactory/ssh-agent@v0.5.4 - name: webfactory/ssh-agent@v0.7.0
uses: webfactory/ssh-agent@v0.5.4 uses: webfactory/ssh-agent@v0.7.0
with: with:
ssh-private-key: ${{ secrets.BITBUCKET_SECRET }} ssh-private-key: ${{ secrets.BITBUCKET_SECRET }}

15
.github/workflows/labeler.yml

@ -2,6 +2,8 @@ name: "Issue Labeler"
on: on:
issues: issues:
types: [opened, edited] types: [opened, edited]
pull_request:
types: [opened, edited]
permissions: permissions:
contents: read contents: read
@ -13,9 +15,10 @@ jobs:
issues: write # for github/issue-labeler to create or remove labels issues: write # for github/issue-labeler to create or remove labels
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: github/[email protected] - uses: github/[email protected]
with: with:
repo-token: "${{ secrets.GITHUB_TOKEN }}" repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: .github/labeler.yml configuration-path: .github/labeler.yml
not-before: not-before:
enable-versioned-regex: 0 enable-versioned-regex: 0
include-title: 1

55
.github/workflows/linter.yml

@ -1,55 +0,0 @@
---
#################################
#################################
## Super Linter GitHub Actions ##
#################################
#################################
name: Lint Code Base
#
# Documentation:
# https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
#
#############################
# Start the job on all push #
#############################
on:
push:
branches-ignore: [master, main]
# Remove the line above to run when pushing to master
pull_request:
###############
# Set the Job #
###############
jobs:
build:
# Name the Job
name: Lint Code Base
# Set the agent to run on
runs-on: ubuntu-latest
##################
# Load all steps #
##################
steps:
##########################
# Checkout the code base #
##########################
- name: Checkout Code
uses: actions/checkout@v2
with:
# Full git history is needed to get a proper list of changed files within `super-linter`
fetch-depth: 0
################################
# Run Linter against code base #
################################
- name: Lint Code Base
uses: github/super-linter@v4
env:
VALIDATE_ALL_CODEBASE: false
# Change to 'master' if your main branch differs
DEFAULT_BRANCH: main
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

2
.github/workflows/lock.yml

@ -14,7 +14,7 @@ jobs:
pull-requests: write # for dessant/lock-threads to lock PRs pull-requests: write # for dessant/lock-threads to lock PRs
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: dessant/lock-threads@v3 - uses: dessant/lock-threads@v4
with: with:
github-token: ${{ secrets.GITHUB_TOKEN }} github-token: ${{ secrets.GITHUB_TOKEN }}
issue-comment: > issue-comment: >

2
.github/workflows/potential-duplicates.yml

@ -20,7 +20,7 @@ jobs:
# Get issues with state to compare. Supported state: 'all', 'closed', 'open'. # Get issues with state to compare. Supported state: 'all', 'closed', 'open'.
state: all state: all
# If similarity is higher than this threshold([0,1]), issue will be marked as duplicate. # If similarity is higher than this threshold([0,1]), issue will be marked as duplicate.
threshold: 0.6 threshold: 0.8
# Reactions to be add to comment when potential duplicates are detected. # Reactions to be add to comment when potential duplicates are detected.
# Available reactions: "-1", "+1", "confused", "laugh", "heart", "hooray", "rocket", "eyes" # Available reactions: "-1", "+1", "confused", "laugh", "heart", "hooray", "rocket", "eyes"
#reactions: 'eyes, confused' #reactions: 'eyes, confused'

27
.github/workflows/trigger-docker-build.yml

@ -0,0 +1,27 @@
name: Trigger Docker Build
on:
release:
types:
- published
jobs:
trigger_build_docker-linuxgsm:
name: Trigger Build docker-linuxgsm
runs-on: ubuntu-latest
steps:
- uses: convictional/[email protected]
with:
owner: GameServerManagers
repo: docker-linuxgsm
github_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
workflow_file_name: docker-publish.yml
trigger_build_docker-gameserver:
name: Trigger Build docker-linuxgsm
runs-on: ubuntu-latest
steps:
- uses: convictional/[email protected]
with:
owner: GameServerManagers
repo: docker-gameserver
github_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
workflow_file_name: docker-publish.yml

7
.github/workflows/update-copyright-years-in-license-file.yml

@ -2,6 +2,7 @@
name: Update copyright year(s) in license file name: Update copyright year(s) in license file
on: on:
workflow_dispatch:
schedule: schedule:
- cron: "0 3 1 1 *" # 03:00 AM on January 1 - cron: "0 3 1 1 *" # 03:00 AM on January 1
@ -15,3 +16,9 @@ jobs:
- uses: FantasticFiasco/action-update-license-year@v2 - uses: FantasticFiasco/action-update-license-year@v2
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
path: LICENSE.md
- name: Merge pull request
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh pr merge --merge --delete-branch

1
.github/workflows/version-check.sh

@ -1,3 +1,4 @@
#!/bin/bash
version=$(grep "version=" linuxgsm.sh | sed -e 's/version//g' | tr -d '="') version=$(grep "version=" linuxgsm.sh | sed -e 's/version//g' | tr -d '="')
modulesversion=$(grep "modulesversion=" lgsm/functions/core_functions.sh | sed -e 's/modulesversion//g' | tr -d '="') modulesversion=$(grep "modulesversion=" lgsm/functions/core_functions.sh | sed -e 's/modulesversion//g' | tr -d '="')

2
LICENSE → LICENSE.md

@ -1,6 +1,6 @@
# The MIT License (MIT) # The MIT License (MIT)
Copyright (c) 2012-2022 Daniel Gibbs Copyright (c) 2012-2023 Daniel Gibbs
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

14
README.md

File diff suppressed because one or more lines are too long

179
lgsm/config-default/config-lgsm/atsserver/_default.cfg

@ -0,0 +1,179 @@
##################################
######## Default Settings ########
##################################
# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN!
# Copy settings from here and use them in either:
# common.cfg - applies settings to every instance.
# [instance].cfg - applies settings to a specific instance.
#### Game Server Settings ####
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
startparameters="-nosingle"
#### LinuxGSM Settings ####
## LinuxGSM Stats
# Send useful stats to LinuxGSM developers.
# https://docs.linuxgsm.com/configuration/linuxgsm-stats
# (on|off)
stats="off"
## Notification Alerts
# (on|off)
# Display IP | https://docs.linuxgsm.com/alerts#display-ip
displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
# Email Alerts | https://docs.linuxgsm.com/alerts/email
emailalert="off"
email="[email protected]"
emailfrom=""
# Gotify Alerts | https://docs.linuxgsm.com/alerts/gotify
gotifyalert="off"
gotifytoken="token"
gotifywebhook="webhook"
# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt
iftttalert="off"
ifttttoken="accesstoken"
iftttevent="linuxgsm_alert"
# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun
mailgunalert="off"
mailgunapiregion="us"
mailguntoken="accesstoken"
mailgundomain="example.com"
mailgunemailfrom="[email protected]"
mailgunemail="[email protected]"
# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet
pushbulletalert="off"
pushbullettoken="accesstoken"
channeltag=""
# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover
pushoveralert="off"
pushovertoken="accesstoken"
pushoveruserkey="userkey"
# Rocket.Chat Alerts | https://docs.linuxgsm.com/alerts/rocket.chat
rocketchatalert="off"
rocketchatwebhook="webhook"
rocketchattoken=""
# Slack Alerts | https://docs.linuxgsm.com/alerts/slack
slackalert="off"
slackwebhook="webhook"
# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram
# You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring".
# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
updateonstart="off"
## Backup | https://docs.linuxgsm.com/commands/backup
maxbackups="4"
maxbackupdays="30"
stoponbackup="on"
## Logging | https://docs.linuxgsm.com/features/logging
consolelogging="on"
logdays="7"
## Monitor | https://docs.linuxgsm.com/commands/monitor
# Query delay time
querydelay="1"
## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors
ansi="on"
#### Advanced Settings ####
## Message Display Time | https://docs.linuxgsm.com/features/message-display-time
sleeptime="0.5"
## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd
# Server appid
appid="2239530"
steamcmdforcewindows="no"
# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch
branch=""
betapassword=""
# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server
steammaster="true"
## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
# 1: tmux kill
# 2: CTRL+c
# 3: quit
# 4: quit 120s
# 5: stop
# 6: q
# 7: exit
# 8: 7 Days to Die
# 9: GoldSrc
# 10: Avorion
# 11: end
stopmode="2"
## Query mode
# 1: session only
# 2: gamedig (gsquery fallback)
# 3: gamedig
# 4: gsquery
# 5: tcp
querymode="4"
querytype="protocol-valve"
## Console type
consoleverbose="yes"
consoleinteract="no"
## Game Server Details
# Do not edit
gamename="American Truck Simulator"
engine="prism3d"
glibc="2.15"
#### Directories ####
# Edit with care
## Game Server Directories
systemdir="${serverfiles}"
executabledir="${systemdir}/bin/linux_x64"
executable="./amtrucks_server"
servercfgdir="${HOME}/.local/share/American Truck Simulator"
servercfg="server_config.sii"
servercfgdefault="server_config.sii"
servercfgfullpath="${servercfgdir}/${servercfg}"
## Backup Directory
backupdir="${lgsmdir}/backup"
## Logging Directories
logdir="${rootdir}/log"
lgsmlogdir="${logdir}/script"
consolelogdir="${logdir}/console"
lgsmlog="${lgsmlogdir}/${selfname}-script.log"
consolelog="${consolelogdir}/${selfname}-console.log"
alertlog="${lgsmlogdir}/${selfname}-alert.log"
postdetailslog="${lgsmlogdir}/${selfname}-postdetails.log"
## Logs Naming
lgsmlogdate="${lgsmlogdir}/${selfname}-script-$(date '+%Y-%m-%d-%H:%M:%S').log"
consolelogdate="${consolelogdir}/${selfname}-console-$(date '+%Y-%m-%d-%H:%M:%S').log"

30
lgsm/config-default/config-lgsm/csgoserver/_default.cfg

@ -10,17 +10,27 @@
## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters ## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
# https://docs.linuxgsm.com/game-servers/counter-strike-global-offensive # https://docs.linuxgsm.com/game-servers/counter-strike-global-offensive
# [Game Modes] gametype gamemode mapgroup (you can mix these across all Game Modes except Danger Zone, but use only one) # [Game Modes] gametype gamemode gamemodeflags skirmishid mapgroup (you can mix these across all Game Modes except Danger Zone, but use only one)
# Arms Race 1 0 mg_armsrace # Arms Race 1 0 0 0 mg_armsrace
# Classic Casual 0 0 mg_casualsigma, mg_casualdelta # Boom! Headshot! 1 2 0 6 mg_skirmish_headshots
# Classic Competitive 0 1 mg_active, mg_reserves, mg_hostage, mg_de_dust2 # Classic Casual 0 0 0 0 mg_casualsigma, mg_casualdelta
# Custom 3 0 # Classic Competitive (Default) 0 1 0 0 mg_active, mg_reserves, mg_hostage, mg_de_dust2, ...
# Deathmatch 1 2 mg_deathmatch # Classic Competitive (Short Match) 0 1 32 0 mg_active, mg_reserves, mg_hostage, mg_de_dust2, ...
# Demolition 1 1 mg_demolition # Danger Zone 6 0 0 0 mg_dz_blacksite (map: dz_blacksite), mg_dz_sirocco (map: dz_sirocco)
# Wingman 0 2 # Deathmatch (Default) 1 2 0 0 mg_deathmatch
# Danger Zone 6 0 mg_dz_blacksite (map: dz_blacksite), mg_dz_sirocco (map: dz_sirocco) # Deathmatch (Free For All) 1 2 32 0 mg_deathmatch
# Deathmatch (Team vs Team) 1 2 4 0 mg_deathmatch
# Demolition 1 1 0 0 mg_demolition
# Flying Scoutsman 0 0 0 3 mg_skirmish_flyingscoutsman
# Hunter-Gatherers 1 2 0 7 mg_skirmish_huntergatherers
# Retakes 0 0 0 12 mg_skirmish_retakes
# Stab Stab Zap 0 0 0 1 mg_skirmish_stabstabzap
# Trigger Discipline 0 0 0 4 mg_skirmish_triggerdiscipline
# Wingman 0 2 0 0 mg_de_prime, mg_de_blagai, mg_de_vertigo, mg_de_inferno, mg_de_overpass, mg_de_cbble, mg_de_train, mg_de_shortnuke, mg_de_shortdust, mg_de_lake
gametype="0" gametype="0"
gamemode="0" gamemode="0"
gamemodeflags="0"
skirmishid="0"
mapgroup="mg_active" mapgroup="mg_active"
ip="0.0.0.0" ip="0.0.0.0"
port="27015" port="27015"
@ -43,7 +53,7 @@ wscollectionid=""
wsstartmap="" wsstartmap=""
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
startparameters="-game csgo -usercon -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers_override ${maxplayers} +mapgroup ${mapgroup} +game_type ${gametype} +game_mode ${gamemode} +host_workshop_collection ${wscollectionid} +workshop_start_map ${wsstartmap} -authkey ${wsapikey} -nobreakpad" startparameters="-game csgo -usercon -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers_override ${maxplayers} +mapgroup ${mapgroup} +game_type ${gametype} +game_mode ${gamemode} +sv_game_mode_flags ${gamemodeflags} +sv_skirmish_id ${skirmishid} +host_workshop_collection ${wscollectionid} +workshop_start_map ${wsstartmap} -authkey ${wsapikey} -nobreakpad"
#### LinuxGSM Settings #### #### LinuxGSM Settings ####

179
lgsm/config-default/config-lgsm/ets2server/_default.cfg

@ -0,0 +1,179 @@
##################################
######## Default Settings ########
##################################
# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN!
# Copy settings from here and use them in either:
# common.cfg - applies settings to every instance.
# [instance].cfg - applies settings to a specific instance.
#### Game Server Settings ####
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
startparameters="-nosingle"
#### LinuxGSM Settings ####
## LinuxGSM Stats
# Send useful stats to LinuxGSM developers.
# https://docs.linuxgsm.com/configuration/linuxgsm-stats
# (on|off)
stats="off"
## Notification Alerts
# (on|off)
# Display IP | https://docs.linuxgsm.com/alerts#display-ip
displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
# Email Alerts | https://docs.linuxgsm.com/alerts/email
emailalert="off"
email="[email protected]"
emailfrom=""
# Gotify Alerts | https://docs.linuxgsm.com/alerts/gotify
gotifyalert="off"
gotifytoken="token"
gotifywebhook="webhook"
# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt
iftttalert="off"
ifttttoken="accesstoken"
iftttevent="linuxgsm_alert"
# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun
mailgunalert="off"
mailgunapiregion="us"
mailguntoken="accesstoken"
mailgundomain="example.com"
mailgunemailfrom="[email protected]"
mailgunemail="[email protected]"
# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet
pushbulletalert="off"
pushbullettoken="accesstoken"
channeltag=""
# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover
pushoveralert="off"
pushovertoken="accesstoken"
pushoveruserkey="userkey"
# Rocket.Chat Alerts | https://docs.linuxgsm.com/alerts/rocket.chat
rocketchatalert="off"
rocketchatwebhook="webhook"
rocketchattoken=""
# Slack Alerts | https://docs.linuxgsm.com/alerts/slack
slackalert="off"
slackwebhook="webhook"
# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram
# You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring".
# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
updateonstart="off"
## Backup | https://docs.linuxgsm.com/commands/backup
maxbackups="4"
maxbackupdays="30"
stoponbackup="on"
## Logging | https://docs.linuxgsm.com/features/logging
consolelogging="on"
logdays="7"
## Monitor | https://docs.linuxgsm.com/commands/monitor
# Query delay time
querydelay="1"
## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors
ansi="on"
#### Advanced Settings ####
## Message Display Time | https://docs.linuxgsm.com/features/message-display-time
sleeptime="0.5"
## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd
# Server appid
appid="1948160"
steamcmdforcewindows="no"
# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch
branch=""
betapassword=""
# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server
steammaster="true"
## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
# 1: tmux kill
# 2: CTRL+c
# 3: quit
# 4: quit 120s
# 5: stop
# 6: q
# 7: exit
# 8: 7 Days to Die
# 9: GoldSrc
# 10: Avorion
# 11: end
stopmode="2"
## Query mode
# 1: session only
# 2: gamedig (gsquery fallback)
# 3: gamedig
# 4: gsquery
# 5: tcp
querymode="4"
querytype="protocol-valve"
## Console type
consoleverbose="yes"
consoleinteract="no"
## Game Server Details
# Do not edit
gamename="Euro Truck Simulator 2"
engine="prism3d"
glibc="2.15"
#### Directories ####
# Edit with care
## Game Server Directories
systemdir="${serverfiles}"
executabledir="${systemdir}/bin/linux_x64"
executable="./eurotrucks2_server"
servercfgdir="${HOME}/.local/share/Euro Truck Simulator 2"
servercfg="server_config.sii"
servercfgdefault="server_config.sii"
servercfgfullpath="${servercfgdir}/${servercfg}"
## Backup Directory
backupdir="${lgsmdir}/backup"
## Logging Directories
logdir="${rootdir}/log"
lgsmlogdir="${logdir}/script"
consolelogdir="${logdir}/console"
lgsmlog="${lgsmlogdir}/${selfname}-script.log"
consolelog="${consolelogdir}/${selfname}-console.log"
alertlog="${lgsmlogdir}/${selfname}-alert.log"
postdetailslog="${lgsmlogdir}/${selfname}-postdetails.log"
## Logs Naming
lgsmlogdate="${lgsmlogdir}/${selfname}-script-$(date '+%Y-%m-%d-%H:%M:%S').log"
consolelogdate="${consolelogdir}/${selfname}-console-$(date '+%Y-%m-%d-%H:%M:%S').log"

182
lgsm/config-default/config-lgsm/necserver/_default.cfg

@ -0,0 +1,182 @@
##################################
######## Default Settings ########
##################################
# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN!
# Copy settings from here and use them in either:
# common.cfg - applies settings to every instance.
# [instance].cfg - applies settings to a specific instance.
#### Game Server Settings ####
## Pre-defined Paramters | https://docs.linuxgsm.com/configuration/start-parameters#predefined-parameters
worldname="MyWorld"
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
startparameters="-localdir -world ${worldname}"
#### LinuxGSM Settings ####
## LinuxGSM Stats
# Send useful stats to LinuxGSM developers.
# https://docs.linuxgsm.com/configuration/linuxgsm-stats
# (on|off)
stats="off"
## Notification Alerts
# (on|off)
# Display IP | https://docs.linuxgsm.com/alerts#display-ip
displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
# Email Alerts | https://docs.linuxgsm.com/alerts/email
emailalert="off"
email="[email protected]"
emailfrom=""
# Gotify Alerts | https://docs.linuxgsm.com/alerts/gotify
gotifyalert="off"
gotifytoken="token"
gotifywebhook="webhook"
# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt
iftttalert="off"
ifttttoken="accesstoken"
iftttevent="linuxgsm_alert"
# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun
mailgunalert="off"
mailgunapiregion="us"
mailguntoken="accesstoken"
mailgundomain="example.com"
mailgunemailfrom="[email protected]"
mailgunemail="[email protected]"
# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet
pushbulletalert="off"
pushbullettoken="accesstoken"
channeltag=""
# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover
pushoveralert="off"
pushovertoken="accesstoken"
pushoveruserkey="userkey"
# Rocket.Chat Alerts | https://docs.linuxgsm.com/alerts/rocket.chat
rocketchatalert="off"
rocketchatwebhook="webhook"
rocketchattoken=""
# Slack Alerts | https://docs.linuxgsm.com/alerts/slack
slackalert="off"
slackwebhook="webhook"
# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram
# You can add a custom cURL string eg proxy (useful in Russia) in "curlcustomstring".
# For example "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help".
telegramapi="api.telegram.org"
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
updateonstart="off"
## Backup | https://docs.linuxgsm.com/commands/backup
maxbackups="4"
maxbackupdays="30"
stoponbackup="on"
## Logging | https://docs.linuxgsm.com/features/logging
consolelogging="on"
logdays="7"
## Monitor | https://docs.linuxgsm.com/commands/monitor
# Query delay time
querydelay="1"
## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors
ansi="on"
#### Advanced Settings ####
## Message Display Time | https://docs.linuxgsm.com/features/message-display-time
sleeptime="0.5"
## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd
# Server appid
appid="1169370"
steamcmdforcewindows="no"
# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch
branch=""
betapassword=""
# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server
steammaster="false"
## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
# 1: tmux kill
# 2: CTRL+c
# 3: quit
# 4: quit 120s
# 5: stop
# 6: q
# 7: exit
# 8: 7 Days to Die
# 9: GoldSrc
# 10: Avorion
# 11: end
stopmode="2"
## Query mode
# 1: session only
# 2: gamedig (gsquery fallback)
# 3: gamedig
# 4: gsquery
# 5: tcp
querymode="2"
querytype="protocol-valve"
## Console type
consoleverbose="yes"
consoleinteract="no"
## Game Server Details
# Do not edit
gamename="Necesse"
engine="null"
glibc="2.9"
#### Directories ####
# Edit with care
## Game Server Directories
systemdir="${serverfiles}"
executabledir="${serverfiles}"
executable="./StartServer-nogui.sh"
servercfgdir="${serverfiles}/cfg"
servercfg="server.cfg"
servercfgdefault="server.cfg"
servercfgfullpath="${servercfgdir}/${servercfg}"
## Backup Directory
backupdir="${lgsmdir}/backup"
## Logging Directories
logdir="${rootdir}/log"
gamelogdir="${systemdir}/logs"
lgsmlogdir="${logdir}/script"
consolelogdir="${logdir}/console"
lgsmlog="${lgsmlogdir}/${selfname}-script.log"
consolelog="${consolelogdir}/${selfname}-console.log"
alertlog="${lgsmlogdir}/${selfname}-alert.log"
postdetailslog="${lgsmlogdir}/${selfname}-postdetails.log"
## Logs Naming
lgsmlogdate="${lgsmlogdir}/${selfname}-script-$(date '+%Y-%m-%d-%H:%M:%S').log"
consolelogdate="${consolelogdir}/${selfname}-console-$(date '+%Y-%m-%d-%H:%M:%S').log"

3
lgsm/config-default/config-lgsm/rustserver/_default.cfg

@ -13,6 +13,7 @@ ip="0.0.0.0"
port="28015" port="28015"
rconport="28016" rconport="28016"
appport=28082 appport=28082
queryport=28017
rconpassword="CHANGE_ME" rconpassword="CHANGE_ME"
rconweb="1" # Value is: 1 for the Facepunch web panel, Rustadmin desktop and Rustadmin Online; 0 for RCON tools like Rusty. rconweb="1" # Value is: 1 for the Facepunch web panel, Rustadmin desktop and Rustadmin Online; 0 for RCON tools like Rusty.
servername="Rust" servername="Rust"
@ -27,7 +28,7 @@ saveinterval="300" # Auto-save in seconds.
tickrate="30" # default: 30, range: 15-100. tickrate="30" # default: 30, range: 15-100.
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
startparameters="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.gamemode ${gamemode} +server.level \"${serverlevel}\" +server.seed ${seed} +server.salt ${salt} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile" startparameters="-batchmode +app.listenip ${ip} +app.port ${appport} +server.ip ${ip} +server.port ${port} +server.queryport ${queryport} +server.tickrate ${tickrate} +server.hostname \"${servername}\" +server.identity \"${selfname}\" +server.gamemode ${gamemode} +server.level \"${serverlevel}\" +server.seed ${seed} +server.salt ${salt} +server.maxplayers ${maxplayers} +server.worldsize ${worldsize} +server.saveinterval ${saveinterval} +rcon.web ${rconweb} +rcon.ip ${ip} +rcon.port ${rconport} +rcon.password \"${rconpassword}\" -logfile"
#### LinuxGSM Settings #### #### LinuxGSM Settings ####

10
lgsm/config-default/config-lgsm/vhserver/_default.cfg

@ -16,9 +16,17 @@ port="2456"
gameworld="${selfname}" gameworld="${selfname}"
public="1" public="1"
savedir="$HOME/.config/unity3d/IronGate/Valheim" savedir="$HOME/.config/unity3d/IronGate/Valheim"
logFile=""
saveinterval="1800"
backups="4"
backupshort="7200"
backuplong="43200"
# If crossplay is empty, it's off. Fill with any text to make true
# Crossplay is currently not working on Linux dedicated servers, so for now the default is false (emtpy)
crossplay=""
## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters ## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
startparameters="-name '${servername}' -password ${serverpassword} -port ${port} -world ${gameworld} -public ${public} -savedir '${savedir}'" startparameters="-name '${servername}' -password ${serverpassword} -port ${port} -world ${gameworld} -public ${public} -savedir '${savedir}' -logFile '${logFile}' -saveinterval ${saveinterval} -backups ${backups} -backupshort ${backupshort} -backuplong ${backuplong} ${crossplay:+-crossplay}"
#### LinuxGSM Settings #### #### LinuxGSM Settings ####

11
lgsm/data/almalinux-8.csv

@ -6,6 +6,7 @@ ahl2
ark ark
arma3 arma3
armar,libcurl,openssl-libs armar,libcurl,openssl-libs
ats
av av
bb bb
bb2,libcurl.i686 bb2,libcurl.i686
@ -15,7 +16,7 @@ bfv,compat-libstdc++-33.i686,glibc.i686
bmdm,ncurses-libs.i686 bmdm,ncurses-libs.i686
bo bo
bs bs
bt,libicu bt,libicu,dos2unix
bt1944 bt1944
cc cc
cd cd
@ -43,6 +44,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,ncurses-libs.i686 gmod,ncurses-libs.i686
@ -58,9 +60,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,java-11-openjdk mc,java-11-openjdk
mcb,libnsl mcb,libnsl
mh mh
@ -69,6 +71,7 @@ mom
mta,ncurses-compat-libs mta,ncurses-compat-libs
mumble mumble
nd nd
nec
nmrih,ncurses-libs.i686 nmrih,ncurses-libs.i686
ns ns
ns2,speex,tbb ns2,speex,tbb
@ -96,8 +99,8 @@ sbots
scpsl scpsl
scpslsm scpslsm
sdtd,telnet,expect sdtd,telnet,expect
sfc,ncurses-libs.i686
sf sf
sfc,ncurses-libs.i686
sof2 sof2
sol sol
squad squad
@ -118,9 +121,9 @@ ut2k4
ut3 ut3
ut99 ut99
vh,glibc-devel vh,glibc-devel
vs
vints,mono-complete vints,mono-complete
vpmc,java-11-openjdk vpmc,java-11-openjdk
vs
wet wet
wf wf
wmc,java-11-openjdk wmc,java-11-openjdk

Can't render this file because it has a wrong number of fields in line 2.

131
lgsm/data/almalinux-9.csv

@ -0,0 +1,131 @@
all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
ahl2
ark
arma3
armar,libcurl,openssl-libs
ats
av
bb
bb2,libcurl.i686
bd
bf1942,ncurses-libs.i686
bfv,compat-libstdc++-33.i686,glibc.i686
bmdm,ncurses-libs.i686
bo
bs
bt,libicu,dos2unix
bt1944
cc
cd
cmw
cod,compat-libstdc++-33.i686
cod2,compat-libstdc++-33.i686
cod4
coduo,compat-libstdc++-33.i686
codwaw
col
cs
cscz
csgo
css,ncurses-libs.i686
dab
dayz
dmc
dod
dodr
dods
doi
dst,libcurl.i686
dys
eco,libgdiplus
em
etl
ets2
fctr
fof
gmod,ncurses-libs.i686
hl2dm
hldm
hldms
hw,zlib-devel
ins
inss
ios
jc2
jc3
jk2
kf
kf2
l4d
l4d2
lo
mc,java-11-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
mom
mta,ncurses-compat-libs
mumble
nd
nec
nmrih,ncurses-libs.i686
ns
ns2,speex,tbb
ns2c,speex.i686,tbb.i686
onset,mariadb-connector-c
opfor
pc
pmc,java-11-openjdk
pstbs,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
q2
q3
ql
qw
ricochet
ro
rtcw
rust,zlib-devel
rw,java-11-openjdk
samp
sb
sbots
scpsl
scpslsm
sdtd,telnet,expect
sf
sfc,ncurses-libs.i686
sof2
sol
squad
st
stn
sven
terraria
tf2,libcurl.i686
tfc
ti
ts
ts3
tu
tw
unt
ut
ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vpmc,java-11-openjdk
vs
wet
wf
wmc,java-11-openjdk
wurm,xorg-x11-server-Xvfb
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
Can't render this file because it has a wrong number of fields in line 2.

11
lgsm/data/centos-7.csv

@ -6,6 +6,7 @@ ahl2
ark ark
arma3 arma3
armar,libcurl,openssl11-libs armar,libcurl,openssl11-libs
ats
av av
bb bb
bb2,libcurl.i686 bb2,libcurl.i686
@ -15,7 +16,7 @@ bfv,compat-libstdc++-33.i686,glibc.i686
bmdm,ncurses-libs.i686 bmdm,ncurses-libs.i686
bo bo
bs bs
bt,libicu bt,libicu,dos2unix
bt1944 bt1944
cc cc
cd cd
@ -43,6 +44,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,ncurses-libs.i686 gmod,ncurses-libs.i686
@ -58,9 +60,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,java-11-openjdk mc,java-11-openjdk
mcb,libnsl mcb,libnsl
mh mh
@ -69,6 +71,7 @@ mom
mta,ncurses-libs mta,ncurses-libs
mumble mumble
nd nd
nec
nmrih,ncurses-libs.i686 nmrih,ncurses-libs.i686
ns ns
ns2,speex,tbb ns2,speex,tbb
@ -96,8 +99,8 @@ sbots
scpsl scpsl
scpslsm scpslsm
sdtd,telnet,expect sdtd,telnet,expect
sfc,ncurses-libs.i686
sf sf
sfc,ncurses-libs.i686
sof2 sof2
sol sol
squad squad
@ -118,8 +121,8 @@ ut2k4
ut3 ut3
ut99 ut99
vh,glibc-devel vh,glibc-devel
vs
vints,mono-complete vints,mono-complete
vs
wet wet
wf wf
wmc,java-11-openjdk wmc,java-11-openjdk

Can't render this file because it has a wrong number of fields in line 2.

11
lgsm/data/centos-8.csv

@ -6,6 +6,7 @@ ahl2
ark ark
arma3 arma3
armar,libcurl,openssl-libs armar,libcurl,openssl-libs
ats
av av
bb bb
bb2,libcurl.i686 bb2,libcurl.i686
@ -15,7 +16,7 @@ bfv,compat-libstdc++-33.i686,glibc.i686
bmdm,ncurses-libs.i686 bmdm,ncurses-libs.i686
bo bo
bs bs
bt,libicu bt,libicu,dos2unix
bt1944 bt1944
cc cc
cd cd
@ -43,6 +44,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,ncurses-libs.i686 gmod,ncurses-libs.i686
@ -58,9 +60,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,java-11-openjdk mc,java-11-openjdk
mcb,libnsl mcb,libnsl
mh mh
@ -69,6 +71,7 @@ mom
mta,ncurses-compat-libs mta,ncurses-compat-libs
mumble mumble
nd nd
nec
nmrih,ncurses-libs.i686 nmrih,ncurses-libs.i686
ns ns
ns2,speex,tbb ns2,speex,tbb
@ -96,8 +99,8 @@ sbots
scpsl scpsl
scpslsm scpslsm
sdtd,telnet,expect sdtd,telnet,expect
sfc,ncurses-libs.i686
sf sf
sfc,ncurses-libs.i686
sof2 sof2
sol sol
squad squad
@ -117,9 +120,9 @@ ut2k4
ut3 ut3
ut99 ut99
vh,glibc-devel vh,glibc-devel
vs
vints,mono-complete vints,mono-complete
vpmc,java-11-openjdk vpmc,java-11-openjdk
vs
wet wet
wf wf
wmc,java-11-openjdk wmc,java-11-openjdk

Can't render this file because it has a wrong number of fields in line 2.

130
lgsm/data/centos-9.csv

@ -0,0 +1,130 @@
all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
ahl2
ark
arma3
armar,libcurl,openssl-libs
ats
av
bb
bb2,libcurl.i686
bd
bf1942,ncurses-libs.i686
bfv,compat-libstdc++-33.i686,glibc.i686
bmdm,ncurses-libs.i686
bo
bs
bt,libicu,dos2unix
bt1944
cc
cd
cmw
cod,compat-libstdc++-33.i686
cod2,compat-libstdc++-33.i686
cod4
coduo,compat-libstdc++-33.i686
codwaw
col
cs
cscz
csgo
css,ncurses-libs.i686
dab
dayz
dmc
dod
dodr
dods
doi
dst,libcurl.i686
dys
eco,libgdiplus
em
etl
ets2
fctr
fof
gmod,ncurses-libs.i686
hl2dm
hldm
hldms
hw,zlib-devel
ins
inss
ios
jc2
jc3
jk2
kf
kf2
l4d
l4d2
lo
mc,java-11-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
mom
mta,ncurses-compat-libs
mumble
nd
nec
nmrih,ncurses-libs.i686
ns
ns2,speex,tbb
ns2c,speex.i686,tbb.i686
onset,mariadb-connector-c
opfor
pc
pmc,java-11-openjdk
pstbs,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
q2
q3
ql
qw
ricochet
ro
rtcw
rust,zlib-devel
rw,java-11-openjdk
samp
sb
sbots
scpsl
scpslsm
sdtd,telnet,expect
sf
sfc,ncurses-libs.i686
sof2
sol
squad
st
sven
terraria
tf2,libcurl.i686
tfc
ti
ts
ts3
tu
tw
unt
ut
ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vpmc,java-11-openjdk
vs
wet
wf
wmc,java-11-openjdk
wurm,xorg-x11-server-Xvfb
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
Can't render this file because it has a wrong number of fields in line 2.

15
lgsm/data/debian-10.csv

@ -5,7 +5,8 @@ ahl
ahl2 ahl2
ark ark
arma3 arma3
armar,libcurl4,libssl1.1 armar,libcurl4
ats
av av
bb bb
bb2,libcurl4-gnutls-dev:i386 bb2,libcurl4-gnutls-dev:i386
@ -15,7 +16,7 @@ bfv,libncurses5:i386,libstdc++5:i386
bmdm,libncurses5:i386 bmdm,libncurses5:i386
bo bo
bs bs
bt,libicu-dev bt,libicu-dev,dos2unix
bt1944 bt1944
cc cc
cd cd
@ -43,6 +44,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,libtinfo5:i386 gmod,libtinfo5:i386
@ -58,9 +60,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,openjdk-11-jre mc,openjdk-11-jre
mcb mcb
mh mh
@ -69,11 +71,12 @@ mom
mta,libncursesw5 mta,libncursesw5
mumble mumble
nd nd
nec
nmrih,libtinfo5:i386 nmrih,libtinfo5:i386
ns ns
ns2,speex,libtbb2 ns2,speex,libtbb2
ns2c,speex:i386,libtbb2 ns2c,speex:i386,libtbb2
onset,libmariadbclient-dev onset,libmariadb-dev
opfor opfor
pc pc
pmc,openjdk-11-jre pmc,openjdk-11-jre
@ -96,8 +99,8 @@ sbots
scpsl,mono-complete scpsl,mono-complete
scpslsm,mono-complete scpslsm,mono-complete
sdtd,telnet,expect sdtd,telnet,expect
sfc,libtinfo5:i386
sf sf
sfc,libtinfo5:i386
sof2 sof2
sol sol
squad squad
@ -118,9 +121,9 @@ ut2k4
ut3 ut3
ut99 ut99
vh,libc6-dev vh,libc6-dev
vs
vints,mono-complete vints,mono-complete
vpmc,openjdk-11-jre vpmc,openjdk-11-jre
vs
wet wet
wf wf
wmc,openjdk-11-jre wmc,openjdk-11-jre

Can't render this file because it has a wrong number of fields in line 2.

15
lgsm/data/debian-11.csv

@ -5,7 +5,8 @@ ahl
ahl2 ahl2
ark ark
arma3 arma3
armar,libcurl4,libssl1.1 armar,libcurl4
ats
av av
bb bb
bb2,libcurl4-gnutls-dev:i386 bb2,libcurl4-gnutls-dev:i386
@ -15,7 +16,7 @@ bfv,libncurses5:i386,libstdc++5:i386
bmdm,libncurses5:i386 bmdm,libncurses5:i386
bo bo
bs bs
bt,libicu-dev bt,libicu-dev,dos2unix
bt1944 bt1944
cc cc
cd cd
@ -43,6 +44,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,libtinfo5:i386 gmod,libtinfo5:i386
@ -58,9 +60,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,openjdk-17-jre mc,openjdk-17-jre
mcb mcb
mh mh
@ -69,11 +71,12 @@ mom
mta,libncursesw5 mta,libncursesw5
mumble mumble
nd nd
nec
nmrih,libtinfo5:i386 nmrih,libtinfo5:i386
ns ns
ns2,speex,libtbb2 ns2,speex,libtbb2
ns2c,speex:i386,libtbb2 ns2c,speex:i386,libtbb2
onset,libmariadbclient-dev onset,libmariadb-dev
opfor opfor
pc pc
pmc,openjdk-17-jre pmc,openjdk-17-jre
@ -96,8 +99,8 @@ sbots
scpsl,mono-complete scpsl,mono-complete
scpslsm,mono-complete scpslsm,mono-complete
sdtd,telnet,expect sdtd,telnet,expect
sfc,libtinfo5:i386
sf sf
sfc,libtinfo5:i386
sof2 sof2
sol sol
squad squad
@ -118,9 +121,9 @@ ut2k4
ut3 ut3
ut99 ut99
vh,libc6-dev vh,libc6-dev
vs
vints,mono-complete vints,mono-complete
vpmc,openjdk-11-jre vpmc,openjdk-11-jre
vs
wet wet
wf wf
wmc,openjdk-17-jre wmc,openjdk-17-jre

Can't render this file because it has a wrong number of fields in line 2.

15
lgsm/data/debian-9.csv

@ -5,7 +5,8 @@ ahl
ahl2 ahl2
ark ark
arma3 arma3
armar,libcurl4,libssl1.1 armar,libcurl4
ats
av av
bb bb
bb2,libcurl4-gnutls-dev:i386 bb2,libcurl4-gnutls-dev:i386
@ -15,7 +16,7 @@ bfv,libncurses5:i386,libstdc++5:i386
bmdm,libncurses5:i386 bmdm,libncurses5:i386
bo bo
bs bs
bt,libicu-dev bt,libicu-dev,dos2unix
bt1944 bt1944
cc cc
cd cd
@ -43,6 +44,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,libtinfo5:i386 gmod,libtinfo5:i386
@ -58,9 +60,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,openjdk-8-jre mc,openjdk-8-jre
mcb mcb
mh mh
@ -69,11 +71,12 @@ mom
mta,libncursesw5 mta,libncursesw5
mumble mumble
nd nd
nec
nmrih,libtinfo5:i386 nmrih,libtinfo5:i386
ns ns
ns2,speex,libtbb2 ns2,speex,libtbb2
ns2c,speex:i386,libtbb2 ns2c,speex:i386,libtbb2
onset,libmariadbclient-dev onset,libmariadb-dev
opfor opfor
pc pc
pmc,openjdk-8-jre pmc,openjdk-8-jre
@ -96,8 +99,8 @@ sbots
scpsl,mono-complete scpsl,mono-complete
scpslsm,mono-complete scpslsm,mono-complete
sdtd,telnet,expect sdtd,telnet,expect
sfc,libtinfo5:i386
sf sf
sfc,libtinfo5:i386
sof2 sof2
sol sol
squad squad
@ -118,8 +121,8 @@ ut2k4
ut3 ut3
ut99 ut99
vh,libc6-dev vh,libc6-dev
vs
vints,mono-complete vints,mono-complete
vs
wet wet
wf wf
wmc,openjdk-8-jre wmc,openjdk-8-jre

Can't render this file because it has a wrong number of fields in line 2.

9
lgsm/data/rhel-7.csv

@ -6,6 +6,7 @@ ahl2
ark ark
arma3 arma3
armar,libcurl,openssl11-libs armar,libcurl,openssl11-libs
ats
av av
bb bb
bb2,libcurl.i686 bb2,libcurl.i686
@ -43,6 +44,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,ncurses-libs.i686 gmod,ncurses-libs.i686
@ -58,9 +60,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,java-11-openjdk mc,java-11-openjdk
mcb,libnsl mcb,libnsl
mh mh
@ -69,6 +71,7 @@ mom
mta mta
mumble mumble
nd nd
nec
nmrih,ncurses-libs.i686 nmrih,ncurses-libs.i686
ns ns
ns2,speex,tbb ns2,speex,tbb
@ -96,8 +99,8 @@ sbots
scpsl scpsl
scpslsm scpslsm
sdtd,telnet,expect sdtd,telnet,expect
sfc,ncurses-libs.i686
sf sf
sfc,ncurses-libs.i686
sof2 sof2
sol sol
squad squad
@ -118,9 +121,9 @@ ut2k4
ut3 ut3
ut99 ut99
vh,glibc-devel vh,glibc-devel
vs
vints,mono-complete vints,mono-complete
vpmc,java-11-openjdk vpmc,java-11-openjdk
vs
wet wet
wf wf
wmc,java-11-openjdk wmc,java-11-openjdk

Can't render this file because it has a wrong number of fields in line 2.

9
lgsm/data/rhel-8.csv

@ -6,6 +6,7 @@ ahl2
ark ark
arma3 arma3
armar,libcurl,openssl-libs armar,libcurl,openssl-libs
ats
av av
bb bb
bb2,libcurl.i686 bb2,libcurl.i686
@ -43,6 +44,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,ncurses-libs.i686 gmod,ncurses-libs.i686
@ -58,9 +60,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,java-11-openjdk mc,java-11-openjdk
mcb,libnsl mcb,libnsl
mh mh
@ -69,6 +71,7 @@ mom
mta mta
mumble mumble
nd nd
nec
nmrih,ncurses-libs.i686 nmrih,ncurses-libs.i686
ns ns
ns2,speex,tbb ns2,speex,tbb
@ -96,8 +99,8 @@ sbots
scpsl scpsl
scpslsm scpslsm
sdtd,telnet,expect sdtd,telnet,expect
sfc,ncurses-libs.i686
sf sf
sfc,ncurses-libs.i686
sof2 sof2
sol sol
squad squad
@ -118,9 +121,9 @@ ut2k4
ut3 ut3
ut99 ut99
vh,glibc-devel vh,glibc-devel
vs
vints,mono-complete vints,mono-complete
vpmc,java-11-openjdk vpmc,java-11-openjdk
vs
wet wet
wf wf
wmc,java-11-openjdk wmc,java-11-openjdk

Can't render this file because it has a wrong number of fields in line 2.

131
lgsm/data/rhel-9.csv

@ -0,0 +1,131 @@
all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
ahl2
ark
arma3
armar,libcurl,openssl-libs
ats
av
bb
bb2,libcurl.i686
bd
bf1942,ncurses-libs.i686
bfv,compat-libstdc++-33.i686,glibc.i686
bmdm,ncurses-libs.i686
bo
bs
bt,libicu
bt1944
cc
cd
cmw
cod,compat-libstdc++-33.i686
cod2,compat-libstdc++-33.i686
cod4
coduo,compat-libstdc++-33.i686
codwaw
col
cs
cscz
csgo
css,ncurses-libs.i686
dab
dayz
dmc
dod
dodr
dods
doi
dst,libcurl.i686
dys
eco,libgdiplus
em
etl
ets2
fctr
fof
gmod,ncurses-libs.i686
hl2dm
hldm
hldms
hw,zlib-devel
ins
inss
ios
jc2
jc3
jk2
kf
kf2
l4d
l4d2
lo
mc,java-11-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
mom
mta
mumble
nd
nec
nmrih,ncurses-libs.i686
ns
ns2,speex,tbb
ns2c,speex.i686,tbb.i686
onset,mariadb-connector-c
opfor
pc
pmc,java-11-openjdk
pstbs,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
q2
q3
ql
qw
ricochet
ro
rtcw
rust,zlib-devel
rw,java-11-openjdk
samp
sb
sbots
scpsl
scpslsm
sdtd,telnet,expect
sf
sfc,ncurses-libs.i686
sof2
sol
squad
st
stn
sven
terraria
tf2,libcurl.i686
tfc
ti
ts
ts3
tu
tw
unt
ut
ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vpmc,java-11-openjdk
vs
wet
wf
wmc,java-11-openjdk
wurm,xorg-x11-server-Xvfb
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
Can't render this file because it has a wrong number of fields in line 2.

11
lgsm/data/rocky-8.csv

@ -6,6 +6,7 @@ ahl2
ark ark
arma3 arma3
armar,libcurl,openssl-libs armar,libcurl,openssl-libs
ats
av av
bb bb
bb2,libcurl.i686 bb2,libcurl.i686
@ -15,7 +16,7 @@ bfv,compat-libstdc++-33.i686,glibc.i686
bmdm,ncurses-libs.i686 bmdm,ncurses-libs.i686
bo bo
bs bs
bt,libicu bt,libicu,dos2unix
bt1944 bt1944
cc cc
cd cd
@ -43,6 +44,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,ncurses-libs.i686 gmod,ncurses-libs.i686
@ -58,9 +60,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,java-11-openjdk mc,java-11-openjdk
mcb,libnsl mcb,libnsl
mh mh
@ -69,6 +71,7 @@ mom
mta,ncurses-compat-libs mta,ncurses-compat-libs
mumble mumble
nd nd
nec
nmrih,ncurses-libs.i686 nmrih,ncurses-libs.i686
ns ns
ns2,speex,tbb ns2,speex,tbb
@ -96,8 +99,8 @@ sbots
scpsl scpsl
scpslsm scpslsm
sdtd,telnet,expect sdtd,telnet,expect
sfc,ncurses-libs.i686
sf sf
sfc,ncurses-libs.i686
sof2 sof2
sol sol
squad squad
@ -118,9 +121,9 @@ ut2k4
ut3 ut3
ut99 ut99
vh,glibc-devel vh,glibc-devel
vs
vints,mono-complete vints,mono-complete
vpmc,java-11-openjdk vpmc,java-11-openjdk
vs
wet wet
wf wf
wmc,java-11-openjdk wmc,java-11-openjdk

Can't render this file because it has a wrong number of fields in line 2.

131
lgsm/data/rocky-9.csv

@ -0,0 +1,131 @@
all,bc,binutils,bzip2,cpio,curl,epel-release,file,glibc.i686,gzip,hostname,jq,libstdc++.i686,nmap-ncat,python36,tar,tmux,unzip,util-linux,wget,xz
steamcmd,glibc.i686,libstdc++.i686
ac
ahl
ahl2
ark
arma3
armar,libcurl,openssl-libs
ats
av
bb
bb2,libcurl.i686
bd
bf1942,ncurses-libs.i686
bfv,compat-libstdc++-33.i686,glibc.i686
bmdm,ncurses-libs.i686
bo
bs
bt,libicu,dos2unix
bt1944
cc
cd
cmw
cod,compat-libstdc++-33.i686
cod2,compat-libstdc++-33.i686
cod4
coduo,compat-libstdc++-33.i686
codwaw
col
cs
cscz
csgo
css,ncurses-libs.i686
dab
dayz
dmc
dod
dodr
dods
doi
dst,libcurl.i686
dys
eco,libgdiplus
em
etl
ets2
fctr
fof
gmod,ncurses-libs.i686
hl2dm
hldm
hldms
hw,zlib-devel
ins
inss
ios
jc2
jc3
jk2
kf
kf2
l4d
l4d2
lo
mc,java-11-openjdk
mcb,libnsl
mh
mohaa,compat-libstdc++-33.i686
mom
mta,ncurses-compat-libs
mumble
nd
nec
nmrih,ncurses-libs.i686
ns
ns2,speex,tbb
ns2c,speex.i686,tbb.i686
onset,mariadb-connector-c
opfor
pc
pmc,java-11-openjdk
pstbs,GConf2
pvkii
pvr,libcxx
pz,java-11-openjdk rng-tools
q2
q3
ql
qw
ricochet
ro
rtcw
rust,zlib-devel
rw,java-11-openjdk
samp
sb
sbots
scpsl
scpslsm
sdtd,telnet,expect
sf
sfc,ncurses-libs.i686
sof2
sol
squad
st
stn
sven
terraria
tf2,libcurl.i686
tfc
ti
ts
ts3
tu
tw
unt
ut
ut2k4
ut3
ut99
vh,glibc-devel
vints,mono-complete
vpmc,java-11-openjdk
vs
wet
wf
wmc,java-11-openjdk
wurm,xorg-x11-server-Xvfb
zmr,ncurses-libs.i686
zps,ncurses-libs.i686
Can't render this file because it has a wrong number of fields in line 2.

260
lgsm/data/serverlist.csv

@ -1,128 +1,132 @@
ac,acserver,Assetto Corsa ac,acserver,Assetto Corsa,ubuntu-22.04
ahl,ahlserver,Action Half-Life ahl,ahlserver,Action Half-Life,ubuntu-22.04
ahl2,ahl2server,Action: Source ahl2,ahl2server,Action: Source,ubuntu-22.04
ark,arkserver,ARK: Survival Evolved ark,arkserver,ARK: Survival Evolved,ubuntu-22.04
arma3,arma3server,ARMA 3 arma3,arma3server,ARMA 3,ubuntu-22.04
armar,armarserver,Arma Reforger armar,armarserver,Arma Reforger,ubuntu-20.04
av,avserver,Avorion ats,atsserver,American Truck Simulator
bb,bbserver,BrainBread av,avserver,Avorion,ubuntu-22.04
bb2,bb2server,BrainBread 2 bb,bbserver,BrainBread,ubuntu-22.04
bd,bdserver,Base Defense bb2,bb2server,BrainBread 2,ubuntu-22.04
bf1942,bf1942server,Battlefield 1942 bd,bdserver,Base Defense,ubuntu-22.04
bfv,bfvserver,Battlefield: Vietnam bf1942,bf1942server,Battlefield 1942,ubuntu-22.04
bmdm,bmdmserver,Black Mesa: Deathmatch bfv,bfvserver,Battlefield: Vietnam,ubuntu-22.04
bo,boserver,Ballistic Overkill bmdm,bmdmserver,Black Mesa: Deathmatch,ubuntu-22.04
bs,bsserver,Blade Symphony bo,boserver,Ballistic Overkill,ubuntu-22.04
bt,btserver,Barotrauma bs,bsserver,Blade Symphony,ubuntu-22.04
bt1944,bt1944server,Battalion 1944 bt,btserver,Barotrauma,ubuntu-22.04
cc,ccserver,Codename CURE bt1944,bt1944server,Battalion 1944,ubuntu-22.04
cd,cdserver,Crafting Dead cc,ccserver,Codename CURE,ubuntu-22.04
ck,ckserver,Core Keeper cd,cdserver,Crafting Dead,ubuntu-22.04
cmw,cmwserver,Chivalry: Medieval Warfare ck,ckserver,Core Keeper,ubuntu-22.04
cod,codserver,Call of Duty cmw,cmwserver,Chivalry: Medieval Warfare,ubuntu-22.04
cod2,cod2server,Call of Duty 2 cod,codserver,Call of Duty,ubuntu-22.04
cod4,cod4server,Call of Duty 4 cod2,cod2server,Call of Duty 2,ubuntu-22.04
coduo,coduoserver,Call of Duty: United Offensive cod4,cod4server,Call of Duty 4,ubuntu-22.04
codwaw,codwawserver,Call of Duty: World at War coduo,coduoserver,Call of Duty: United Offensive,ubuntu-22.04
col,colserver,Colony Survival codwaw,codwawserver,Call of Duty: World at War,ubuntu-22.04
cs,csserver,Counter-Strike 1.6 col,colserver,Colony Survival,ubuntu-22.04
cscz,csczserver,Counter-Strike: Condition Zero cs,csserver,Counter-Strike 1.6,ubuntu-22.04
csgo,csgoserver,Counter-Strike: Global Offensive cscz,csczserver,Counter-Strike: Condition Zero,ubuntu-22.04
css,cssserver,Counter-Strike: Source csgo,csgoserver,Counter-Strike: Global Offensive,ubuntu-22.04
dab,dabserver,Double Action: Boogaloo css,cssserver,Counter-Strike: Source,ubuntu-22.04
dayz,dayzserver,DayZ dab,dabserver,Double Action: Boogaloo,ubuntu-22.04
dmc,dmcserver,Deathmatch Classic dayz,dayzserver,DayZ,ubuntu-22.04
dod,dodserver,Day of Defeat dmc,dmcserver,Deathmatch Classic,ubuntu-22.04
dodr,dodrserver,Day of Dragons dod,dodserver,Day of Defeat,ubuntu-22.04
dods,dodsserver,Day of Defeat: Source dodr,dodrserver,Day of Dragons,ubuntu-22.04
doi,doiserver,Day of Infamy dods,dodsserver,Day of Defeat: Source,ubuntu-22.04
dst,dstserver,Don't Starve Together doi,doiserver,Day of Infamy,ubuntu-22.04
dys,dysserver,Dystopia dst,dstserver,Don't Starve Together,ubuntu-22.04
eco,ecoserver,Eco dys,dysserver,Dystopia,ubuntu-22.04
em,emserver,Empires Mod eco,ecoserver,Eco,ubuntu-22.04
etl,etlserver,ET: Legacy em,emserver,Empires Mod,ubuntu-22.04
fctr,fctrserver,Factorio etl,etlserver,ET: Legacy,ubuntu-22.04
fof,fofserver,Fistful of Frags ets2,ets2server,Euro Truck Simulator 2,ubuntu-22.04
gmod,gmodserver,Garrys Mod fctr,fctrserver,Factorio,ubuntu-22.04
hl2dm,hl2dmserver,Half-Life 2: Deathmatch fof,fofserver,Fistful of Frags,ubuntu-22.04
hldm,hldmserver,Half-Life: Deathmatch gmod,gmodserver,Garrys Mod,ubuntu-22.04
hldms,hldmsserver,Half-Life Deathmatch: Source hl2dm,hl2dmserver,Half-Life 2: Deathmatch,ubuntu-22.04
hw,hwserver,Hurtworld hldm,hldmserver,Half-Life: Deathmatch,ubuntu-22.04
ins,insserver,Insurgency hldms,hldmsserver,Half-Life Deathmatch: Source,ubuntu-22.04
inss,inssserver,Insurgency: Sandstorm hw,hwserver,Hurtworld,ubuntu-22.04
ios,iosserver,IOSoccer ins,insserver,Insurgency,ubuntu-22.04
jc2,jc2server,Just Cause 2 inss,inssserver,Insurgency: Sandstorm,ubuntu-22.04
jc3,jc3server,Just Cause 3 ios,iosserver,IOSoccer,ubuntu-22.04
jk2,jk2server,Jedi Knight II: Jedi Outcast jc2,jc2server,Just Cause 2,ubuntu-22.04
kf,kfserver,Killing Floor jc3,jc3server,Just Cause 3,ubuntu-22.04
kf2,kf2server,Killing Floor 2 jk2,jk2server,Jedi Knight II: Jedi Outcast,ubuntu-22.04
lo,loserver,Last Oasis kf,kfserver,Killing Floor,ubuntu-22.04
l4d,l4dserver,Left 4 Dead kf2,kf2server,Killing Floor 2,ubuntu-22.04
l4d2,l4d2server,Left 4 Dead 2 l4d,l4dserver,Left 4 Dead,ubuntu-22.04
mc,mcserver,Minecraft l4d2,l4d2server,Left 4 Dead 2,ubuntu-22.04
mcb,mcbserver,Minecraft Bedrock lo,loserver,Last Oasis,ubuntu-22.04
mh,mhserver,MORDHAU mc,mcserver,Minecraft,ubuntu-22.04
mohaa,mohaaserver,Medal of Honor: Allied Assault mcb,mcbserver,Minecraft Bedrock,ubuntu-22.04
mom,momserver,Memories of Mars mh,mhserver,MORDHAU,ubuntu-22.04
mta,mtaserver,Multi Theft Auto mohaa,mohaaserver,Medal of Honor: Allied Assault,ubuntu-22.04
mumble,mumbleserver,Mumble mom,momserver,Memories of Mars,ubuntu-22.04
nd,ndserver,Nuclear Dawn mta,mtaserver,Multi Theft Auto,ubuntu-22.04
nmrih,nmrihserver,No More Room in Hell mumble,mumbleserver,Mumble,ubuntu-22.04
ns,nsserver,Natural Selection nd,ndserver,Nuclear Dawn,ubuntu-22.04
ns2,ns2server,Natural Selection 2 nec,necserver,Necesse,ubuntu-22.04
ns2c,ns2cserver,NS2: Combat nmrih,nmrihserver,No More Room in Hell,ubuntu-22.04
onset,onsetserver,Onset ns,nsserver,Natural Selection,ubuntu-22.04
opfor,opforserver,Opposing Force ns2,ns2server,Natural Selection 2,ubuntu-22.04
pc,pcserver,Project Cars ns2c,ns2cserver,NS2: Combat,ubuntu-22.04
pc2,pc2server,Project Cars 2 onset,onsetserver,Onset,ubuntu-20.04
pmc,pmcserver,PaperMC opfor,opforserver,Opposing Force,ubuntu-22.04
pstbs,pstbsserver,Post Scriptum: The Bloody Seventh pc,pcserver,Project Cars,ubuntu-22.04
pvkii,pvkiiserver,Pirates Vikings & Knights II pc2,pc2server,Project Cars 2,ubuntu-22.04
pvr,pvrserver,Pavlov VR pmc,pmcserver,PaperMC,ubuntu-22.04
pz,pzserver,Project Zomboid pstbs,pstbsserver,Post Scriptum: The Bloody Seventh,ubuntu-22.04
q2,q2server,Quake 2 pvkii,pvkiiserver,Pirates Vikings & Knights II,ubuntu-22.04
q3,q3server,Quake 3: Arena pvr,pvrserver,Pavlov VR,ubuntu-22.04
ql,qlserver,Quake Live pz,pzserver,Project Zomboid,ubuntu-22.04
qw,qwserver,Quake World q2,q2server,Quake 2,ubuntu-22.04
ricochet,ricochetserver,Ricochet q3,q3server,Quake 3: Arena,ubuntu-22.04
ro,roserver,Red Orchestra: Ostfront 41-45 ql,qlserver,Quake Live,ubuntu-22.04
rtcw,rtcwserver,Return to Castle Wolfenstein qw,qwserver,Quake World,ubuntu-22.04
rust,rustserver,Rust ricochet,ricochetserver,Ricochet,ubuntu-22.04
rw,rwserver,Rising World ro,roserver,Red Orchestra: Ostfront 41-45,ubuntu-22.04
samp,sampserver,San Andreas Multiplayer rtcw,rtcwserver,Return to Castle Wolfenstein,ubuntu-22.04
sb,sbserver,Starbound rust,rustserver,Rust,ubuntu-22.04
sbots,sbotsserver,StickyBots rw,rwserver,Rising World,ubuntu-22.04
scpsl,scpslserver,SCP: Secret Laboratory samp,sampserver,San Andreas Multiplayer,ubuntu-22.04
scpslsm,scpslsmserver,SCP: Secret Laboratory ServerMod sb,sbserver,Starbound,ubuntu-22.04
sdtd,sdtdserver,7 Days to Die sbots,sbotsserver,StickyBots,ubuntu-22.04
sfc,sfcserver,SourceForts Classic scpsl,scpslserver,SCP: Secret Laboratory,ubuntu-22.04
sf,sfserver,Satisfactory scpslsm,scpslsmserver,SCP: Secret Laboratory ServerMod,ubuntu-22.04
sof2,sof2server,Soldier Of Fortune 2: Gold Edition sdtd,sdtdserver,7 Days to Die,ubuntu-22.04
sol,solserver,Soldat sf,sfserver,Satisfactory,ubuntu-22.04
squad,squadserver,Squad sfc,sfcserver,SourceForts Classic,ubuntu-22.04
st,stserver,Stationeers sof2,sof2server,Soldier Of Fortune 2: Gold Edition,ubuntu-22.04
stn,stnserver,Survive the Nights sol,solserver,Soldat,ubuntu-22.04
sven,svenserver,Sven Co-op squad,squadserver,Squad,ubuntu-22.04
terraria,terrariaserver,Terraria st,stserver,Stationeers,ubuntu-22.04
tf2,tf2server,Team Fortress 2 stn,stnserver,Survive the Nights,ubuntu-22.04
tfc,tfcserver,Team Fortress Classic sven,svenserver,Sven Co-op,ubuntu-20.04
ti,tiserver,The Isle terraria,terrariaserver,Terraria,ubuntu-22.04
ts,tsserver,The Specialists tf2,tf2server,Team Fortress 2,ubuntu-22.04
ts3,ts3server,Teamspeak 3 tfc,tfcserver,Team Fortress Classic,ubuntu-22.04
tu,tuserver,Tower Unite ti,tiserver,The Isle,ubuntu-22.04
tw,twserver,Teeworlds ts,tsserver,The Specialists,ubuntu-22.04
unt,untserver,Unturned ts3,ts3server,Teamspeak 3,ubuntu-22.04
ut,utserver,Unreal Tournament tu,tuserver,Tower Unite,ubuntu-22.04
ut2k4,ut2k4server,Unreal Tournament 2004 tw,twserver,Teeworlds,ubuntu-22.04
ut3,ut3server,Unreal Tournament 3 unt,untserver,Unturned,ubuntu-22.04
ut99,ut99server,Unreal Tournament 99 ut,utserver,Unreal Tournament,ubuntu-22.04
vh,vhserver,Valheim ut2k4,ut2k4server,Unreal Tournament 2004,ubuntu-22.04
vints,vintsserver,Vintage Story ut3,ut3server,Unreal Tournament 3,ubuntu-22.04
vpmc,vpmcserver,Velocity Proxy MC ut99,ut99server,Unreal Tournament 99,ubuntu-22.04
vs,vsserver,Vampire Slayer vh,vhserver,Valheim,ubuntu-22.04
wet,wetserver,Wolfenstein: Enemy Territory vints,vintsserver,Vintage Story,ubuntu-22.04
wf,wfserver,Warfork vpmc,vpmcserver,Velocity Proxy MC,ubuntu-22.04
wmc,wmcserver,WaterfallMC vs,vsserver,Vampire Slayer,ubuntu-22.04
wurm,wurmserver,Wurm Unlimited wet,wetserver,Wolfenstein: Enemy Territory,ubuntu-22.04
zmr,zmrserver,Zombie Master: Reborn wf,wfserver,Warfork,ubuntu-22.04
zps,zpsserver,Zombie Panic! Source wmc,wmcserver,WaterfallMC,ubuntu-22.04
wurm,wurmserver,Wurm Unlimited,ubuntu-22.04
zmr,zmrserver,Zombie Master: Reborn,ubuntu-22.04
zps,zpsserver,Zombie Panic! Source,ubuntu-22.04

Can't render this file because it has a wrong number of fields in line 7.

13
lgsm/data/ubuntu-16.04.csv

@ -5,6 +5,7 @@ ahl
ahl2 ahl2
ark ark
arma3 arma3
ats
av av
bb bb
bb2,libcurl4-gnutls-dev:i386 bb2,libcurl4-gnutls-dev:i386
@ -14,7 +15,7 @@ bfv,libncurses5:i386,libstdc++5:i386
bmdm,libncurses5:i386 bmdm,libncurses5:i386
bo bo
bs bs
bt,libicu-dev bt,libicu-dev,dos2unix
bt1944 bt1944
cc cc
cd cd
@ -42,6 +43,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,libtinfo5:i386 gmod,libtinfo5:i386
@ -57,9 +59,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,openjdk-8-jre mc,openjdk-8-jre
mcb mcb
mh mh
@ -68,11 +70,12 @@ mom
mta mta
mumble mumble
nd nd
nec
nmrih,libtinfo5:i386 nmrih,libtinfo5:i386
ns ns
ns2,speex,libtbb2 ns2,speex,libtbb2
ns2c,speex:i386,libtbb2 ns2c,speex:i386,libtbb2
onset,libmariadbclient-dev onset,libmariadb-dev
opfor opfor
pc pc
pmc,openjdk-8-jre pmc,openjdk-8-jre
@ -95,8 +98,8 @@ sbots
scpsl,mono-complete scpsl,mono-complete
scpslsm,mono-complete scpslsm,mono-complete
sdtd,telnet,expect sdtd,telnet,expect
sfc,libtinfo5:i386
sf sf
sfc,libtinfo5:i386
sof2 sof2
sol sol
squad squad
@ -117,8 +120,8 @@ ut2k4
ut3 ut3
ut99 ut99
vh,libc6-dev vh,libc6-dev
vs
vints,mono-complete vints,mono-complete
vs
wet wet
wf wf
wmc,openjdk-8-jre wmc,openjdk-8-jre

Can't render this file because it has a wrong number of fields in line 2.

15
lgsm/data/ubuntu-18.04.csv

@ -5,7 +5,8 @@ ahl
ahl2 ahl2
ark ark
arma3 arma3
armar,libcurl4,libssl1.1 armar,libcurl4
ats
av av
bb bb
bb2,libcurl4-gnutls-dev:i386 bb2,libcurl4-gnutls-dev:i386
@ -15,7 +16,7 @@ bfv,libncurses5:i386,libstdc++5:i386
bmdm,libncurses5:i386 bmdm,libncurses5:i386
bo bo
bs bs
bt,libicu-dev bt,libicu-dev,dos2unix
bt1944 bt1944
cc cc
cd cd
@ -43,6 +44,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,libtinfo5:i386 gmod,libtinfo5:i386
@ -58,9 +60,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,openjdk-11-jre mc,openjdk-11-jre
mcb mcb
mh mh
@ -69,11 +71,12 @@ mom
mta,libncursesw5 mta,libncursesw5
mumble mumble
nd nd
nec
nmrih,libtinfo5:i386 nmrih,libtinfo5:i386
ns ns
ns2,speex,libtbb2 ns2,speex,libtbb2
ns2c,speex:i386,libtbb2 ns2c,speex:i386,libtbb2
onset,libmariadbclient-dev onset,libmariadb-dev
opfor opfor
pc pc
pmc,openjdk-11-jre pmc,openjdk-11-jre
@ -96,8 +99,8 @@ sbots
scpsl,mono-complete scpsl,mono-complete
scpslsm,mono-complete scpslsm,mono-complete
sdtd,telnet,expect sdtd,telnet,expect
sfc,libtinfo5:i386
sf sf
sfc,libtinfo5:i386
sof2 sof2
sol sol
squad squad
@ -118,9 +121,9 @@ ut2k4
ut3 ut3
ut99 ut99
vh,libc6-dev vh,libc6-dev
vs
vints,mono-complete vints,mono-complete
vpmc,openjdk-11-jre vpmc,openjdk-11-jre
vs
wet wet
wf wf
wmc,openjdk-11-jre wmc,openjdk-11-jre

Can't render this file because it has a wrong number of fields in line 2.

15
lgsm/data/ubuntu-20.04.csv

@ -5,7 +5,8 @@ ahl
ahl2 ahl2
ark ark
arma3 arma3
armar,libcurl4,libssl1.1 armar,libcurl4
ats
av av
bb bb
bb2,libcurl4-gnutls-dev:i386 bb2,libcurl4-gnutls-dev:i386
@ -15,7 +16,7 @@ bfv,libncurses5:i386,libstdc++5:i386
bmdm,libncurses5:i386 bmdm,libncurses5:i386
bo bo
bs bs
bt,libicu-dev bt,libicu-dev,dos2unix
bt1944 bt1944
cc cc
cd cd
@ -43,6 +44,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,libtinfo5:i386 gmod,libtinfo5:i386
@ -58,9 +60,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,openjdk-17-jre mc,openjdk-17-jre
mcb mcb
mh mh
@ -69,11 +71,12 @@ mom
mta,libncursesw5 mta,libncursesw5
mumble mumble
nd nd
nec
nmrih,libtinfo5:i386 nmrih,libtinfo5:i386
ns ns
ns2,speex,libtbb2 ns2,speex,libtbb2
ns2c,speex:i386,libtbb2 ns2c,speex:i386,libtbb2
onset,libmariadbclient-dev onset,libmariadb-dev
opfor opfor
pc pc
pmc,openjdk-17-jre pmc,openjdk-17-jre
@ -96,8 +99,8 @@ sbots
scpsl,mono-complete scpsl,mono-complete
scpslsm,mono-complete scpslsm,mono-complete
sdtd,telnet,expect sdtd,telnet,expect
sfc,libtinfo5:i386
sf sf
sfc,libtinfo5:i386
sof2 sof2
sol sol
squad squad
@ -118,9 +121,9 @@ ut2k4
ut3 ut3
ut99 ut99
vh,libc6-dev vh,libc6-dev
vs
vints,mono-complete vints,mono-complete
vpmc,openjdk-11-jre vpmc,openjdk-11-jre
vs
wet wet
wf wf
wmc,openjdk-17-jre wmc,openjdk-17-jre

Can't render this file because it has a wrong number of fields in line 2.

17
lgsm/data/ubuntu-21.04.csv

@ -5,7 +5,8 @@ ahl
ahl2 ahl2
ark ark
arma3 arma3
armar,libcurl4,libssl1.1 armar,libcurl4
ats
av av
bb bb
bb2,libcurl4-gnutls-dev:i386 bb2,libcurl4-gnutls-dev:i386
@ -15,7 +16,7 @@ bfv,libncurses5:i386,libstdc++5:i386
bmdm,libncurses5:i386 bmdm,libncurses5:i386
bo bo
bs bs
bt,libicu-dev bt,libicu-dev,dos2unix
bt1944 bt1944
cc cc
cd cd
@ -43,6 +44,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,libtinfo5:i386 gmod,libtinfo5:i386
@ -58,9 +60,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,openjdk-17-jre mc,openjdk-17-jre
mcb mcb
mh mh
@ -69,11 +71,12 @@ mom
mta,libncursesw5 mta,libncursesw5
mumble mumble
nd nd
nec
nmrih,libtinfo5:i386 nmrih,libtinfo5:i386
ns ns
ns2,speex,libtbb2 ns2,speex,libtbb2
ns2c,speex:i386,libtbb2 ns2c,speex:i386,libtbb2
onset,libmariadbclient-dev onset,libmariadb-dev
opfor opfor
pc pc
pmc,openjdk-17-jre pmc,openjdk-17-jre
@ -96,15 +99,15 @@ sbots
scpsl,mono-complete scpsl,mono-complete
scpslsm,mono-complete scpslsm,mono-complete
sdtd,telnet,expect sdtd,telnet,expect
sfc,libtinfo5:i386
sf sf
sfc,libtinfo5:i386
sof2 sof2
sol sol
squad squad
st st
stn stn
sven,libssl1.1:i386,zlib1g:i386 sven,libssl1.1:i386,zlib1g:i386
terraria,libsdl terraria
tf2,libcurl4-gnutls-dev:i386 tf2,libcurl4-gnutls-dev:i386
tfc tfc
ti ti
@ -118,9 +121,9 @@ ut2k4
ut3 ut3
ut99 ut99
vh,libc6-dev vh,libc6-dev
vs
vints,mono-complete vints,mono-complete
vpmc,openjdk-11-jre vpmc,openjdk-11-jre
vs
wet wet
wf wf
wmc,openjdk-17-jre wmc,openjdk-17-jre

Can't render this file because it has a wrong number of fields in line 2.

15
lgsm/data/ubuntu-21.10.csv

@ -5,7 +5,8 @@ ahl
ahl2 ahl2
ark ark
arma3 arma3
armar,libcurl4,libssl1.1 armar,libcurl4
ats
av av
bb bb
bb2,libcurl4-gnutls-dev:i386 bb2,libcurl4-gnutls-dev:i386
@ -40,6 +41,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,libtinfo5:i386 gmod,libtinfo5:i386
@ -55,9 +57,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,openjdk-17-jre mc,openjdk-17-jre
mcb mcb
mh mh
@ -66,11 +68,12 @@ mom
mta,libncursesw5 mta,libncursesw5
mumble mumble
nd nd
nec
nmrih,libtinfo5:i386 nmrih,libtinfo5:i386
ns ns
ns2,speex,libtbb2 ns2,speex,libtbb2
ns2c,speex:i386,libtbb2 ns2c,speex:i386,libtbb2
onset,libmariadbclient-dev onset,libmariadb-dev
opfor opfor
pc pc
pmc,openjdk-17-jre pmc,openjdk-17-jre
@ -93,15 +96,15 @@ sbots
scpsl,mono-complete scpsl,mono-complete
scpslsm,mono-complete scpslsm,mono-complete
sdtd,telnet,expect sdtd,telnet,expect
sfc,libtinfo5:i386
sf sf
sfc,libtinfo5:i386
sof2 sof2
sol sol
squad squad
st st
stn stn
sven,libssl1.1:i386,zlib1g:i386 sven,libssl1.1:i386,zlib1g:i386
terraria,libsdl terraria
tf2,libcurl4-gnutls-dev:i386 tf2,libcurl4-gnutls-dev:i386
tfc tfc
ti ti
@ -115,9 +118,9 @@ ut2k4
ut3 ut3
ut99 ut99
vh,libc6-dev vh,libc6-dev
vs
vints,mono-complete vints,mono-complete
vpmc,openjdk-11-jre vpmc,openjdk-11-jre
vs
wet wet
wf wf
wmc,openjdk-17-jre wmc,openjdk-17-jre

Can't render this file because it has a wrong number of fields in line 2.

17
lgsm/data/ubuntu-22.04.csv

@ -5,7 +5,8 @@ ahl
ahl2 ahl2
ark ark
arma3 arma3
armar,libcurl4,libssl1.1 armar,libcurl4
ats
av av
bb bb
bb2,libcurl4-gnutls-dev:i386 bb2,libcurl4-gnutls-dev:i386
@ -15,7 +16,7 @@ bfv,libncurses5:i386,libstdc++5:i386
bmdm,libncurses5:i386 bmdm,libncurses5:i386
bo bo
bs bs
bt,libicu-dev bt,libicu-dev,dos2unix
bt1944 bt1944
cc cc
ck,xvfb ck,xvfb
@ -41,6 +42,7 @@ dys
eco,libgdiplus eco,libgdiplus
em em
etl etl
ets2
fctr fctr
fof fof
gmod,libtinfo5:i386 gmod,libtinfo5:i386
@ -56,9 +58,9 @@ jc3
jk2 jk2
kf kf
kf2 kf2
lo
l4d l4d
l4d2 l4d2
lo
mc,openjdk-17-jre mc,openjdk-17-jre
mcb mcb
mh mh
@ -67,11 +69,12 @@ mom
mta,libncursesw5 mta,libncursesw5
mumble mumble
nd nd
nec
nmrih,libtinfo5:i386 nmrih,libtinfo5:i386
ns ns
ns2,speex,libtbb2 ns2,speex,libtbb2
ns2c,speex:i386,libtbb2 ns2c,speex:i386,libtbb2
onset,libmariadbclient-dev onset,libmariadb-dev
opfor opfor
pc pc
pmc,openjdk-17-jre pmc,openjdk-17-jre
@ -94,15 +97,15 @@ sbots
scpsl,mono-complete scpsl,mono-complete
scpslsm,mono-complete scpslsm,mono-complete
sdtd,telnet,expect sdtd,telnet,expect
sfc,libtinfo5:i386
sf sf
sfc,libtinfo5:i386
sof2 sof2
sol sol
squad squad
st st
stn stn
sven,libssl1.1:i386,zlib1g:i386 sven,libssl1.1:i386,zlib1g:i386
terraria,libsdl terraria
tf2,libcurl4-gnutls-dev:i386 tf2,libcurl4-gnutls-dev:i386
tfc tfc
ti ti
@ -116,9 +119,9 @@ ut2k4
ut3 ut3
ut99 ut99
vh,libc6-dev vh,libc6-dev
vs
vints,mono-complete vints,mono-complete
vpmc,openjdk-11-jre vpmc,openjdk-11-jre
vs
wet wet
wf wf
wmc,openjdk-17-jre wmc,openjdk-17-jre

Can't render this file because it has a wrong number of fields in line 2.

4
lgsm/functions/check.sh

@ -21,7 +21,7 @@ fi
check_tmuxception.sh check_tmuxception.sh
if [ "$(whoami)" != "root" ]; then if [ "$(whoami)" != "root" ] || [ -f /.dockerenv ]; then
if [ "${commandname}" != "MONITOR" ]; then if [ "${commandname}" != "MONITOR" ]; then
check_permissions.sh check_permissions.sh
fi fi
@ -38,7 +38,7 @@ for allowed_command in "${allowed_commands_array[@]}"; do
fi fi
done done
if [ "$(whoami)" != "root" ]; then if [ "$(whoami)" != "root" ] || [ -f /.dockerenv ]; then
allowed_commands_array=(DEBUG START INSTALL) allowed_commands_array=(DEBUG START INSTALL)
for allowed_command in "${allowed_commands_array[@]}"; do for allowed_command in "${allowed_commands_array[@]}"; do
if [ "${allowed_command}" == "${commandname}" ]; then if [ "${allowed_command}" == "${commandname}" ]; then

4
lgsm/functions/check_deps.sh

@ -301,7 +301,7 @@ fn_deps_detector() {
} }
if [ "${commandname}" == "INSTALL" ]; then if [ "${commandname}" == "INSTALL" ]; then
if [ "$(whoami)" == "root" ]; then if [ "$(whoami)" == "root" ] && [ ! -f /.dockerenv ]; then
echo -e "" echo -e ""
echo -e "${lightyellow}Checking Dependencies as root${default}" echo -e "${lightyellow}Checking Dependencies as root${default}"
echo -e "=================================" echo -e "================================="
@ -337,7 +337,7 @@ fi
if [ -f "${datadir}/${distroid}-${distroversioncsv}.csv" ]; then if [ -f "${datadir}/${distroid}-${distroversioncsv}.csv" ]; then
depall=$(awk -F, '$1=="all" {$1=""; print $0}' "${datadir}/${distroid}-${distroversioncsv}.csv") depall=$(awk -F, '$1=="all" {$1=""; print $0}' "${datadir}/${distroid}-${distroversioncsv}.csv")
depsteamcmd=$(awk -F, '$1=="steamcmd" {$1=""; print $0}' "${datadir}/${distroid}-${distroversioncsv}.csv") depsteamcmd=$(awk -F, '$1=="steamcmd" {$1=""; print $0}' "${datadir}/${distroid}-${distroversioncsv}.csv")
depshortname=$(awk -v shortname="$shortname" -F, '$1==shortname {$1=""; print $0}' "${datadir}/${distroid}-${distroversioncsv}.csv") depshortname=$(awk -v shortname="${shortname}" -F, '$1==shortname {$1=""; print $0}' "${datadir}/${distroid}-${distroversioncsv}.csv")
# Generate array of missing deps. # Generate array of missing deps.
array_deps_missing=() array_deps_missing=()

1
lgsm/functions/check_executable.sh

@ -8,6 +8,7 @@
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Check if executable exists # Check if executable exists
execname=$(basename "${executable}")
if [ ! -f "${executabledir}/${execname}" ]; then if [ ! -f "${executabledir}/${execname}" ]; then
fn_print_fail_nl "executable was not found" fn_print_fail_nl "executable was not found"
echo -e "* ${executabledir}/${execname}" echo -e "* ${executabledir}/${execname}"

6
lgsm/functions/check_permissions.sh

@ -223,10 +223,8 @@ fn_sys_perm_error_process() {
fi fi
} }
# Run perm error detect & fix/alert functions on /sys directories. ## Run permisions checks when not root or docker.
if [ "$(whoami)" != "root" ] && [ ! -f /.dockerenv ]; then
## Run checks.
if [ "$(whoami)" != "root" ]; then
fn_check_ownership fn_check_ownership
fn_check_permissions fn_check_permissions
if [ "${commandname}" == "START" ]; then if [ "${commandname}" == "START" ]; then

2
lgsm/functions/check_root.sh

@ -7,7 +7,7 @@
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ "$(whoami)" = "root" ]; then if [ "$(whoami)" == "root" ] && [ ! -f /.dockerenv ]; then
if [ "${commandname}" != "INSTALL" ]; then if [ "${commandname}" != "INSTALL" ]; then
fn_print_fail_nl "Do NOT run this script as root!" fn_print_fail_nl "Do NOT run this script as root!"
if [ -d "${lgsmlogdir}" ]; then if [ -d "${lgsmlogdir}" ]; then

21
lgsm/functions/command_debug.sh

@ -28,7 +28,6 @@ check.sh
fix.sh fix.sh
info_distro.sh info_distro.sh
info_game.sh info_game.sh
# NOTE: Check if works with server without parms. Could be intergrated in to info_parms.sh.
fn_print_header fn_print_header
{ {
echo -e "${lightblue}Distro:\t\t${default}${distroname}" echo -e "${lightblue}Distro:\t\t${default}${distroname}"
@ -40,8 +39,9 @@ fn_print_header
echo -e "${lightblue}Free Memory:\t\t${default}${physmemfree}" echo -e "${lightblue}Free Memory:\t\t${default}${physmemfree}"
echo -e "${lightblue}Free Disk:\t\t${default}${availspace}" echo -e "${lightblue}Free Disk:\t\t${default}${availspace}"
} | column -s $'\t' -t } | column -s $'\t' -t
# glibc required. # glibc required.
if [ "${glibc}" ]; then if [ -n "${glibc}" ]; then
if [ "${glibc}" == "null" ]; then if [ "${glibc}" == "null" ]; then
# Glibc is not required. # Glibc is not required.
: :
@ -54,7 +54,7 @@ if [ "${glibc}" ]; then
fi fi
fi fi
# Server IP # Server IP.
echo -e "${lightblue}Game Server IP:\t${default}${ip}:${port}" echo -e "${lightblue}Game Server IP:\t${default}${ip}:${port}"
# External server IP. # External server IP.
@ -63,6 +63,7 @@ if [ "${extip}" ]; then
echo -e "${lightblue}Internet IP:\t${default}${extip}:${port}" echo -e "${lightblue}Internet IP:\t${default}${extip}:${port}"
fi fi
fi fi
# Server password. # Server password.
if [ "${serverpassword}" ]; then if [ "${serverpassword}" ]; then
echo -e "${lightblue}Server password:\t${default}${serverpassword}" echo -e "${lightblue}Server password:\t${default}${serverpassword}"
@ -78,7 +79,7 @@ else
echo -e "${preexecutable} ${executable} ${startparameters}" echo -e "${preexecutable} ${executable} ${startparameters}"
fi fi
echo -e "" echo -e ""
echo -e "Use for identifying server issues only!" echo -e "Use debug for identifying server issues only!"
echo -e "Press CTRL+c to drop out of debug mode." echo -e "Press CTRL+c to drop out of debug mode."
fn_print_warning_nl "If ${selfname} is already running it will be stopped." fn_print_warning_nl "If ${selfname} is already running it will be stopped."
echo -e "" echo -e ""
@ -120,6 +121,18 @@ else
eval "${preexecutable} ${executable} ${startparameters}" eval "${preexecutable} ${executable} ${startparameters}"
fi fi
if [ $? -ne 0 ]; then
fn_print_error_nl "Server has stopped: exit code: $?"
fn_script_log_error "Server has stopped: exit code: $?"
fn_print_error_nl "Press ENTER to exit debug mode"
read -r
else
fn_print_ok_nl "Server has stopped"
fn_script_log_pass "Server has stopped"
fn_print_ok_nl "Press ENTER to exit debug mode"
read -r
fi
fn_lockfile_trap fn_lockfile_trap
fn_print_dots "Stopping debug" fn_print_dots "Stopping debug"

56
lgsm/functions/command_dev_query_raw.sh

@ -28,169 +28,169 @@ echo -e "=================================================================="
{ {
echo -e "${lightblue}Port Name \tPort Number \tStatus \tTCP \tUDP${default}" echo -e "${lightblue}Port Name \tPort Number \tStatus \tTCP \tUDP${default}"
if [ -v port ]; then if [ -v port ]; then
echo -e "Game: \t${port} \t$(ss -tupl | grep ${port} | wc -l) \t$(ss -tupl | grep ${port} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port} | grep udp | awk '{ print $2 }')" echo -e "Game: \t${port} \t$(ss -tupl | grep -c ${port}) \t$(ss -tupl | grep ${port} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port} | grep udp | awk '{ print $2 }')"
else else
echo -e "Game:" echo -e "Game:"
fi fi
if [ "${shortname}" == "rw" ]; then if [ "${shortname}" == "rw" ]; then
if [ -v port2 ]; then if [ -v port2 ]; then
echo -e "Game+1: \t${port2} \t$(ss -tupl | grep ${port} | wc -l) \t$(ss -tupl | grep ${port2} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port2} | grep udp | awk '{ print $2 }')" echo -e "Game+1: \t${port2} \t$(ss -tupl | grep -c ${port}) \t$(ss -tupl | grep ${port2} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port2} | grep udp | awk '{ print $2 }')"
else else
echo -e "Game+1:" echo -e "Game+1:"
fi fi
if [ -v port3 ]; then if [ -v port3 ]; then
echo -e "Game+2: \t${port3} \t$(ss -tupl | grep ${port} | wc -l) \t$(ss -tupl | grep ${port3} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port3} | grep udp | awk '{ print $2 }')" echo -e "Game+2: \t${port3} \t$(ss -tupl | grep -c ${port}) \t$(ss -tupl | grep ${port3} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port3} | grep udp | awk '{ print $2 }')"
else else
echo -e "Game+2:" echo -e "Game+2:"
fi fi
if [ -v port4 ]; then if [ -v port4 ]; then
echo -e "Game+3: \t${port4} \t$(ss -tupl | grep ${port} | wc -l) \t$(ss -tupl | grep ${port4} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port4} | grep udp | awk '{ print $2 }')" echo -e "Game+3: \t${port4} \t$(ss -tupl | grep -c ${port}) \t$(ss -tupl | grep ${port4} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port4} | grep udp | awk '{ print $2 }')"
else else
echo -e "Game+3:" echo -e "Game+3:"
fi fi
fi fi
if [ -v port401 ]; then if [ -v port401 ]; then
echo -e "Game+400: \t${port401} \t$(ss -tupl | grep ${port401} | wc -l) \t$(ss -tupl | grep ${port401} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port401} | grep udp | awk '{ print $2 }')" echo -e "Game+400: \t${port401} \t$(ss -tupl | grep -c ${port401}) \t$(ss -tupl | grep ${port401} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${port401} | grep udp | awk '{ print $2 }')"
else else
echo -e "Game+400:" echo -e "Game+400:"
fi fi
if [ -v portipv6 ]; then if [ -v portipv6 ]; then
echo -e "Game ipv6: \t${portipv6} \t$(ss -tupl | grep ${portipv6} | wc -l) \t$(ss -tupl | grep ${portipv6} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${portipv6} | grep udp | awk '{ print $2 }')" echo -e "Game ipv6: \t${portipv6} \t$(ss -tupl | grep -c ${portipv6}) \t$(ss -tupl | grep ${portipv6} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${portipv6} | grep udp | awk '{ print $2 }')"
else else
echo -e "Game ipv6:" echo -e "Game ipv6:"
fi fi
if [ -v queryport ]; then if [ -v queryport ]; then
echo -e "Query: \t${queryport} \t$(ss -tupl | grep ${queryport} | wc -l) \t$(ss -tupl | grep ${queryport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${queryport} | grep udp | awk '{ print $2 }')" echo -e "Query: \t${queryport} \t$(ss -tupl | grep -c ${queryport}) \t$(ss -tupl | grep ${queryport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${queryport} | grep udp | awk '{ print $2 }')"
else else
echo -e "Query:" echo -e "Query:"
fi fi
if [ -v httpport ]; then if [ -v httpport ]; then
echo -e "HTTP: \t${httpport} \t$(ss -tupl | grep ${httpport} | wc -l) \t$(ss -tupl | grep ${httpport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${httpport} | grep udp | awk '{ print $2 }')" echo -e "HTTP: \t${httpport} \t$(ss -tupl | grep -c ${httpport}) \t$(ss -tupl | grep ${httpport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${httpport} | grep udp | awk '{ print $2 }')"
else else
echo -e "HTTP:" echo -e "HTTP:"
fi fi
if [ -v httpqueryport ]; then if [ -v httpqueryport ]; then
echo -e "HTTP Query: \t${httpqueryport} \t$(ss -tupl | grep ${httpqueryport} | wc -l) \t$(ss -tupl | grep ${httpqueryport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${httpqueryport} | grep udp | awk '{ print $2 }')" echo -e "HTTP Query: \t${httpqueryport} \t$(ss -tupl | grep -c ${httpqueryport}) \t$(ss -tupl | grep ${httpqueryport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${httpqueryport} | grep udp | awk '{ print $2 }')"
else else
echo -e "HTTP Query:" echo -e "HTTP Query:"
fi fi
if [ -v webadminport ]; then if [ -v webadminport ]; then
echo -e "Web Admin: \t${webadminport} \t$(ss -tupl | grep ${webadminport} | wc -l) \t$(ss -tupl | grep ${webadminport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${webadminport} | grep udp | awk '{ print $2 }')" echo -e "Web Admin: \t${webadminport} \t$(ss -tupl | grep -c ${webadminport}) \t$(ss -tupl | grep ${webadminport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${webadminport} | grep udp | awk '{ print $2 }')"
else else
echo -e "Web Admin:" echo -e "Web Admin:"
fi fi
if [ -v clientport ]; then if [ -v clientport ]; then
echo -e "Client: \t${clientport} \t$(ss -tupl | grep ${clientport} | wc -l) \t$(ss -tupl | grep ${clientport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${clientport} | grep udp | awk '{ print $2 }')" echo -e "Client: \t${clientport} \t$(ss -tupl | grep -c ${clientport}) \t$(ss -tupl | grep ${clientport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${clientport} | grep udp | awk '{ print $2 }')"
else else
echo -e "Client:" echo -e "Client:"
fi fi
if [ -v rconport ]; then if [ -v rconport ]; then
echo -e "RCON: \t${rconport} \t$(ss -tupl | grep ${rconport} | wc -l) \t$(ss -tupl | grep ${rconport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${rconport} | grep udp | awk '{ print $2 }')" echo -e "RCON: \t${rconport} \t$(ss -tupl | grep -c ${rconport}) \t$(ss -tupl | grep ${rconport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${rconport} | grep udp | awk '{ print $2 }')"
else else
echo -e "RCON:" echo -e "RCON:"
fi fi
if [ -v rawport ]; then if [ -v rawport ]; then
echo -e "RAW UDP Socket: \t${rawport} \t$(ss -tupl | grep ${rawport} | wc -l) \t$(ss -tupl | grep ${rawport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${rawport} | grep udp | awk '{ print $2 }')" echo -e "RAW UDP Socket: \t${rawport} \t$(ss -tupl | grep -c ${rawport}) \t$(ss -tupl | grep ${rawport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${rawport} | grep udp | awk '{ print $2 }')"
else else
echo -e "RAW UDP Socket:" echo -e "RAW UDP Socket:"
fi fi
if [ -v masterport ]; then if [ -v masterport ]; then
echo -e "Game: Master: \t${masterport} \t$(ss -tupl | grep ${masterport} | wc -l) \t$(ss -tupl | grep ${masterport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${masterport} | grep udp | awk '{ print $2 }')" echo -e "Game: Master: \t${masterport} \t$(ss -tupl | grep -c ${masterport}) \t$(ss -tupl | grep ${masterport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${masterport} | grep udp | awk '{ print $2 }')"
else else
echo -e "Game: Master:" echo -e "Game: Master:"
fi fi
if [ -v steamport ]; then if [ -v steamport ]; then
echo -e "Steam: \t${steamport} \t$(ss -tupl | grep ${steamport} | wc -l) \t$(ss -tupl | grep ${steamport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steamport} | grep udp | awk '{ print $2 }')" echo -e "Steam: \t${steamport} \t$(ss -tupl | grep -c ${steamport}) \t$(ss -tupl | grep ${steamport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steamport} | grep udp | awk '{ print $2 }')"
else else
echo -e "Steam:" echo -e "Steam:"
fi fi
if [ -v steamauthport ]; then if [ -v steamauthport ]; then
echo -e "Steam: Auth: \t${steamauthport} \t$(ss -tupl | grep ${steamauthport} | wc -l) \t$(ss -tupl | grep ${steamauthport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steamauthport} | grep udp | awk '{ print $2 }')" echo -e "Steam: Auth: \t${steamauthport} \t$(ss -tupl | grep -c ${steamauthport}) \t$(ss -tupl | grep ${steamauthport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steamauthport} | grep udp | awk '{ print $2 }')"
else else
echo -e "Steam: Auth:" echo -e "Steam: Auth:"
fi fi
if [ -v steammasterport ]; then if [ -v steammasterport ]; then
echo -e "Steam: Master: \t${steammasterport} \t$(ss -tupl | grep ${steammasterport} | wc -l) \t$(ss -tupl | grep ${steammasterport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steammasterport} | grep udp | awk '{ print $2 }')" echo -e "Steam: Master: \t${steammasterport} \t$(ss -tupl | grep -c ${steammasterport}) \t$(ss -tupl | grep ${steammasterport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steammasterport} | grep udp | awk '{ print $2 }')"
else else
echo -e "Steam: Master:" echo -e "Steam: Master:"
fi fi
if [ -v steamqueryport ]; then if [ -v steamqueryport ]; then
echo -e "Steam: Query: \t${steamqueryport} \t$(ss -tupl | grep ${steamqueryport} | wc -l) \t$(ss -tupl | grep ${steamqueryport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steamqueryport} | grep udp | awk '{ print $2 }')" echo -e "Steam: Query: \t${steamqueryport} \t$(ss -tupl | grep -c ${steamqueryport}) \t$(ss -tupl | grep ${steamqueryport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${steamqueryport} | grep udp | awk '{ print $2 }')"
else else
echo -e "Steam: Query:" echo -e "Steam: Query:"
fi fi
if [ -v beaconport ]; then if [ -v beaconport ]; then
echo -e "Beacon: \t${beaconport} \t$(ss -tupl | grep ${beaconport} | wc -l) \t$(ss -tupl | grep ${beaconport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${beaconport} | grep udp | awk '{ print $2 }')" echo -e "Beacon: \t${beaconport} \t$(ss -tupl | grep -c ${beaconport}) \t$(ss -tupl | grep ${beaconport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${beaconport} | grep udp | awk '{ print $2 }')"
else else
echo -e "Beacon:" echo -e "Beacon:"
fi fi
if [ -v appport ]; then if [ -v appport ]; then
echo -e "App: \t${appport} \t$(ss -tupl | grep ${appport} | wc -l) \t$(ss -tupl | grep ${appport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${appport} | grep udp | awk '{ print $2 }')" echo -e "App: \t${appport} \t$(ss -tupl | grep -c ${appport}) \t$(ss -tupl | grep ${appport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${appport} | grep udp | awk '{ print $2 }')"
else else
echo -e "App:" echo -e "App:"
fi fi
if [ -v telnetport ]; then if [ -v telnetport ]; then
echo -e "Telnet: \t${telnetport} \t$(ss -tupl | grep ${telnetport} | wc -l) \t$(ss -tupl | grep ${telnetport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${telnetport} | grep udp | awk '{ print $2 }')" echo -e "Telnet: \t${telnetport} \t$(ss -tupl | grep -c ${telnetport}) \t$(ss -tupl | grep ${telnetport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${telnetport} | grep udp | awk '{ print $2 }')"
else else
echo -e "Telnet:" echo -e "Telnet:"
fi fi
if [ -v sourcetvport ]; then if [ -v sourcetvport ]; then
echo -e "SourceTV: \t${sourcetvport} \t$(ss -tupl | grep ${sourcetvport} | wc -l) \t$(ss -tupl | grep ${sourcetvport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${sourcetvport} | grep udp | awk '{ print $2 }')" echo -e "SourceTV: \t${sourcetvport} \t$(ss -tupl | grep -c ${sourcetvport}) \t$(ss -tupl | grep ${sourcetvport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${sourcetvport} | grep udp | awk '{ print $2 }')"
else else
echo -e "SourceTV:" echo -e "SourceTV:"
fi fi
if [ -v fileport ]; then if [ -v fileport ]; then
echo -e "File: \t${fileport} \t$(ss -tupl | grep ${fileport} | wc -l) \t$(ss -tupl | grep ${fileport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${fileport} | grep udp | awk '{ print $2 }')" echo -e "File: \t${fileport} \t$(ss -tupl | grep -c ${fileport}) \t$(ss -tupl | grep ${fileport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${fileport} | grep udp | awk '{ print $2 }')"
else else
echo -e "File:" echo -e "File:"
fi fi
if [ -v udplinkport ]; then if [ -v udplinkport ]; then
echo -e "UDP Link: \t${udplinkport} \t$(ss -tupl | grep ${udplinkport} | wc -l) \t$(ss -tupl | grep ${udplinkport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${udplinkport} | grep udp | awk '{ print $2 }')" echo -e "UDP Link: \t${udplinkport} \t$(ss -tupl | grep -c ${udplinkport}) \t$(ss -tupl | grep ${udplinkport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${udplinkport} | grep udp | awk '{ print $2 }')"
else else
echo -e "UDP Link:" echo -e "UDP Link:"
fi fi
if [ -v voiceport ]; then if [ -v voiceport ]; then
echo -e "Voice: \t${voiceport} \t$(ss -tupl | grep ${voiceport} | wc -l) \t$(ss -tupl | grep ${voiceport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${voiceport} | grep udp | awk '{ print $2 }')" echo -e "Voice: \t${voiceport} \t$(ss -tupl | grep -c ${voiceport}) \t$(ss -tupl | grep ${voiceport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${voiceport} | grep udp | awk '{ print $2 }')"
else else
echo -e "Voice:" echo -e "Voice:"
fi fi
if [ -v voiceunusedport ]; then if [ -v voiceunusedport ]; then
echo -e "Voice (Unused): \t${voiceunusedport} \t$(ss -tupl | grep ${voiceunusedport} | wc -l) \t$(ss -tupl | grep ${voiceunusedport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${voiceunusedport} | grep udp | awk '{ print $2 }')" echo -e "Voice (Unused): \t${voiceunusedport} \t$(ss -tupl | grep -c ${voiceunusedport}) \t$(ss -tupl | grep ${voiceunusedport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${voiceunusedport} | grep udp | awk '{ print $2 }')"
else else
echo -e "Voice (Unused):" echo -e "Voice (Unused):"
fi fi
if [ -v battleeyeport ]; then if [ -v battleeyeport ]; then
echo -e "BattleEye: \t${battleeyeport} \t$(ss -tupl | grep ${battleeyeport} | wc -l) \t$(ss -tupl | grep ${battleeyeport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${battleeyeport} | grep udp | awk '{ print $2 }')" echo -e "BattleEye: \t${battleeyeport} \t$(ss -tupl | grep -c ${battleeyeport}) \t$(ss -tupl | grep ${battleeyeport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${battleeyeport} | grep udp | awk '{ print $2 }')"
else else
echo -e "BattleEye:" echo -e "BattleEye:"
fi fi
if [ -v statsport ]; then if [ -v statsport ]; then
echo -e "Stats: \t${battleeyeport} \t$(ss -tupl | grep ${statsport} | wc -l) \t$(ss -tupl | grep ${statsport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${statsport} | grep udp | awk '{ print $2 }')" echo -e "Stats: \t${battleeyeport} \t$(ss -tupl | grep -c ${statsport}) \t$(ss -tupl | grep ${statsport} | grep tcp | awk '{ print $2 }') \t$(ss -tupl | grep ${statsport} | grep udp | awk '{ print $2 }')"
else else
echo -e "Stats:" echo -e "Stats:"
fi fi

2
lgsm/functions/command_install.sh

@ -11,7 +11,7 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_firstcommand_set fn_firstcommand_set
check.sh check.sh
if [ "$(whoami)" = "root" ]; then if [ "$(whoami)" == "root" ] && [ ! -f /.dockerenv ]; then
check_deps.sh check_deps.sh
else else
install_header.sh install_header.sh

8
lgsm/functions/command_monitor.sh

@ -131,7 +131,7 @@ fn_monitor_query() {
# Server query OK. # Server query OK.
fn_print_ok "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: " fn_print_ok "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: "
fn_print_ok_eol_nl fn_print_ok_eol_nl
fn_script_log_pass "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt}: OK" fn_script_log_pass "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt} : OK"
monitorpass=1 monitorpass=1
if [ "${querystatus}" == "0" ]; then if [ "${querystatus}" == "0" ]; then
# Add query data to log. # Add query data to log.
@ -161,14 +161,14 @@ fn_monitor_query() {
# Server query FAIL. # Server query FAIL.
fn_print_fail "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: " fn_print_fail "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: "
fn_print_fail_eol fn_print_fail_eol
fn_script_log_warn "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt}: FAIL" fn_script_log_warn "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt} : FAIL"
# Monitor will try gamedig (if supported) for first 30s then gsquery before restarting. # Monitor will try gamedig (if supported) for first 30s then gsquery before restarting.
# gsquery will fail if longer than 60s # gsquery will fail if longer than 60s
if [ "${totalseconds}" -ge "59" ]; then if [ "${totalseconds}" -ge "59" ]; then
# Monitor will FAIL if over 60s and trigger gane server reboot. # Monitor will FAIL if over 60s and trigger gane server reboot.
fn_print_fail "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: " fn_print_fail "Querying port: ${querymethod}: ${queryip}:${queryport} : ${totalseconds}/${queryattempt}: "
fn_print_fail_eol_nl fn_print_fail_eol_nl
fn_script_log_warn "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt}: FAIL" fn_script_log_warn "Querying port: ${querymethod}: ${queryip}:${queryport} : ${queryattempt} : FAIL"
# Send alert if enabled. # Send alert if enabled.
alert="restartquery" alert="restartquery"
alert.sh alert.sh
@ -180,7 +180,7 @@ fn_monitor_query() {
done done
# Second counter will wait for 15s before breaking loop. # Second counter will wait for 15s before breaking loop.
for seconds in {1..15}; do for seconds in {1..15}; do
fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: ${cyan}WAIT${default}" fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt} : ${cyan}WAIT${default}"
sleep 0.5 sleep 0.5
totalseconds=$((totalseconds + 1)) totalseconds=$((totalseconds + 1))
if [ "${seconds}" == "15" ]; then if [ "${seconds}" == "15" ]; then

2
lgsm/functions/core_exit.sh

@ -18,7 +18,7 @@ fn_exit_dev_debug() {
} }
# If running dependency check as root will remove any files that belong to root user. # If running dependency check as root will remove any files that belong to root user.
if [ "$(whoami)" == "root" ]; then if [ "$(whoami)" == "root" ] && [ ! -f /.dockerenv ]; then
find "${lgsmdir}"/ -group root -prune -exec rm -rf {} + > /dev/null 2>&1 find "${lgsmdir}"/ -group root -prune -exec rm -rf {} + > /dev/null 2>&1
find "${logdir}"/ -group root -prune -exec rm -rf {} + > /dev/null 2>&1 find "${logdir}"/ -group root -prune -exec rm -rf {} + > /dev/null 2>&1
fi fi

2
lgsm/functions/core_functions.sh

@ -8,7 +8,7 @@
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
modulesversion="v22.2.0" modulesversion="v23.1.0"
# Core # Core

2
lgsm/functions/core_getopt.sh

@ -75,7 +75,7 @@ if [ "${shortname}" == "jk2" ] || [ "${engine}" != "idtech3" ]; then
fi fi
# Validate and check-update command. # Validate and check-update command.
if [ "${appid}" ]||[ "${shortname}" == "ts3" ]; then if [ "${appid}" ] || [ "${shortname}" == "ts3" ]; then
currentopt+=("${cmd_validate[@]}" "${cmd_check_update[@]}") currentopt+=("${cmd_validate[@]}" "${cmd_check_update[@]}")
fi fi

4
lgsm/functions/core_steamcmd.sh

@ -281,8 +281,8 @@ fn_update_steamcmd_compare() {
} }
fn_appmanifest_info() { fn_appmanifest_info() {
appmanifestfile=$(find "${serverfiles}" -type f -name "appmanifest_${appid}.acf") appmanifestfile=$(find -L "${serverfiles}" -type f -name "appmanifest_${appid}.acf")
appmanifestfilewc=$(find "${serverfiles}" -type f -name "appmanifest_${appid}.acf" | wc -l) appmanifestfilewc=$(find -L "${serverfiles}" -type f -name "appmanifest_${appid}.acf" | wc -l)
} }
fn_appmanifest_check() { fn_appmanifest_check() {

8
lgsm/functions/fix_bt.sh

@ -14,3 +14,11 @@ if [ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Daedalic Entertainment GmbH/
mkdir -p "${XDG_DATA_HOME:="${HOME}/.local/share"}/Daedalic Entertainment GmbH/Barotrauma" mkdir -p "${XDG_DATA_HOME:="${HOME}/.local/share"}/Daedalic Entertainment GmbH/Barotrauma"
fn_fix_msg_end fn_fix_msg_end
fi fi
# check if startscript is with windows line endings and reformat it
if file -b "${serverfiles}${executable:1}" | grep -q CRLF; then
fixname="Convert ${executable:2} to unix file format"
fn_fix_msg_start
dos2unix -q "${serverfiles}${executable:1}"
fn_fix_msg_end
fi

10
lgsm/functions/fix_lo.sh

@ -6,12 +6,12 @@
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local APPID_FILE=${executabledir}/steam_appid.txt appidfile=${executabledir}/steam_appid.txt
if [ ! -f "${APPID_FILE}" ]; then if [ ! -f "${appidfile}" ]; then
fn_print_information "adding ${APPID_FILE} to ${gamename} server." fn_print_information "adding ${appidfile} to ${gamename} server."
fn_sleep_time fn_sleep_time
echo "903950" > "${APPID_FILE}" echo "903950" > "${appidfile}"
else else
fn_print_information "${APPID_FILE} already exists. No action to be taken." fn_print_information "${appidfile} already exists. No action to be taken."
fn_sleep_time fn_sleep_time
fi fi

4
lgsm/functions/fix_steamcmd.sh

@ -56,7 +56,7 @@ steamclientsdk64="${steamsdk64}/steamclient.so"
# remove any old unlinked versions of steamclient.so # remove any old unlinked versions of steamclient.so
if [ -f "${steamclientsdk64}" ]; then if [ -f "${steamclientsdk64}" ]; then
if [ "$(stat -c '%h' "${steamclientsdk64}")" -eq 1 ]; then if [ "$(stat -c '%h' "${steamclientsdk64}")" -eq 1 ]; then
fixname="steamclient.so sdk64 -- remove old file" fixname="steamclient.so sdk64 - remove old file"
fn_fix_msg_start fn_fix_msg_start
rm -f "${steamclientsdk64}" rm -f "${steamclientsdk64}"
fn_fix_msg_end fn_fix_msg_end
@ -87,7 +87,7 @@ steamsdk32="${HOME}/.steam/sdk32"
steamclientsdk32="${HOME}/.steam/sdk32/steamclient.so" steamclientsdk32="${HOME}/.steam/sdk32/steamclient.so"
if [ -f "${steamclientsdk32}" ]; then if [ -f "${steamclientsdk32}" ]; then
if [ " $(stat -c '%h' "${steamclientsdk32}")" -eq 1 ]; then if [ " $(stat -c '%h' "${steamclientsdk32}")" -eq 1 ]; then
fixname="steamclient.so sdk32 -- remove old file" fixname="steamclient.so sdk32 - remove old file"
fn_fix_msg_start fn_fix_msg_start
rm -f "${steamclientsdk32}" rm -f "${steamclientsdk32}"
fn_fix_msg_end fn_fix_msg_end

16
lgsm/functions/fix_vh.sh

@ -8,14 +8,28 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=./linux64:$LD_LIBRARY_PATH
# special check if Valheim Plus is installed
modsdir="${lgsmdir}/mods" modsdir="${lgsmdir}/mods"
modsinstalledlistfullpath="${modsdir}/installed-mods.txt" modsinstalledlistfullpath="${modsdir}/installed-mods.txt"
if [ -f "${modsinstalledlistfullpath}" ]; then if [ -f "${modsinstalledlistfullpath}" ]; then
# special check if Valheim Plus is installed
if grep -qE "^valheimplus" "${modsinstalledlistfullpath}"; then if grep -qE "^valheimplus" "${modsinstalledlistfullpath}"; then
if ! grep -qE "^executable=\"./start_server_bepinex.sh\"" "${configdirserver}/${selfname}.cfg"; then if ! grep -qE "^executable=\"./start_server_bepinex.sh\"" "${configdirserver}/${selfname}.cfg"; then
echo 'executable="./start_server_bepinex.sh"' >> "${configdirserver}/${selfname}.cfg" echo 'executable="./start_server_bepinex.sh"' >> "${configdirserver}/${selfname}.cfg"
executable="./start_server_bepinex.sh" executable="./start_server_bepinex.sh"
fi fi
fi fi
# special exports for BepInEx if installed
if grep -qE "^bepinexvh" "${modsinstalledlistfullpath}"; then
fn_print_info_nl "BepInEx install detected, applying start exports"
fn_script_log_info "BepInEx install detected, applying start exports"
# exports for BepInEx framework from script start_server_bepinex.sh
export DOORSTOP_ENABLE=TRUE
export DOORSTOP_INVOKE_DLL_PATH=./BepInEx/core/BepInEx.Preloader.dll
export DOORSTOP_CORLIB_OVERRIDE_PATH=./unstripped_corlib
export LD_LIBRARY_PATH="./doorstop_libs:${LD_LIBRARY_PATH}"
export LD_PRELOAD="libdoorstop_x64.so:${LD_PRELOAD}"
export SteamAppId=892970
fi
fi fi

165
lgsm/functions/info_game.sh

@ -17,24 +17,24 @@ functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_info_game_ac() { fn_info_game_ac() {
# Config # Config
if [ ! -f "${servercfgfullpath}" ]; then if [ ! -f "${servercfgfullpath}" ]; then
adminpassword="${unavailable}"
httpport="${zero}" httpport="${zero}"
port="${zero}" port="${zero}"
queryport="${zero}" queryport="${zero}"
servername="${unavailable}" servername="${unavailable}"
adminpassword="${unavailable}"
else else
adminpassword=$(grep "ADMIN_PASSWORD" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/ADMIN_PASSWORD//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
httpport=$(grep "HTTP_PORT" "${servercfgfullpath}" | tr -cd '[:digit:]') httpport=$(grep "HTTP_PORT" "${servercfgfullpath}" | tr -cd '[:digit:]')
port=$(grep "TCP_PORT" "${servercfgfullpath}" | tr -cd '[:digit:]') port=$(grep "TCP_PORT" "${servercfgfullpath}" | tr -cd '[:digit:]')
queryport="${httpport}" queryport="${httpport}"
servername=$(grep "NAME" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/NAME//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | head -n 1) servername=$(grep "NAME" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/NAME//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' | head -n 1)
adminpassword=$(grep "ADMIN_PASSWORD" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/ADMIN_PASSWORD//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
# Not set # Not set
adminpassword=${adminpassword:-"NOT SET"}
httpport=${httpport:-"0"} httpport=${httpport:-"0"}
port=${port:-"0"} port=${port:-"0"}
queryport=${queryport:-"0"} queryport=${queryport:-"0"}
servername=${servername:-"NOT SET"} servername=${servername:-"NOT SET"}
adminpassword=${adminpassword:-"NOT SET"}
fi fi
} }
@ -42,67 +42,74 @@ fn_info_game_ac() {
fn_info_game_ark() { fn_info_game_ark() {
# Config # Config
if [ ! -f "${servercfgfullpath}" ]; then if [ ! -f "${servercfgfullpath}" ]; then
servername="${unavailable}"
adminpassword="${unavailable}" adminpassword="${unavailable}"
servername="${unavailable}"
serverpassword="${unavailable}" serverpassword="${unavailable}"
else else
servername=$(sed -nr 's/^SessionName=(.*)/\1/p' "${servercfgfullpath}")
adminpassword=$(sed -nr 's/^ServerAdminPassword=(.*)/\1/p' "${servercfgfullpath}") adminpassword=$(sed -nr 's/^ServerAdminPassword=(.*)/\1/p' "${servercfgfullpath}")
servername=$(sed -nr 's/^SessionName=(.*)/\1/p' "${servercfgfullpath}")
serverpassword=$(sed -nr 's/^ServerPassword=(.*)/\1/p' "${servercfgfullpath}") serverpassword=$(sed -nr 's/^ServerPassword=(.*)/\1/p' "${servercfgfullpath}")
# Not set # Not set
servername=${servername:-"NOT SET"}
adminpassword=${adminpassword:-"NOT SET"} adminpassword=${adminpassword:-"NOT SET"}
servername=${servername:-"NOT SET"}
serverpassword=${serverpassword:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"}
fi fi
# Parameters # Parameters
maxplayers=${maxplayers:-"0"}
port=${port:-"0"} port=${port:-"0"}
queryport=${queryport:-"0"} queryport=${queryport:-"0"}
rconport=${rconport:-"0"}
rawport=$((port + 1)) rawport=$((port + 1))
maxplayers=${maxplayers:-"0"} rconport=${rconport:-"0"}
} }
fn_info_game_arma3() { fn_info_game_arma3() {
# Config # Config
if [ ! -f "${servercfgfullpath}" ]; then if [ ! -f "${servercfgfullpath}" ]; then
servername="${unavailable}"
adminpassword="${unavailable}" adminpassword="${unavailable}"
serverpassword="${unavailable}"
maxplayers="${zero}" maxplayers="${zero}"
servername="${unavailable}"
serverpassword="${unavailable}"
else else
servername=$(sed -nr 's/^hostname\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")
adminpassword=$(sed -nr 's/^passwordAdmin\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}") adminpassword=$(sed -nr 's/^passwordAdmin\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")
serverpassword=$(sed -nr 's/^password\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")
maxplayers=$(sed -nr 's/^maxPlayers\s*=\s*([0-9]+)\s*;/\1/p' "${servercfgfullpath}") maxplayers=$(sed -nr 's/^maxPlayers\s*=\s*([0-9]+)\s*;/\1/p' "${servercfgfullpath}")
servername=$(sed -nr 's/^hostname\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")
serverpassword=$(sed -nr 's/^password\s*=\s*"(.*)"\s*;/\1/p' "${servercfgfullpath}")
# Not set # Not set
servername=${servername:-"NOT SET"}
adminpassword=${adminpassword:-"NOT SET"} adminpassword=${adminpassword:-"NOT SET"}
serverpassword=${serverpassword:-"NOT SET"}
maxplayers=${maxplayers:-"0"} maxplayers=${maxplayers:-"0"}
servername=${servername:-"NOT SET"}
serverpassword=${serverpassword:-"NOT SET"}
fi fi
# Parameters # Parameters
battleeyeport=$((port + 4))
port=${port:-"2302"} port=${port:-"2302"}
voiceport=${port:-"2302"}
queryport=$((port + 1)) queryport=$((port + 1))
steammasterport=$((port + 2)) steammasterport=$((port + 2))
voiceport=${port:-"2302"}
voiceunusedport=$((port + 3)) voiceunusedport=$((port + 3))
battleeyeport=$((port + 4))
} }
fn_info_game_armar() { fn_info_game_armar() {
if [ -f "${servercfgfullpath}" ]; then if [ ! -f "${servercfgfullpath}" ]; then
adminpassword="${unavailable}"
maxplayers="${zero}"
port=${port:-"0"}
queryport=
servername="${unavailable}"
serverpassword="${unavailable}"
else
adminpassword=$(jq -r '.adminPassword' "${servercfgfullpath}") adminpassword=$(jq -r '.adminPassword' "${servercfgfullpath}")
battleeyeport=1376
configip=$(jq -r '.gameHostBindAddress' "${servercfgfullpath}") configip=$(jq -r '.gameHostBindAddress' "${servercfgfullpath}")
maxplayers=$(jq -r '.game.playerCountLimit' "${servercfgfullpath}") maxplayers=$(jq -r '.game.playerCountLimit' "${servercfgfullpath}")
port=$(jq -r '.gameHostBindPort' "${servercfgfullpath}") port=$(jq -r '.gameHostBindPort' "${servercfgfullpath}")
queryport=$(jq -r '.steamQueryPort' "${servercfgfullpath}") queryport=$(jq -r '.steamQueryPort' "${servercfgfullpath}")
servername=$(jq -r '.game.name' "${servercfgfullpath}") servername=$(jq -r '.game.name' "${servercfgfullpath}")
serverpassword=$(jq -r '.game.password' "${servercfgfullpath}") serverpassword=$(jq -r '.game.password' "${servercfgfullpath}")
battleeyeport=1376
# Not set # Not set
adminpassword=${adminpassword:-"NOT SET"} adminpassword=${adminpassword:-"NOT SET"}
@ -112,10 +119,6 @@ fn_info_game_armar() {
queryport=${queryport:-"0"} queryport=${queryport:-"0"}
servername=${servername:-"NOT SET"} servername=${servername:-"NOT SET"}
serverpassword=${serverpassword:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"}
else
port=${port:-"0"}
servername="${unavailable}"
serverpassword="${unavailable}"
fi fi
} }
@ -148,7 +151,7 @@ fn_info_game_av() {
fi fi
# Not set # Not set
maxplayers=${maxplayers:-"NOT SET"} maxplayers=${maxplayers:-"0"}
servername=${servername:-"NOT SET"} servername=${servername:-"NOT SET"}
serverpassword=${serverpassword:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"}
port=${port:-"0"} port=${port:-"0"}
@ -233,7 +236,7 @@ fn_info_game_bo() {
serverpassword=${serverpassword:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"}
port=${port:-"0"} port=${port:-"0"}
queryport=${queryport:-"0"} queryport=${queryport:-"0"}
maxplayers=${maxplayers:-"NOT SET"} maxplayers=${maxplayers:-"0"}
fi fi
} }
@ -488,7 +491,7 @@ fn_info_game_dodr() {
maxplayers=$(sed -nr 's/^iServerMaxPlayers=(.*)$/\1/p' "${servercfgfullpath}") maxplayers=$(sed -nr 's/^iServerMaxPlayers=(.*)$/\1/p' "${servercfgfullpath}")
# Not set # Not set
maxplayers=${maxplayers:-"NOT SET"} maxplayers=${maxplayers:-"0"}
fi fi
# Parameters # Parameters
@ -918,7 +921,7 @@ fn_info_game_mc() {
servername=${servername:-"NOT SET"} servername=${servername:-"NOT SET"}
rconpassword=${rconpassword:-"NOT SET"} rconpassword=${rconpassword:-"NOT SET"}
rconport=${rconport:-"NOT SET"} rconport=${rconport:-"NOT SET"}
maxplayers=${maxplayers:-"NOT SET"} maxplayers=${maxplayers:-"0"}
port=${port:-"NOT SET"} port=${port:-"NOT SET"}
queryport=${queryport:-"NOT SET"} queryport=${queryport:-"NOT SET"}
queryenabled="${queryenabled:-"NOT SET"}" queryenabled="${queryenabled:-"NOT SET"}"
@ -949,7 +952,7 @@ fn_info_game_mcb() {
# Not set # Not set
servername=${servername:-"NOT SET"} servername=${servername:-"NOT SET"}
maxplayers=${maxplayers:-"NOT SET"} maxplayers=${maxplayers:-"0"}
port=${port:-"NOT SET"} port=${port:-"NOT SET"}
portipv6=${portipv6:-"NOT SET"} portipv6=${portipv6:-"NOT SET"}
queryport=${queryport:-"NOT SET"} queryport=${queryport:-"NOT SET"}
@ -1015,7 +1018,7 @@ fn_info_game_mom() {
if [ ! -f "${servercfgfullpath}" ]; then if [ ! -f "${servercfgfullpath}" ]; then
servername="${unavailable}" servername="${unavailable}"
serverpassword="${unavailable}" serverpassword="${unavailable}"
maxplayer="${zero}" maxplayers="${zero}"
defaultmap="${unavailable}" defaultmap="${unavailable}"
else else
servername=$(grep "ServerName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//') servername=$(grep "ServerName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
@ -1026,7 +1029,7 @@ fn_info_game_mom() {
# Not set # Not set
servername=${servername:-"NOT SET"} servername=${servername:-"NOT SET"}
serverpassword=${serverpassword:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"}
maxplayer=${maxplayers:-"NOT SET"} maxplayers=${maxplayers:-"0"}
defaultmap=${defaultmap:-"NOT SET"} defaultmap=${defaultmap:-"NOT SET"}
fi fi
@ -1090,6 +1093,26 @@ fn_info_game_mumble() {
fi fi
} }
fn_info_game_nec() {
# Config
if [ ! -f "${servercfgfullpath}" ]; then
maxplayers=${maxplayers:-"0"}
port=${port:-"0"}
servername="Necesse"
serverpassword="${unavailable}"
else
maxplayers=$(grep "slots" "${servercfgfullpath}" | cut -f1 -d "/" | tr -cd '[:digit:]')
port=$(grep "port" "${servercfgfullpath}" | cut -f1 -d "/" | tr -cd '[:digit:]')
serverpassword=$(grep "password" "${servercfgfullpath}" | cut -f1 -d "/" | tr -cd '[:digit:]')
# Not set
maxplayers=${maxplayers:-"0"}
port=${port:-"0"}
servername="Necesse Port ${port}"
serverpassword=${serverpassword:-"NOT SET"}
fi
}
fn_info_game_onset() { fn_info_game_onset() {
# Config # Config
if [ ! -f "${servercfgfullpath}" ]; then if [ ! -f "${servercfgfullpath}" ]; then
@ -1107,7 +1130,7 @@ fn_info_game_onset() {
# Not set # Not set
servername=${servername:-"NOT SET"} servername=${servername:-"NOT SET"}
maxplayers=${maxplayers:-"NOT SET"} maxplayers=${maxplayers:-"0"}
port=${port:-"NOT SET"} port=${port:-"NOT SET"}
httpport=${httpport:-"NOT SET"} httpport=${httpport:-"NOT SET"}
queryport=${queryport:-"NOT SET"} queryport=${queryport:-"NOT SET"}
@ -1134,7 +1157,7 @@ fn_info_game_pc() {
# Not set # Not set
servername=${servername:-"NOT SET"} servername=${servername:-"NOT SET"}
serverpassword=${serverpassword:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"}
maxplayers=${maxplayers:-"NOT SET"} maxplayers=${maxplayers:-"0"}
port=${port:-"NOT SET"} port=${port:-"NOT SET"}
queryport=${queryport:-"NOT SET"} queryport=${queryport:-"NOT SET"}
steamport=${steamport:-"NOT SET"} steamport=${steamport:-"NOT SET"}
@ -1161,7 +1184,7 @@ fn_info_game_pc2() {
# Not set # Not set
servername=${servername:-"NOT SET"} servername=${servername:-"NOT SET"}
serverpassword=${serverpassword:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"}
maxplayers=${maxplayers:-"NOT SET"} maxplayers=${maxplayers:-"0"}
port=${port:-"NOT SET"} port=${port:-"NOT SET"}
queryport=${queryport:-"NOT SET"} queryport=${queryport:-"NOT SET"}
steamport=${steamport:-"NOT SET"} steamport=${steamport:-"NOT SET"}
@ -1230,6 +1253,30 @@ fn_info_game_pvr() {
queryport=${port:-"0"} queryport=${port:-"0"}
} }
fn_info_game_prism3d() {
# Config
if [ ! -f "${servercfgfullpath}" ]; then
maxplayers="${unavailable}"
port="${zero}"
queryport="${zero}"
servername="${unavailable}"
serverpassword="${unavailable}"
else
maxplayers=$(sed -nr 's/^\s*max_players\s*:\s*([0-9]+)/\1/p' "${servercfgfullpath}")
port=$(sed -nr 's/^\s*connection_dedicated_port\s*:\s*([0-9]+)/\1/p' "${servercfgfullpath}")
queryport=$(sed -nr 's/^\s*query_dedicated_port\s*:\s*([0-9]+)/\1/p' "${servercfgfullpath}")
servername=$(sed -nr 's/^\s*lobby_name\s*:\s*"?([^"\r\n]+)"?/\1/p' "${servercfgfullpath}")
serverpassword=$(sed -nr 's/^\s*password\s*:\s*"(.*)"/\1/p' "${servercfgfullpath}")
# Not set
maxplayers=${maxplayers:-"0"}
port=${port:-"27015"}
queryport=${queryport:-"27016"}
servername=${servername:-"NOT SET"}
serverpassword=${serverpassword:-"NOT SET"}
fi
}
fn_info_game_pz() { fn_info_game_pz() {
# Config # Config
if [ ! -f "${servercfgfullpath}" ]; then if [ ! -f "${servercfgfullpath}" ]; then
@ -1450,7 +1497,7 @@ fn_info_game_rust() {
# Parameters # Parameters
servername=${servername:-"NOT SET"} servername=${servername:-"NOT SET"}
port=${port:-"0"} port=${port:-"0"}
queryport=${port:-"0"} queryport=${queryport:-"0"}
appport=${appport:-"0"} appport=${appport:-"0"}
rconport=${rconport:-"0"} rconport=${rconport:-"0"}
gamemode=${gamemode:-"NOT SET"} gamemode=${gamemode:-"NOT SET"}
@ -1502,7 +1549,7 @@ fn_info_game_rw() {
serverpassword=${serverpassword:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"}
rconpassword=${rconpassword:-"NOT SET"} rconpassword=${rconpassword:-"NOT SET"}
rconport=${rconport:-"NOT SET"} rconport=${rconport:-"NOT SET"}
maxplayers=${maxplayers:-"NOT SET"} maxplayers=${maxplayers:-"0"}
port=${port:-"0"} port=${port:-"0"}
port2=${port2:-"0"} port2=${port2:-"0"}
port3=${port3:-"0"} port3=${port3:-"0"}
@ -1599,18 +1646,18 @@ fn_info_game_sbots() {
fn_info_game_scpsl() { fn_info_game_scpsl() {
# Config # Config
if [ -f "${servercfgfullpath}" ]; then if [ ! -f "${servercfgfullpath}" ]; then
servername=$(sed -nr 's/^server_name: (.*)$/\1/p' "${servercfgfullpath}")
maxplayers=$(sed -nr 's/^max_players: (.*)$/\1/p' "${servercfgfullpath}")
configip=$(sed -nr 's/^ipv4_bind_ip: (.*)$/\1/p' "${servercfgfullpath}")
tickrate=$(sed -nr 's/^server_tickrate: (.*)$/\1/p' "${servercfgfullpath}")
adminpassword=$(sed -nr 's/^administrator_query_password: (.*)$/\1/p' "${servercfgfullpath}")
else
servername=${servername:-"NOT SET"} servername=${servername:-"NOT SET"}
maxplayers=${maxplayers:-"0"} maxplayers=${maxplayers:-"0"}
configip=${configip:-"0.0.0.0"} configip=${configip:-"0.0.0.0"}
tickrate=${tickrate:-"NOT SET"} tickrate=${tickrate:-"NOT SET"}
adminpassword=${adminpassword:-"NOT SET"} adminpassword=${adminpassword:-"NOT SET"}
else
servername=$(sed -nr 's/^server_name: (.*)$/\1/p' "${servercfgfullpath}")
maxplayers=$(sed -nr 's/^max_players: (.*)$/\1/p' "${servercfgfullpath}")
configip=$(sed -nr 's/^ipv4_bind_ip: (.*)$/\1/p' "${servercfgfullpath}")
tickrate=$(sed -nr 's/^server_tickrate: (.*)$/\1/p' "${servercfgfullpath}")
adminpassword=$(sed -nr 's/^administrator_query_password: (.*)$/\1/p' "${servercfgfullpath}")
fi fi
# Parameters # Parameters
@ -1668,7 +1715,7 @@ fn_info_game_sdtd() {
telnetenabled=${telnetenabled:-"NOT SET"} telnetenabled=${telnetenabled:-"NOT SET"}
telnetport=${telnetport:-"0"} telnetport=${telnetport:-"0"}
telnetpass=${telnetpass:-"NOT SET"} telnetpass=${telnetpass:-"NOT SET"}
maxplayers=${maxplayers:-"NOT SET"} maxplayers=${maxplayers:-"0"}
gamemode=${gamemode:-"NOT SET"} gamemode=${gamemode:-"NOT SET"}
gameworld=${gameworld:-"NOT SET"} gameworld=${gameworld:-"NOT SET"}
fi fi
@ -1869,7 +1916,13 @@ fn_info_game_terraria() {
fn_info_game_stn() { fn_info_game_stn() {
# Config # Config
if [ -f "${servercfgfullpath}" ]; then if [ ! -f "${servercfgfullpath}" ]; then
servername="${unavailable}"
configip=${configip:-"0.0.0.0"}
port="${zero}"
queryport="${zero}"
serverpassword=${serverpassword:-"NOT SET"}
else
servername=$(sed -nr 's/^ServerName="(.*)"/\1/p' "${servercfgfullpath}") servername=$(sed -nr 's/^ServerName="(.*)"/\1/p' "${servercfgfullpath}")
configip=$(sed -nr 's/^ServerIP=([0-9]+)/\1/p' "${servercfgfullpath}") configip=$(sed -nr 's/^ServerIP=([0-9]+)/\1/p' "${servercfgfullpath}")
port=$(sed -nr 's/^ServerPort=([0-9]+)/\1/p' "${servercfgfullpath}") port=$(sed -nr 's/^ServerPort=([0-9]+)/\1/p' "${servercfgfullpath}")
@ -1878,23 +1931,25 @@ fn_info_game_stn() {
# Not set # Not set
serverpassword=${serverpassword:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"}
else port=${port:-"0"}
servername="${unavailable}"
configip=${configip:-"0.0.0.0"}
port="${zero}"
queryport="${zero}"
serverpassword=${serverpassword:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"}
queryport=${queryport:-"0"}
fi fi
} }
fn_info_game_ti() { fn_info_game_ti() {
if [ -f "${servercfgfullpath}" ]; then if [ ! -f "${servercfgfullpath}" ]; then
servername=$(sed -nr 's/^ServerName="(.*)"/\1/p' "${servercfgfullpath}")
maxplayers=$(sed -nr 's/^MaxPlayerCount=([0-9]+)/\1/' "${servercfgfullpath}")
else
servername="${unavailable}" servername="${unavailable}"
maxplayers="${zero}" maxplayers="${zero}"
else
servername=$(sed -nr 's/^ServerName="(.*)"/\1/p' "${servercfgfullpath}")
maxplayers=$(sed -nr 's/^MaxPlayerCount=([0-9]+)/\1/' "${servercfgfullpath}")
# Not set
servername=${servername:-"NOT SET"}
maxplayers=${maxplayers:-"0"}
fi fi
} }
fn_info_game_ts3() { fn_info_game_ts3() {
@ -2156,7 +2211,7 @@ fn_info_game_ut3() {
servername=${servername:-"NOT SET"} servername=${servername:-"NOT SET"}
serverpassword=${serverpassword:-"NOT SET"} serverpassword=${serverpassword:-"NOT SET"}
adminpassword=${adminpassword:-"NOT SET"} adminpassword=${adminpassword:-"NOT SET"}
maxplayers=${maxplayers:-"NOT SET"} maxplayers=${maxplayers:-"0"}
webadminenabled=${webadminenabled:-"NOT SET"} webadminenabled=${webadminenabled:-"NOT SET"}
webadminport=${webadminport:-"0"} webadminport=${webadminport:-"0"}
webadminuser=${webadminuser:-"NOT SET"} webadminuser=${webadminuser:-"NOT SET"}
@ -2409,6 +2464,8 @@ elif [ "${shortname}" == "mta" ]; then
fn_info_game_mta fn_info_game_mta
elif [ "${shortname}" == "mumble" ]; then elif [ "${shortname}" == "mumble" ]; then
fn_info_game_mumble fn_info_game_mumble
elif [ "${shortname}" == "nec" ]; then
fn_info_game_nec
elif [ "${shortname}" == "onset" ]; then elif [ "${shortname}" == "onset" ]; then
fn_info_game_onset fn_info_game_onset
elif [ "${shortname}" == "pc" ]; then elif [ "${shortname}" == "pc" ]; then
@ -2495,6 +2552,8 @@ elif [ "${shortname}" == "wmc" ]; then
fn_info_game_wmc fn_info_game_wmc
elif [ "${shortname}" == "wurm" ]; then elif [ "${shortname}" == "wurm" ]; then
fn_info_game_wurm fn_info_game_wurm
elif [ "${engine}" == "prism3d" ]; then
fn_info_game_prism3d
elif [ "${engine}" == "source" ] || [ "${engine}" == "goldsrc" ]; then elif [ "${engine}" == "source" ] || [ "${engine}" == "goldsrc" ]; then
fn_info_game_source fn_info_game_source
elif [ "${engine}" == "unreal2" ]; then elif [ "${engine}" == "unreal2" ]; then

28
lgsm/functions/info_messages.sh

@ -658,7 +658,7 @@ fn_info_message_ports_edit() {
startparameterslocation="${red}UNKNOWN${default}" startparameterslocation="${red}UNKNOWN${default}"
# engines/games that require editing in the config file. # engines/games that require editing in the config file.
local ports_edit_array=("ac" "arma3" "armar" "bo" "bt" "cd" "dst" "eco" "idtech2" "idtech3" "idtech3_ql" "jc2" "jc3" "lwjgl2" "mcb" "mumble" "pc" "pc2" "pz" "qw" "refractor" "renderware" "rw" "sb" "sdtd" "st" "stn" "ts3" "tw" "terraria" "unreal" "unreal2" "unreal3" "vints" "wurm") local ports_edit_array=("ac" "arma3" "armar" "bo" "bt" "cd" "dst" "eco" "idtech2" "idtech3" "idtech3_ql" "jc2" "jc3" "lwjgl2" "mcb" "mumble" "nec" "pc" "pc2" "prism3d" "pz" "qw" "refractor" "renderware" "rw" "sb" "sdtd" "st" "stn" "ts3" "tw" "terraria" "unreal" "unreal2" "unreal3" "vints" "wurm")
for port_edit in "${ports_edit_array[@]}"; do for port_edit in "${ports_edit_array[@]}"; do
if [ "${shortname}" == "ut3" ]; then if [ "${shortname}" == "ut3" ]; then
startparameterslocation="${servercfgdir}/UTWeb.ini" startparameterslocation="${servercfgdir}/UTWeb.ini"
@ -687,7 +687,7 @@ fn_info_message_ports() {
echo -e "ss -tuplwn | grep AvorionServer" echo -e "ss -tuplwn | grep AvorionServer"
elif [ "${shortname}" == "bf1942" ]; then elif [ "${shortname}" == "bf1942" ]; then
echo -e "ss -tuplwn | grep bf1942_lnxded" echo -e "ss -tuplwn | grep bf1942_lnxded"
elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "rw" ] || [ "${shortname}" == "vpmc" ] || [ "${shortname}" == "wmc" ]; then elif [ "${shortname}" == "mc" ] || [ "${shortname}" == "nec" ] || [ "${shortname}" == "pmc" ] || [ "${shortname}" == "rw" ] || [ "${shortname}" == "vpmc" ] || [ "${shortname}" == "wmc" ]; then
echo -e "ss -tuplwn | grep java" echo -e "ss -tuplwn | grep java"
elif [ "${shortname}" == "terraria" ]; then elif [ "${shortname}" == "terraria" ]; then
echo -e "ss -tuplwn | grep Main" echo -e "ss -tuplwn | grep Main"
@ -1179,6 +1179,13 @@ fn_info_message_mumble() {
} | column -s $'\t' -t } | column -s $'\t' -t
} }
fn_info_message_nec() {
{
fn_port "header"
fn_port "Game" port udp
} | column -s $'\t' -t
}
fn_info_message_onset() { fn_info_message_onset() {
{ {
fn_port "header" fn_port "header"
@ -1404,6 +1411,15 @@ fn_info_message_sol() {
fn_port "Files" filesport tcp fn_port "Files" filesport tcp
} | column -s $'\t' -t } | column -s $'\t' -t
} }
fn_info_message_prism3d() {
{
fn_port "header"
fn_port "Game" port udp
fn_port "Query" queryport udp
} | column -s $'\t' -t
}
fn_info_message_source() { fn_info_message_source() {
{ {
fn_port "header" fn_port "header"
@ -1737,12 +1753,14 @@ fn_info_message_select_engine() {
fn_info_message_mh fn_info_message_mh
elif [ "${shortname}" == "mohaa" ]; then elif [ "${shortname}" == "mohaa" ]; then
fn_info_message_mohaa fn_info_message_mohaa
elif [ "${shortname}" == "mom" ]; then
fn_info_message_mom
elif [ "${shortname}" == "mta" ]; then elif [ "${shortname}" == "mta" ]; then
fn_info_message_mta fn_info_message_mta
elif [ "${shortname}" == "mumble" ]; then elif [ "${shortname}" == "mumble" ]; then
fn_info_message_mumble fn_info_message_mumble
elif [ "${shortname}" == "mom" ]; then elif [ "${shortname}" == "nec" ]; then
fn_info_message_mom fn_info_message_nec
elif [ "${shortname}" == "onset" ]; then elif [ "${shortname}" == "onset" ]; then
fn_info_message_onset fn_info_message_onset
elif [ "${shortname}" == "pc" ]; then elif [ "${shortname}" == "pc" ]; then
@ -1825,6 +1843,8 @@ fn_info_message_select_engine() {
fn_info_message_wurm fn_info_message_wurm
elif [ "${engine}" == "goldsrc" ]; then elif [ "${engine}" == "goldsrc" ]; then
fn_info_message_goldsrc fn_info_message_goldsrc
elif [ "${engine}" == "prism3d" ]; then
fn_info_message_prism3d
elif [ "${engine}" == "source" ]; then elif [ "${engine}" == "source" ]; then
fn_info_message_source fn_info_message_source
elif [ "${engine}" == "spark" ]; then elif [ "${engine}" == "spark" ]; then

24
lgsm/functions/install_config.sh

@ -210,6 +210,14 @@ elif [ "${shortname}" == "armar" ]; then
fn_default_config_remote fn_default_config_remote
fn_set_config_vars fn_set_config_vars
fn_list_config_locations fn_list_config_locations
elif [ "${shortname}" == "ats" ]; then
gamedirname="AmericanTruckSimulator"
fn_check_cfgdir
array_configs+=(server_config.sii)
fn_fetch_default_config
fn_default_config_remote
fn_set_config_vars
fn_list_config_locations
elif [ "${shortname}" == "bo" ]; then elif [ "${shortname}" == "bo" ]; then
gamedirname="BallisticOverkill" gamedirname="BallisticOverkill"
array_configs+=(config.txt) array_configs+=(config.txt)
@ -451,6 +459,14 @@ elif [ "${shortname}" == "etl" ]; then
fn_default_config_remote fn_default_config_remote
fn_set_config_vars fn_set_config_vars
fn_list_config_locations fn_list_config_locations
elif [ "${shortname}" == "ets2" ]; then
gamedirname="EuroTruckSimulator2"
fn_check_cfgdir
array_configs+=(server_config.sii)
fn_fetch_default_config
fn_default_config_remote
fn_set_config_vars
fn_list_config_locations
elif [ "${shortname}" == "fctr" ]; then elif [ "${shortname}" == "fctr" ]; then
gamedirname="Factorio" gamedirname="Factorio"
array_configs+=(server-settings.json) array_configs+=(server-settings.json)
@ -641,6 +657,14 @@ elif [ "${shortname}" == "pz" ]; then
fn_default_config_remote fn_default_config_remote
fn_set_config_vars fn_set_config_vars
fn_list_config_locations fn_list_config_locations
elif [ "${shortname}" == "nec" ]; then
gamedirname="Necesse"
fn_check_cfgdir
array_configs+=(server.cfg)
fn_fetch_default_config
fn_default_config_remote
fn_set_config_vars
fn_list_config_locations
elif [ "${shortname}" == "pc" ]; then elif [ "${shortname}" == "pc" ]; then
gamedirname="ProjectCars" gamedirname="ProjectCars"
array_configs+=(server.cfg) array_configs+=(server.cfg)

2
lgsm/functions/install_server_files.sh

@ -222,7 +222,7 @@ elif [ "${shortname}" == "mcb" ]; then
elif [ "${shortname}" == "pmc" ]; then elif [ "${shortname}" == "pmc" ]; then
install_eula.sh install_eula.sh
update_papermc.sh update_papermc.sh
elif [ "${shortname}" == "wmc" ]||[ "${shortname}" == "vpmc" ]; then elif [ "${shortname}" == "wmc" ] || [ "${shortname}" == "vpmc" ]; then
update_papermc.sh update_papermc.sh
elif [ "${shortname}" == "mumble" ]; then elif [ "${shortname}" == "mumble" ]; then
update_mumble.sh update_mumble.sh

7
lgsm/functions/mods_list.sh

@ -95,6 +95,8 @@ oxidehurtworldlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/
oxidesdtdlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/OxideMod/Oxide.SevenDaysToDie/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("linux")) | .browser_download_url') oxidesdtdlatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/OxideMod/Oxide.SevenDaysToDie/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("linux")) | .browser_download_url')
# Valheim Plus # Valheim Plus
valeimpluslatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/valheimPlus/ValheimPlus/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("UnixServer.tar.gz")) | .browser_download_url') valeimpluslatestlink=$(curl --connect-timeout 10 -sL https://api.github.com/repos/valheimPlus/ValheimPlus/releases/latest | jq -r '.assets[]|select(.browser_download_url | contains("UnixServer.tar.gz")) | .browser_download_url')
# Valheim BepInEx
bepinexvhlatestlink=$(curl --connect-timeout 10 -sL "https://valheim.thunderstore.io/api/experimental/package/denikson/BepInExPack_Valheim/" -H "accept: application/json" | jq -r '.latest.download_url')
# Define mods information (required) # Define mods information (required)
@ -194,5 +196,8 @@ mod_info_sdtdoxide=(MOD "sdtdoxide" "Oxide for 7 Days To Die" "${oxidesdtdlatest
# ValheimPlus # ValheimPlus
mod_info_valheimplus=(MOD "valheimplus" "Valheim PLUS" "${valeimpluslatestlink}" "ValheimPlus.tar.gz" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://github.com/valheimPlus/ValheimPlus" "Mod to improve Valheim gameplay") mod_info_valheimplus=(MOD "valheimplus" "Valheim PLUS" "${valeimpluslatestlink}" "ValheimPlus.tar.gz" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://github.com/valheimPlus/ValheimPlus" "Mod to improve Valheim gameplay")
# BepInEx Valheim
mod_info_bepinexvh=(MOD "bepinexvh" "BepInEx Valheim" "${bepinexvhlatestlink}" "denikson-BepInExPack_Valheim.zip" "0" "LowercaseOff" "${systemdir}" "OVERWRITE" "ENGINES" "Valheim;" "NOTGAMES" "https://valheim.thunderstore.io/package/denikson/BepInExPack_Valheim/" "Unity / XNA game patcher and plugin framework")
# REQUIRED: Set all mods info into the global array # REQUIRED: Set all mods info into the global array
mods_global_array=("${mod_info_metamod[@]}" "${mod_info_base_amxx[@]}" "${mod_info_cs_amxx[@]}" "${mod_info_dod_amxx[@]}" "${mod_info_tfc_amxx[@]}" "${mod_info_ns_amxx[@]}" "${mod_info_ts_amxx[@]}" "${mod_info_metamodsource[@]}" "${mod_info_sourcemod[@]}" "${mod_info_steamworks[@]}" "${mod_info_gokz[@]}" "${mod_info_ttt[@]}" "${mod_info_get5[@]}" "${mod_info_prac[@]}" "${mod_info_pug[@]}" "${mod_info_dhook[@]}" "${mod_info_movement[@]}" "${mod_info_cleaner[@]}" "${mod_info_ulib[@]}" "${mod_info_ulx[@]}" "${mod_info_utime[@]}" "${mod_info_uclip[@]}" "${mod_info_acf[@]}" "${mod_info_acf_missiles[@]}" "${mod_info_acf_sweps[@]}" "${mod_info_advdupe2[@]}" "${mod_info_pac3[@]}" "${mod_info_wiremod[@]}" "${mod_info_wiremodextras[@]}" "${mod_info_darkrp[@]}" "${mod_info_darkrpmodification[@]}" "${mod_info_rustoxide[@]}" "${mod_info_hwoxide[@]}" "${mod_info_sdtdoxide[@]}" "${mod_info_advduplicator[@]}" "${mod_info_trackassemblytool[@]}" "${mod_info_physpropertiesadv[@]}" "${mod_info_controlsystemse2[@]}" "${mod_info_e2pistontiming[@]}" "${mod_info_propcannontool[@]}" "${mod_info_gearassemblytool[@]}" "${mod_info_spinnertool[@]}" "${mod_info_surfacefrictiontool[@]}" "${mod_info_magneticdipole[@]}" "${mod_info_environmentorganizer[@]}" "${mod_info_precision_alignment[@]}" "${mod_info_improved_stacker[@]}" "${mod_info_improved_weight[@]}" "${mod_info_improved_antinoclip[@]}" "${mod_info_laserstool[@]}" "${mod_info_valheimplus[@]}") mods_global_array=("${mod_info_metamod[@]}" "${mod_info_base_amxx[@]}" "${mod_info_cs_amxx[@]}" "${mod_info_dod_amxx[@]}" "${mod_info_tfc_amxx[@]}" "${mod_info_ns_amxx[@]}" "${mod_info_ts_amxx[@]}" "${mod_info_metamodsource[@]}" "${mod_info_sourcemod[@]}" "${mod_info_steamworks[@]}" "${mod_info_gokz[@]}" "${mod_info_ttt[@]}" "${mod_info_get5[@]}" "${mod_info_prac[@]}" "${mod_info_pug[@]}" "${mod_info_dhook[@]}" "${mod_info_movement[@]}" "${mod_info_cleaner[@]}" "${mod_info_ulib[@]}" "${mod_info_ulx[@]}" "${mod_info_utime[@]}" "${mod_info_uclip[@]}" "${mod_info_acf[@]}" "${mod_info_acf_missiles[@]}" "${mod_info_acf_sweps[@]}" "${mod_info_advdupe2[@]}" "${mod_info_pac3[@]}" "${mod_info_wiremod[@]}" "${mod_info_wiremodextras[@]}" "${mod_info_darkrp[@]}" "${mod_info_darkrpmodification[@]}" "${mod_info_rustoxide[@]}" "${mod_info_hwoxide[@]}" "${mod_info_sdtdoxide[@]}" "${mod_info_advduplicator[@]}" "${mod_info_trackassemblytool[@]}" "${mod_info_physpropertiesadv[@]}" "${mod_info_controlsystemse2[@]}" "${mod_info_e2pistontiming[@]}" "${mod_info_propcannontool[@]}" "${mod_info_gearassemblytool[@]}" "${mod_info_spinnertool[@]}" "${mod_info_surfacefrictiontool[@]}" "${mod_info_magneticdipole[@]}" "${mod_info_environmentorganizer[@]}" "${mod_info_precision_alignment[@]}" "${mod_info_improved_stacker[@]}" "${mod_info_improved_weight[@]}" "${mod_info_improved_antinoclip[@]}" "${mod_info_laserstool[@]}" "${mod_info_valheimplus[@]}" "${mod_info_bepinexvh[@]}")

6
lgsm/functions/update_papermc.sh

@ -5,9 +5,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Handles updating of PaperMC and Waterfall servers. # Description: Handles updating of PaperMC and Waterfall servers.
local commandname="UPDATE" commandname="UPDATE"
local commandaction="Update" commandaction="Update"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_update_papermc_dl() { fn_update_papermc_dl() {
# get build info # get build info

15
linuxgsm.sh

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# Project: Linux Game Server Managers - LinuxGSM # Project: Linux Game Server Managers - LinuxGSM
# Author: Daniel Gibbs # Author: Daniel Gibbs
# License: MIT License, Copyright (c) 2020 Daniel Gibbs # License: MIT License, see LICENSE.md
# Purpose: Linux Game Server Management Script # Purpose: Linux Game Server Management Script
# Contributors: https://linuxgsm.com/contrib # Contributors: https://linuxgsm.com/contrib
# Documentation: https://docs.linuxgsm.com # Documentation: https://docs.linuxgsm.com
@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then
set -x set -x
fi fi
version="v22.2.0" version="v23.1.0"
shortname="core" shortname="core"
gameservername="core" gameservername="core"
commandname="CORE" commandname="CORE"
@ -167,8 +167,8 @@ fn_bootstrap_fetch_file() {
fn_bootstrap_fetch_file_github() { fn_bootstrap_fetch_file_github() {
github_file_url_dir="${1}" github_file_url_dir="${1}"
github_file_url_name="${2}" github_file_url_name="${2}"
# If master branch will currently running LinuxGSM version to prevent "version mixing". This is ignored if a fork. # By default modules will be downloaded from the version release to prevent potential version mixing. Only update-lgsm will allow an update.
if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManager" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then if [ "${githubbranch}" == "master" ] && [ "${githubuser}" == "GameServerManagers" ] && [ "${commandname}" != "UPDATE-LGSM" ]; then
remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}" remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}"
remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}" remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}"
else else
@ -321,7 +321,7 @@ fn_install_file() {
} }
# Prevent LinuxGSM from running as root. Except if doing a dependency install. # Prevent LinuxGSM from running as root. Except if doing a dependency install.
if [ "$(whoami)" == "root" ]; then if [ "$(whoami)" == "root" ] && [ ! -f /.dockerenv ]; then
if [ "${userinput}" == "install" ] || [ "${userinput}" == "auto-install" ] || [ "${userinput}" == "i" ] || [ "${userinput}" == "ai" ]; then if [ "${userinput}" == "install" ] || [ "${userinput}" == "auto-install" ] || [ "${userinput}" == "i" ] || [ "${userinput}" == "ai" ]; then
if [ "${shortname}" == "core" ]; then if [ "${shortname}" == "core" ]; then
echo -e "[ FAIL ] Do NOT run this script as root!" echo -e "[ FAIL ] Do NOT run this script as root!"
@ -512,9 +512,4 @@ else
# Enables ANSI colours from core_messages.sh. Can be disabled with ansi=off. # Enables ANSI colours from core_messages.sh. Can be disabled with ansi=off.
fn_ansi_loader fn_ansi_loader
# Prevents running of core_exit.sh for Travis-CI.
if [ "${travistest}" != "1" ]; then
getopt=$1
core_getopt.sh
fi
fi fi

222
package-lock.json

@ -1,6 +1,6 @@
{ {
"name": "linuxgsm", "name": "linuxgsm",
"lockfileVersion": 2, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
@ -12,9 +12,9 @@
} }
}, },
"node_modules/@pkgr/utils": { "node_modules/@pkgr/utils": {
"version": "2.3.0", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.0.tgz", "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz",
"integrity": "sha512-7dIJ9CRVzBnqyEl7diUHPUFJf/oty2SeoVzcMocc5PeOUDK9KGzvgIBjGRRzzlRDaOjh3ADwH0WeibQvi3ls2Q==", "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"cross-spawn": "^7.0.3", "cross-spawn": "^7.0.3",
@ -127,9 +127,9 @@
"dev": true "dev": true
}, },
"node_modules/open": { "node_modules/open": {
"version": "8.4.0", "version": "8.4.1",
"resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", "resolved": "https://registry.npmjs.org/open/-/open-8.4.1.tgz",
"integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "integrity": "sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"define-lazy-prop": "^2.0.0", "define-lazy-prop": "^2.0.0",
@ -159,9 +159,9 @@
"dev": true "dev": true
}, },
"node_modules/prettier": { "node_modules/prettier": {
"version": "2.7.1", "version": "2.8.4",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz",
"integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==",
"dev": true, "dev": true,
"bin": { "bin": {
"prettier": "bin-prettier.js" "prettier": "bin-prettier.js"
@ -230,13 +230,13 @@
} }
}, },
"node_modules/synckit": { "node_modules/synckit": {
"version": "0.8.3", "version": "0.8.5",
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.3.tgz", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz",
"integrity": "sha512-1goXnDYNJlKwCM37f5MTzRwo+8SqutgVtg2d37D6YnHHT4E3IhQMRfKiGdfTZU7LBlI6T8inCQUxnMBFHrbqWw==", "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@pkgr/utils": "^2.3.0", "@pkgr/utils": "^2.3.1",
"tslib": "^2.4.0" "tslib": "^2.5.0"
}, },
"engines": { "engines": {
"node": "^14.18.0 || >=16.0.0" "node": "^14.18.0 || >=16.0.0"
@ -256,9 +256,9 @@
} }
}, },
"node_modules/tslib": { "node_modules/tslib": {
"version": "2.4.0", "version": "2.5.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
"integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==",
"dev": true "dev": true
}, },
"node_modules/which": { "node_modules/which": {
@ -276,191 +276,5 @@
"node": ">= 8" "node": ">= 8"
} }
} }
},
"dependencies": {
"@pkgr/utils": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.0.tgz",
"integrity": "sha512-7dIJ9CRVzBnqyEl7diUHPUFJf/oty2SeoVzcMocc5PeOUDK9KGzvgIBjGRRzzlRDaOjh3ADwH0WeibQvi3ls2Q==",
"dev": true,
"requires": {
"cross-spawn": "^7.0.3",
"is-glob": "^4.0.3",
"open": "^8.4.0",
"picocolors": "^1.0.0",
"tiny-glob": "^0.2.9",
"tslib": "^2.4.0"
}
},
"cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
"requires": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
"which": "^2.0.1"
}
},
"define-lazy-prop": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
"integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
"dev": true
},
"globalyzer": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
"integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==",
"dev": true
},
"globrex": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
"dev": true
},
"is-docker": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
"integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
"dev": true
},
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true
},
"is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"requires": {
"is-extglob": "^2.1.1"
}
},
"is-wsl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
"integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
"dev": true,
"requires": {
"is-docker": "^2.0.0"
}
},
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
"mvdan-sh": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/mvdan-sh/-/mvdan-sh-0.10.1.tgz",
"integrity": "sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg==",
"dev": true
},
"open": {
"version": "8.4.0",
"resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
"integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
"dev": true,
"requires": {
"define-lazy-prop": "^2.0.0",
"is-docker": "^2.1.1",
"is-wsl": "^2.2.0"
}
},
"path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true
},
"picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
"dev": true
},
"prettier": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
"integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
"dev": true
},
"prettier-plugin-sh": {
"version": "0.12.8",
"resolved": "https://registry.npmjs.org/prettier-plugin-sh/-/prettier-plugin-sh-0.12.8.tgz",
"integrity": "sha512-VOq8h2Gn5UzrCIKm4p/nAScXJbN09HdyFDknAcxt6Qu/tv/juu9bahxSrcnM9XWYA+Spz1F1ANJ4LhfwB7+Q1Q==",
"dev": true,
"requires": {
"mvdan-sh": "^0.10.1",
"sh-syntax": "^0.3.6",
"synckit": "^0.8.1"
}
},
"sh-syntax": {
"version": "0.3.7",
"resolved": "https://registry.npmjs.org/sh-syntax/-/sh-syntax-0.3.7.tgz",
"integrity": "sha512-xIB/uRniZ9urxAuXp1Ouh/BKSI1VK8RSqfwGj7cV57HvGrFo3vHdJfv8Tdp/cVcxJgXQTkmHr5mG5rqJW8r4wQ==",
"dev": true,
"requires": {
"tslib": "^2.4.0"
}
},
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
"requires": {
"shebang-regex": "^3.0.0"
}
},
"shebang-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
},
"synckit": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.3.tgz",
"integrity": "sha512-1goXnDYNJlKwCM37f5MTzRwo+8SqutgVtg2d37D6YnHHT4E3IhQMRfKiGdfTZU7LBlI6T8inCQUxnMBFHrbqWw==",
"dev": true,
"requires": {
"@pkgr/utils": "^2.3.0",
"tslib": "^2.4.0"
}
},
"tiny-glob": {
"version": "0.2.9",
"resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
"integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
"dev": true,
"requires": {
"globalyzer": "0.1.0",
"globrex": "^0.1.2"
}
},
"tslib": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
"integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==",
"dev": true
},
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
"requires": {
"isexe": "^2.0.0"
}
}
} }
} }

2
tests/tests_fctrserver.sh

@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then
set -x set -x
fi fi
version="v22.2.0" version="v23.1.0"
shortname="fctr" shortname="fctr"
gameservername="fctrserver" gameservername="fctrserver"
commandname="CORE" commandname="CORE"

2
tests/tests_jc2server.sh

@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then
set -x set -x
fi fi
version="v22.2.0" version="v23.1.0"
shortname="jc2" shortname="jc2"
gameservername="jc2server" gameservername="jc2server"
commandname="CORE" commandname="CORE"

14
tests/tests_kcov.sh

@ -1,14 +0,0 @@
#!/bin/bash
echo -e "Installing kcov"
curl -L "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/shunit2/shunit2-2.1.6.tgz" | tar zx
wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz
tar xzf master.tar.gz
cd kcov-master || exit
mkdir build
cd build || exit
cmake ..
make
sudo make install
cd ../..
rm -rf kcov-master
mkdir -p coverage

2
tests/tests_mcserver.sh

@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then
set -x set -x
fi fi
version="v22.2.0" version="v23.1.0"
shortname="mc" shortname="mc"
gameservername="mcserver" gameservername="mcserver"
commandname="CORE" commandname="CORE"

32
tests/tests_shellcheck.sh

@ -1,32 +0,0 @@
#!/bin/bash
# Project: Game Server Managers - LinuxGSM
# Author: Daniel Gibbs
# License: MIT License, Copyright (c) 2020 Daniel Gibbs
# Purpose: Travis CI Tests: Shellcheck | Linux Game Server Management Script
# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors
# Documentation: https://docs.linuxgsm.com/
# Website: https://linuxgsm.com
echo -e "================================="
echo -e "Travis CI Tests"
echo -e "Linux Game Server Manager"
echo -e "by Daniel Gibbs"
echo -e "Contributors: http://goo.gl/qLmitD"
echo -e "https://linuxgsm.com"
echo -e "================================="
echo -e ""
echo -e "================================="
echo -e "Bash Analysis Tests"
echo -e "Using: Shellcheck"
echo -e "Testing Branch: $TRAVIS_BRANCH"
echo -e "================================="
echo -e ""
scissues=$(find . -type f \( -name "*.sh" -o -name "*.cfg" \) -not -path "./shunit2-2.1.6/*" -exec shellcheck --shell=bash --exclude=SC2154,SC2034 {} \; | grep -F "^--" | wc -l)
echo -e "Found issues: ${scissues}"
echo -e "================================="
find . -type f \( -name "*.sh" -o -name "*.cfg" \) -not -path "./shunit2-2.1.6/*" -exec shellcheck --shell=bash --exclude=SC2154,SC2034 {} \;
echo -e ""
echo -e "================================="
echo -e "Bash Analysis Tests - Complete!"
echo -e "Using: Shellcheck"
echo -e "================================="

2
tests/tests_ts3server.sh

@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then
set -x set -x
fi fi
version="v22.2.0" version="v23.1.0"
shortname="ts3" shortname="ts3"
gameservername="ts3server" gameservername="ts3server"
commandname="CORE" commandname="CORE"

Loading…
Cancel
Save