* refactor: shorten module update function names
The commit renames the update functions for several game modules to shorter names. The new names are more concise and easier to remember, which should improve code readability and maintainability.
* feat: Add Update Check workflow
This commit adds a new GitHub Actions workflow that checks if LinuxGSM is picking up game server config and parameter variables. The workflow runs on push and manual triggers, with concurrency settings to cancel in-progress jobs. It downloads linuxgsm.sh, installs dependencies, grabs the server, enables developer mode, installs the server, and updates it.
* feat: Add concurrency group names to workflows
The `details-check.yml` and `update-check.yml` workflows now have a concurrency group name that includes the branch or tag name. This will allow for better management of concurrent workflow runs.
* refactor: Update script names for Minecraft, Factorio, Jedi Knight 2 and Vintage Story
This commit updates the script names for Minecraft, Factorio, Jedi Knight 2 and Vintage Story. The update includes changes to command_check_update.sh, command_update.sh, core_functions.sh and install_server_files.sh. The new script names are update_mc.sh (formerly update_minecraft.sh), update_fctr.sh (formerly update_factorio.sh), update_jk2.sh (formerly update_jediknight2.sh) and update_vints.sh (formerly update_vintagestory.sh).
* feat: Add support for 32-bit architecture
This commit adds support for 32-bit architecture by running the command "sudo dpkg --add-architecture i386" instead of installing libxml2-utils and jq.
* feat: Add i386 architecture and install libstdc++6
This commit adds the installation of libstdc++6:i386 package to support 32-bit applications. It also includes adding the i386 architecture to dpkg.
* feat: Update dependencies for LinuxGSM
Changed the dependency from libstdc++6:i386 to libgcc-s1:i386 in the update-check.yml file. This change was made to ensure compatibility with newer versions of LinuxGSM.
* feat: Add update and force-update server functionality
This commit adds the ability to check for updates and force updates on a server. The update-check.yml file has been modified to include new jobs that run the LGSM_GITHUBBRANCH command with specific arguments.
* feat: Add dependencies for server installation
This commit adds the necessary dependencies to install a game server. The `update-check.yml` file has been updated to include the installation of `bsdmainutils`, `libsdl2-2.0-0:i386`, `libtinfo5:i386`, and `steamcmd`.
* steamcmd only
* steamcmd
* test
* test
* refactor: improve random password generation in install_config.sh
The code change refactors the random password generation in the `install_config.sh` file. Instead of using `tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 | xargs`, it now uses `tr -dc 'A-Za-z0-9_' < /dev/urandom 2>/dev/null | head -c 8 | xargs`. This change improves the reliability and security of generating random passwords.
* refactor: remove redundant code and set default branch
The commit refactors the code by removing redundant code that sets the branch to "public" if no custom branch is specified. This change simplifies the logic and improves readability.
* test
* fix: fix steamcmd build version retrieval
The code changes in this commit fix an issue with retrieving the build version from SteamCMD. The previous implementation was not correctly capturing the buildid. This has been resolved by adding additional echo statements for debugging purposes.
* test
fix: remove unnecessary app_info_print command
The commit removes the unnecessary `app_info_print` command from the code. This command was not needed to check the buildid.
* fix: GitHub Actions test failure
The code change fixes a failing GitHub Actions test by running SteamCMD twice. The first run is to update the app info, and the second run retrieves the build ID for the specified branch.
* Add steam user and password secret for jk2
* refactor: update steamuser and steampass paths in jk2server config
The code changes refactor the paths for `steamuser` and `steampass` in the configuration file of the `jk2server`. The previous paths were incorrect, so they have been updated to point to the correct location.
* refactor: update steamuser and steampass insertion in LGSM configuration
The code changes refactor the way steamuser and steampass are inserted into the LGSM configuration file. Instead of hardcoding the values, they are now dynamically inserted using environment variables. This improves flexibility and security when setting up the server.
* refactor: simplify steamuser and steampass insertion in update-check.yml
The code changes remove unnecessary sed commands and replace them with a single echo command to insert the values of STEAMCMD_USER and STEAMCMD_PASS into the common.cfg file. This simplifies the code and improves readability.
* feat: update steamuser and steampass in common.cfg
The commit updates the code to properly insert the `steamuser` and `steampass` values in the `common.cfg` file. The previous code was not correctly formatting the values, which caused issues with server installation. This change ensures that the values are properly formatted using double quotes for `steamuser` and single quotes for `steampass`.
* refactor: refactor tmux session handling
- Updated the code to use the variable `socketname` instead of `sessionname` when interacting with tmux sessions.
- Added logic to create a unique socket name using a UID if it doesn't already exist.
- Refactored multiple functions (`fn_start_jk2`, `fn_start_tmux`, `fn_stop_graceful_ctrlc`, `fn_stop_graceful_cmd`, `fn_stop_graceful_goldsrc`, `fn_stop_graceful_avorion`, and `fn_stop_tmux`) to use the new socket name for tmux commands.
This commit improves the readability and maintainability of the code by separating the concept of session names from socket names, allowing for more flexibility in managing tmux sessions.
* feat: stop server when generating uid
this should prevent issues when migrating to using uid
* refactor: lockfile handling
- Removed unnecessary function fn_start_jk2()
- Removed unused variable startparameters in fn_start_tmux()
- Added comments to clarify code functionality
- Renamed lockfile from "${lockdir}/${selfname}.lock" to "${lockdir}/${selfname}-start.lock"
- Updated log messages and log file names to include timestamp
* refactor: improve backup and update monitoring
The code in `command_monitor.sh` has been refactored to enhance the monitoring of backups and updates. The conditions for checking if a backup or update is running have been modified to include additional checks using `pgrep`. This change improves the accuracy of the monitoring process.
* refactor: improve logging in core_exit.sh
- Changed the grep command to include the -a flag to handle non-text files
- Updated sed command to remove "modulefile=" from the output and redirect it to dev-debug-module-order.log
* refactor: improve code readability and remove redundant code
- Refactored the `fn_monitor_check_starting` function to check for stale lockfiles and print appropriate messages.
- Refactored the `fn_monitor_check_stopping` function to check for stale lockfiles and print appropriate messages.
- Removed redundant code that deletes the update lockfile in `command_update.sh` and `command_validate.sh`.
- Improved code readability by removing unnecessary comments.
* feat: add exitbypass flag to prevent lingering tmux sessions
The code changes in `command_start.sh` include adding an `exitbypass` flag to prevent lingering tmux sessions. This flag is used to stop the running server before creating a unique uid for the tmux socket name.
* refactor: Refactor lockfile names for consistency and clarity
- Renamed "${lockdir}/${selfname}-laststart.lock" to "${lockdir}/${selfname}-last-started.lock"
- Renamed "${lockdir}/backup.lock" to "${lockdir}/stopping.lock"
- Renamed "${lockdir}/${selfname}-start.lock" to "${lockdir}/${selfname}-started.lock"
- Renamed "${lockdir}/${selfname}-starting.lock" to "${lockdir}/${selfname}-stopping.lock"
This commit refactors the lockfile names in the codebase for better consistency and clarity. The changes make it easier to understand the purpose of each lockfile and improve readability.
* refactor: refactor check_last_update.sh, command_backup.sh, command_debug.sh, command_mods_remove.sh, command_monitor.sh, command_start.sh, command_stop.sh, command_ts3_server_pass.sh and core_steamcmd.sh
- Refactored code to improve readability and maintainability.
- Renamed variables for clarity.
- Removed unnecessary comments and unused code.
- Fixed typos and formatting issues.
* refactor: update lock file path in core_steamcmd.sh
The lock file path in the core_steamcmd.sh script has been updated to use the correct variable. This change ensures that the lock file is created in the correct directory.
* refactor: improve file deletion in command_stop.sh
The code change refactors the file deletion process in the command_stop.sh script. Instead of using an empty redirect, it now directly removes the specified lock file. This improves clarity and ensures proper cleanup when stopping a command.
* refactor: update lockfile name in command_monitor.sh
The lockfile name has been changed from "${selfname}-started.lock" to "${selfname}-monitoring.lock" in the fn_monitor_check_lockfile function. The code has also been refactored to remove unnecessary checks and fixes for the lockfile.
* refactor: simplify start and stop command checks
The code in `command_start.sh` and `command_stop.sh` has been refactored to simplify the checks for the start and stop commands. Instead of checking if `exitbypass` is empty, it now directly checks if `firstcommandname` matches specific values ("START", "RESTART" for start command, and "STOP" for stop command). This change improves readability and reduces unnecessary conditions.
* refactor: simplify lockfile names and remove duplicate code
- Renamed lockfiles from "${selfname}-started.lock" to "started.lock", "${selfname}-starting.lock" to "starting.lock", "${selfname}-stopping.lock" to "stopping.lock", and "${selfname}-update.lock" to "update.lock".
- Removed duplicate code for removing stale lockfiles in fn_monitor_check_starting(), fn_monitor_check_stopping(), fn_monitor_check_backup(), fn_monitor_check_update(), update_factorio.sh, update_jediknight2.sh, update_minecraft.sh, update_minecraft_bedrock.sh, update_mta.sh, update_papermc.sh, update_ts3.sh, update_ut99.sh, and update_vintagestory.sh.
- Updated references to the renamed lockfiles in the respective functions.
* fix: corrected commandname
* fix: commandname skeleton
* refactor: improve file path handling in check_last_update.sh
The code changes refactor the file path handling in check_last_update.sh to use the correct lock directory. This ensures that the last update time is correctly retrieved and compared with the last start time.
* feat: add update lock file
Add functionality to create an update lock file when validating and updating SteamCMD. This prevents potential conflicts with customised files.
- Create a lock file with the current timestamp in the "command_validate.sh" script
- Create a lock file with the current timestamp in the "update_steamcmd.sh" script
* refactor: rename libgcc_s.so.1 backup file
The code has been refactored to improve clarity and readability. The variable `libgccc_so` has been renamed to `libgccc_so.bak` for better understanding of its purpose. This change ensures that the backup file for libgcc_s.so.1 is correctly named and easily identifiable.
* refactor: improve logging and error handling in command_monitor.sh
- Added error handling for PIDs with identical tmux sessions running, killing them and restarting the server.
- Added error handling for PIDs with the same tmux session and socket names running, killing them and restarting the server.
* feature(newserver): add PaperMC Server and Waterfall
PaperMC is a Minecraft server fork of spigot (which is a fork of Bukkit) with some improvement and also an API to check when update is needed
It support version selection via the API
Co-authored-by: Daniel Gibbs <[email protected]>
now named
commandname and command action
command name is used in logs
command action is used on-screen.
Also alterations to function_selfname now called just selfname