-
-
Notifications
You must be signed in to change notification settings - Fork 821
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: tmux uniqueness #4296
Merged
Merged
feat: tmux uniqueness #4296
+328
−152
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- 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.
this should prevent issues when migrating to using uid
- 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
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.
- 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
- 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.
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.
- 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.
…ebug.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.
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.
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.
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.
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.
- 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.
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.
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
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.
- 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.
HotoCocoaco
added a commit
to HotoCocoaco/LinuxGSM
that referenced
this pull request
Oct 10, 2023
commit 11d8d1c Merge: 32ecb5c 18facad Author: Daniel Gibbs <[email protected]> Date: Tue Sep 26 10:36:39 2023 +0100 Merge branch 'release/v23.5.3' commit 18facad Merge: a77cbf7 32ecb5c Author: Daniel Gibbs <[email protected]> Date: Tue Sep 26 10:35:59 2023 +0100 Merge branch 'master' into release/v23.5.3 commit a77cbf7 Merge: 79dc5f7 107d48e Author: Daniel Gibbs <[email protected]> Date: Tue Sep 26 10:35:22 2023 +0100 Merge pull request GameServerManagers#4319 from GameServerManagers/feature/update-restart-bug Release v23.5.3 commit 107d48e Author: Daniel Gibbs <[email protected]> Date: Tue Sep 26 09:56:01 2023 +0100 Release v23.5.3 commit 2297d36 Author: Daniel Gibbs <[email protected]> Date: Tue Sep 26 00:35:22 2023 +0100 feat: moved last-updated.lock file commit 13c6243 Author: Daniel Gibbs <[email protected]> Date: Tue Sep 26 00:30:54 2023 +0100 refactor: improve log file display in info_messages.sh The code change modifies the tail command in the fn_info_logs function to exclude lines containing "==>". This improves the display of log files by filtering out unnecessary information. commit 4a02dfd Author: Daniel Gibbs <[email protected]> Date: Mon Sep 25 20:30:40 2023 +0100 fix: set $USER if missing $USER is not available in sh which is used by cron. commit 753eb2a Author: Daniel Gibbs <[email protected]> Date: Mon Sep 25 19:03:36 2023 +0100 feat: moved last-updated.lock file moved last-updated.lock to ensure it doesn't force a reboot on monitor commit 79dc5f7 Author: Daniel Gibbs <[email protected]> Date: Tue Sep 19 16:57:39 2023 +0100 fix(steamcmd): hide steamcmd output commit 5c33eb3 Author: Daniel Gibbs <[email protected]> Date: Tue Sep 19 16:57:09 2023 +0100 feat: add curl command to query Steam Master Server Add a curl command to query the Steam Master Server for server addresses. This allows retrieving server information using the GetServersAtAddress API endpoint provided by Steam. commit 4f2acdd Author: Daniel Gibbs <[email protected]> Date: Tue Sep 19 16:55:16 2023 +0100 refactor: minor _default.cfg changes - Updated the IP and port settings for ckserver, colserver, fctrserver, hwserver, ohdserver, rustserver, and untserver. - Added a link to the documentation for predefined parameters in ckserver and hwserver. - Modified the startparameters value in colserver to include additional parameters. - Changed the branch value in fctrserver to "stable". - Updated the servername value in hwserver and ohdserver to "LinuxGSM". - Modified the defaultmap value in hwserver to "nullius". - Removed optional comments from hwerver regarding defaultmap and creativemode values. - Updated gamemode values in rusterver and untserer with their respective options. commit 32ecb5c Merge: b59e09c 1728fd9 Author: Daniel Gibbs <[email protected]> Date: Tue Sep 12 21:42:51 2023 +0100 Merge branch 'hotfix/v23.5.2' commit a0402ff Merge: 1892288 1728fd9 Author: Daniel Gibbs <[email protected]> Date: Tue Sep 12 21:42:50 2023 +0100 Merge branch 'hotfix/v23.5.2' into develop commit 1728fd9 Author: Daniel Gibbs <[email protected]> Date: Tue Sep 12 21:42:42 2023 +0100 Release v23.5.2 commit e4e1d72 Author: Daniel Gibbs <[email protected]> Date: Mon Sep 11 22:42:26 2023 +0100 feat(docker): update datadir variable assignment The code change updates the assignment of the `datadir` variable in the `linuxgsm.sh` script. The new assignment checks if the environment variable `LGSM_DATADIR` is set and uses its value, otherwise it falls back to using `${lgsmdir}/data`. commit 1892288 Author: Daniel Gibbs <[email protected]> Date: Mon Sep 11 21:42:04 2023 +0100 feat: add uuid-runtime to Debian and Ubuntu CSV files This commit adds the `uuid-runtime` package to the Debian and Ubuntu CSV files. This package is required for stats. commit b59e09c Merge: 928de3b db3c384 Author: Daniel Gibbs <[email protected]> Date: Sun Sep 10 21:59:25 2023 +0100 Merge branch 'hotfix/v23.5.1' commit a7330b8 Merge: d9bf89d db3c384 Author: Daniel Gibbs <[email protected]> Date: Sun Sep 10 21:59:25 2023 +0100 Merge branch 'hotfix/v23.5.1' into develop commit db3c384 Author: Daniel Gibbs <[email protected]> Date: Sun Sep 10 21:59:16 2023 +0100 Release v23.5.1 commit a05c6a5 Author: Daniel Gibbs <[email protected]> Date: Sun Sep 10 21:58:02 2023 +0100 fix(ps): move _default.cfg to new name commit 622e286 Author: Daniel Gibbs <[email protected]> Date: Sun Sep 10 21:57:32 2023 +0100 fix(tw): correct game info commit 928de3b Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun Sep 10 20:17:10 2023 +0100 build(deps): bump actions/checkout from 3 to 4 (GameServerManagers#4306) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit d9bf89d Merge: 272b500 178c216 Author: Daniel Gibbs <[email protected]> Date: Sun Sep 10 20:12:49 2023 +0100 Merge branch 'release/v23.5.0' into develop commit fc36dc9 Merge: c6f752b 178c216 Author: Daniel Gibbs <[email protected]> Date: Sun Sep 10 20:12:49 2023 +0100 Merge branch 'release/v23.5.0' commit 178c216 Author: Daniel Gibbs <[email protected]> Date: Sun Sep 10 20:11:29 2023 +0100 Release v23.5.0 commit 2ebcfb9 Merge: a4a85cf b8a275a Author: Daniel Gibbs <[email protected]> Date: Sun Sep 10 20:10:38 2023 +0100 Merge remote-tracking branch 'origin/release/v23.5.0' into release/v23.5.0 commit a4a85cf Author: Daniel Gibbs <[email protected]> Date: Sun Sep 10 20:10:30 2023 +0100 minor rewording commit b8a275a Merge: 272b500 c6f752b Author: Daniel Gibbs <[email protected]> Date: Sun Sep 10 19:49:37 2023 +0100 Merge branch 'master' into release/v23.5.0 commit 272b500 Author: Daniel Gibbs <[email protected]> Date: Fri Sep 8 23:52:03 2023 +0100 Update README.md commit 9326d48 Author: Daniel Gibbs <[email protected]> Date: Fri Sep 8 23:45:59 2023 +0100 fix(mta): change updater to use builds (GameServerManagers#4310) multitheftauto/mtasa-blue#3176 commit 6921851 Author: Daniel Gibbs <[email protected]> Date: Fri Sep 8 08:49:25 2023 +0100 feat(pvr): add fix_pvr.sh module commit 08057c8 Merge: 22e812f 8f71482 Author: Daniel Gibbs <[email protected]> Date: Thu Sep 7 23:39:49 2023 +0100 Merge remote-tracking branch 'origin/develop' into develop commit 22e812f Author: Daniel Gibbs <[email protected]> Date: Thu Sep 7 23:39:43 2023 +0100 fix(ts3): update now works in docker commit 8f71482 Author: Daniel Gibbs <[email protected]> Date: Thu Sep 7 23:12:53 2023 +0100 feat(ci): game server update checker (GameServerManagers#4298) * 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`. commit 16c4493 Author: Daniel Gibbs <[email protected]> Date: Thu Sep 7 22:43:59 2023 +0100 fix(monitor): migration code commit fe610f3 Author: Daniel Gibbs <[email protected]> Date: Thu Sep 7 21:25:20 2023 +0100 feat(inss): enable master server checking commit ca184e3 Author: Daniel Gibbs <[email protected]> Date: Thu Sep 7 21:23:31 2023 +0100 fix(monitor): migration code commit 8cd16ac Author: Daniel Gibbs <[email protected]> Date: Wed Sep 6 22:01:09 2023 +0100 fix: make pgrep unique - Refactored the code to use `pgrep -fcx` instead of `pgrep -fc` for checking process counts. - Updated print statements to provide more informative messages. - Renamed some variables for clarity. - Added newlines after printing information. commit 20f5e8d Author: Daniel Gibbs <[email protected]> Date: Wed Sep 6 19:27:05 2023 +0100 feat(ps): Renamed pstbs to ps Post Scriptum changed is name removing "The Bloody Seventh" part. I have updated the naming of this game server. commit 3959fa4 Author: Daniel Gibbs <[email protected]> Date: Wed Sep 6 19:22:23 2023 +0100 fix(pstbs): correct gamename commit 89ec08c Author: Daniel Gibbs <[email protected]> Date: Wed Sep 6 16:40:34 2023 +0100 fix(pvr): add fix for libc commit 5593658 Author: Daniel Gibbs <[email protected]> Date: Wed Sep 6 15:41:39 2023 +0100 fix(pvr): update executable details PVR server has changed the name if its executable commit a3c5a84 Author: Daniel Gibbs <[email protected]> Date: Wed Sep 6 15:20:07 2023 +0100 fix(start): lock file created before check Even if check fails a lock file will be generated to allow monitor to run commit 82e5da4 Author: Daniel Gibbs <[email protected]> Date: Wed Sep 6 14:27:10 2023 +0100 fix(info_game): refactor key value pairs parsing split out space and equals delimited commit 65e3a93 Author: Daniel Gibbs <[email protected]> Date: Tue Sep 5 00:01:07 2023 +0100 fix(unt): config is auto generated commit 8a9f343 Author: Daniel Gibbs <[email protected]> Date: Mon Sep 4 23:11:56 2023 +0100 feat(inss): add optional gslt to start parameters commit ac78fc1 Author: Daniel Gibbs <[email protected]> Date: Mon Sep 4 22:10:41 2023 +0100 fix(pz): correct start parameters (GameServerManagers#4305) * refactor: remove unnecessary memory allocation in pzserver config The startparameters variable in the pzserver configuration file was modified to remove the unnecessary memory allocation parameter. This change simplifies the configuration and improves efficiency. * refactor: simplify startparameters in pzserver config The startparameters in the pzserver config file have been simplified to only include the server name. This change removes unnecessary parameters and improves readability. commit 5f0f12a Author: Daniel Gibbs <[email protected]> Date: Mon Sep 4 21:24:27 2023 +0100 feat(vint): migrate to dotnet from mono (GameServerManagers#4304) * adde dotnet repo * feat: update package dependencies for Ubuntu 16.04, 18.04, and 20.04 - Updated the package dependency for "vints" from "mono-complete" to "aspnetcore-runtime-7.0" in the Ubuntu 16.04, 18.04, and 20.04 CSV files. - Also updated the package dependency for "vpmc" from "openjdk-8-jre" to "openjdk-11-jre" in the Ubuntu 18.04 and 20.04 CSV files. This commit ensures that the correct package dependencies are specified for these Ubuntu versions, improving compatibility and functionality of the codebase. * refactor: update dependency check for ASP.NET Core runtime The code has been refactored to update the dependency check for the ASP.NET Core runtime. The condition that checks for the presence of "dotnet-runtime-7.0" has been changed to "aspnetcore-runtime-7.0". This ensures that the correct dependency is being checked and improves accuracy in determining if the required runtime is installed. * fix: fix conditional statement in check_deps.sh The commit fixes a bug in the conditional statement of the check_deps.sh script. Previously, it incorrectly checked if dotnetversion was empty instead of checking if it was not empty. This caused an incorrect value to be assigned to depstatus and dotnetinstalled variables. The bug has been fixed by correcting the conditional statement. * refactor: simplify install_config.sh This commit simplifies the `install_config.sh` file by removing unnecessary code for the "vints" configuration. The configuration is now generated on first run, and the list of config locations is still provided. * refactor: improve error handling and display in core_exit.sh and install_config.sh - In core_exit.sh, added a check to set exit code to 4 if it is not already set. - In install_config.sh, improved the display of missing config file by highlighting the file path. These changes aim to enhance the error handling and provide clearer information to users. * feat: add exitcode handling to command_install.sh The commit adds a check for the exitcode variable in command_install.sh. If it is empty, it sets it to 0. This change ensures proper handling of the exitcode in the script. * refactor: improve installation process The code changes in this commit refactor the installation process. The `command_install.sh` file has been modified to remove unnecessary code. Additionally, the `install_complete.sh` file has been updated to provide more informative messages based on the exit code. This improves the overall clarity and user experience during installation. Co-authored-by: AI Assistant <[email protected]> * refactor: remove redundant code in install_config.sh The commit removes a redundant function call in the install_config.sh file. The "fn_list_config_locations" function is no longer needed for the "vints" configuration. * a * refactor: improve logging in command_stop.sh - Changed `fn_script_log_error` to `fn_script_log_info` for consistency - Removed unnecessary empty line * refactor: dont try to stop a server that is already stopped * refactor: remove redundant code and improve socket name generation The commit refactors the code in `command_start.sh` and `linuxgsm.sh` to remove redundant code related to generating a unique tmux socket name. The code now creates a uid file if it doesn't exist, stops the running server, generates a uid using the current timestamp, and updates the socketname accordingly. This change improves the efficiency and reliability of socket name generation. * refactor: remove unnecessary command_stop.sh call The code change removes the unnecessary call to `command_stop.sh` in the `linuxgsm.sh` file. This improves efficiency and prevents lingering tmux sessions. * refactor: remove duplicate code for creating unique tmux socket name The code changes in `command_start.sh` and `linuxgsm.sh` refactor the creation of a unique tmux socket name. The duplicate code in `linuxgsm.sh` has been removed, resulting in cleaner and more efficient code. * refactor: improve socketname assignment The code change refactors the socketname assignment in the linuxgsm.sh script. Instead of directly assigning it to "${sessionname}-$(cat "${datadir}/${selfname}.uid")", it now checks if the file "${datadir}/${selfname}.uid" exists before assigning the value. This improves error handling and prevents potential issues when the file doesn't exist. commit 49be44d Author: Daniel Gibbs <[email protected]> Date: Sun Sep 3 21:13:21 2023 +0100 feat: add mono support for Ubuntu 22.04 and Debian 12 This commit adds support for Ubuntu 22.04 and Debian 12 in the check_deps.sh script. It includes the necessary commands to install dependencies for Mono repository on these versions of the operating systems. commit aaff7c9 Author: Daniel Gibbs <[email protected]> Date: Sat Sep 2 01:05:06 2023 +0100 fix: Steam log symlink points to correct location This commit adds the functionality to create a symbolic link for Steam logs if it is missing. The symlink is created in the specified log directory. commit a5dbb4a Author: Daniel Gibbs <[email protected]> Date: Fri Sep 1 23:38:51 2023 +0100 fix: add socketname to core_legacy.sh commit b481ff1 Author: Daniel Gibbs <[email protected]> Date: Fri Sep 1 23:12:35 2023 +0100 fix: resolve edge case where RHEL servers might have dpkg installed (GameServerManagers#4302) For reasons unknown you can install dpkg in RHEL so instead this now looks for apt, yum or dnf commit 7b37424 Author: Daniel Gibbs <[email protected]> Date: Fri Sep 1 22:08:26 2023 +0100 feat: change extip to public ip (GameServerManagers#4301) also change ark parms for epic to use publicip commit 6b9393f Author: Daniel Gibbs <[email protected]> Date: Wed Aug 30 22:58:02 2023 +0100 fix: improve sed command in fn_info_game_valve_keyvalues (GameServerManagers#4300) The sed command in the fn_info_game_valve_keyvalues function has been modified to improve its functionality. The change ensures that only the value between double quotes is captured, even if there are additional spaces before or after the value. This enhances the accuracy of extracting values from server configuration files. commit 2d60921 Author: Daniel Gibbs <[email protected]> Date: Mon Aug 28 22:21:18 2023 +0100 fix(steamcmd): resolve steamcmd goldsource download issues (GameServerManagers#4297) * add appmanifest files to data * refactor: improve appmanifest check and force update logic The code changes refactor the `fn_appmanifest_check` function in the `core_steamcmd.sh` file. The improvements include: - Checking if `BytesDownloaded` and `BytesToDownload` match, and forcing an update if they don't. - Checking if `BytesStaged` and `BytesToStage` match, and forcing an update if they don't. - For GoldSrc engine, checking if `SharedDepots` exists in the appmanifest file, and forcing an update if it doesn't. - Fetching missing appmanifest files from GitHub for specific game shortnames. These changes enhance the reliability of the appmanifest check process and ensure that updates are forced when necessary. * refactor: improve removal of appinfo.vdf file The code has been refactored to improve the removal of the appinfo.vdf file. The find command now redirects error output to /dev/null for a cleaner execution. * fn_check_steamcmd_appmanifest is now a full check * feat: add support for fetching appmanifest files This commit adds support for fetching appmanifest files from the GitHub repository. The code now fetches the appropriate appmanifest files based on the game's shortname and updates them in the serverfiles/steamapps directory. This change ensures that the correct appmanifest files are used, fixing an issue related to updating certain games. * more appmanifest files * feat: add appmanifest_10.acf for Counter-Strike Added the appmanifest_10.acf file for Counter-Strike to resolve an issue with missing SharedDepots. This commit fetches the necessary files from GitHub and forces an update to correct the issue. * fix: fix missing SharedDepots in appmanifest_90.acf The code changes fix a bug where the SharedDepots entry was missing from the appmanifest_90.acf file. The commit updates the error messages and logs to reflect the correct filename. Additionally, it forces an update to resolve the issue. commit 4ddd8ee Author: Daniel Gibbs <[email protected]> Date: Mon Aug 28 01:49:47 2023 +0100 feat: tmux uniqueness (GameServerManagers#4296) * 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. commit 290eb6b Author: maximalmax90 <[email protected]> Date: Mon Aug 28 05:03:44 2023 +0800 Update update_vintagestory.sh (GameServerManagers#4286) * build(deps): bump github/issue-labeler from 3.1 to 3.2 (GameServerManagers#4258) Bumps [github/issue-labeler](https://github.com/github/issue-labeler) from 3.1 to 3.2. - [Release notes](https://github.com/github/issue-labeler/releases) - [Commits](github/issue-labeler@v3.1...v3.2) --- updated-dependencies: - dependency-name: github/issue-labeler dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update update_vintagestory.sh * Update _default.cfg --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: Daniel Gibbs <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit d83e9d9 Author: Daniel Gibbs <[email protected]> Date: Sun Aug 27 21:50:10 2023 +0100 feat: Migrate stats to Google GA-4 (GameServerManagers#4295) * refactor: simplify Google Analytics event tracking This commit simplifies the code for sending Google Analytics events by using a single POST request instead of multiple cURL commands. The new approach sends all necessary parameters in a JSON payload, reducing redundancy and improving efficiency. Additionally, unnecessary event tracking for summary statistics has been removed. Co-authored-by: AI Assistant <[email protected]> * add plausable event api * refactor: remove unnecessary header in info_stats.sh The commit removes an unnecessary header in the info_stats.sh file. This change simplifies the code and improves readability. * feat: add country code of external IP address This commit adds functionality to retrieve the country code of the external IP address. If the country code is not already stored in a file, it uses curl to fetch it from https://ipapi.co/country and saves it in "${tmpdir}/countrycode.txt". If curl fails, an error message is displayed. * feat: add country code to Google Analytics tracking This commit adds the country code parameter to the Google Analytics tracking request in the `info_stats.sh` file. It also includes various server statistics such as CPU usage, memory usage, disk usage, distro name, game name, RAM usage, server CPU details, server disk details, server RAM details, and version information. * refactor: update country code parameter in info_stats.sh The commit updates the country code parameter in the info_stats.sh file. The previous parameter "country" has been changed to "countryId" for better clarity and consistency. * feat: add countryId and version to Google Analytics tracking This commit adds the "countryId" and "version" parameters to the Google Analytics tracking in the info_stats.sh script. Now, when the script sends data to Google Analytics, it includes information about the country and version of LinuxGSM being used. * refactor: remove unused countryId parameter in info_stats.sh The commit removes the unused "countryId" parameter from the info_stats.sh file in the lgsm/modules directory. This change improves code cleanliness and eliminates unnecessary code. * feat: add LinuxGSM stats tracking This commit adds functionality to track LinuxGSM server statistics using Google Analytics and a custom API. The code now sends POST requests to both services, providing information such as CPU usage, memory usage, disk space, server hardware details, and game-specific data. Additionally, the commit includes an alert feature that sends event data to Discord if enabled. Co-authored-by: [Author Name] * refactor: update event name in info_stats.sh The commit updates the event name in the info_stats.sh file from "linuxgsm" to "pageview". This change ensures that the correct event is being tracked when sending data to the stats.linuxgsm.com API. * feat: add virtual environment to info_distro, info_game, and info_stats modules - Added code to retrieve the virtual environment using systemd-detect-virt command. - Updated the condition for RHEL based distros in info_distro module. - Removed code related to country code retrieval from external IP address in info_game module. - Added virtual environment field to the payload sent to Google Analytics and LinuxGSM API in info_stats module. * feat: remove unnecessary header in info_stats.sh The commit removes an unnecessary header in the info_stats.sh file. The header was causing an issue with the API request. * feat: update server stats and enabled alerts - Updated the server stats to include virtual environment, LinuxGSM version, and enabled alerts. - Removed unnecessary code for sending alert statistics. * feat: add alert options to info_stats module This commit adds new alert options to the info_stats module. The added options include discordalert, emailalert, gotifyalert, iftttalert, mailgunalert, pushbulletalert, pushoveralert, rocketchatalert, slackalert, and telegramalert. These options allow users to configure different types of alerts for their game server statistics. * feat: add virtual environment tracking to info_stats module This commit adds the ability to track the virtual environment in the info_stats module. The "virtualenvironment" field is now included in the data sent to Google Analytics. * feat: add dynamic payload generation for Google Analytics This commit adds the ability to dynamically generate the payload for sending events to Google Analytics. The payload now includes properties such as `discordalert`, `emailalert`, `gotifyalert`, and more, based on their respective values. This allows for more flexibility in customizing the payload sent to Google Analytics. The code changes can be found in `info_stats.sh`. * refactor: simplify payload construction The code changes in this commit refactor the payload construction in the `info_stats.sh` file. The changes simplify the process by removing repetitive if statements and consolidating the payload parameters. This improves readability and maintainability of the code. * refactor: refactor alert options in info_stats.sh Refactored the code in info_stats.sh to improve readability and maintainability. Replaced individual alert options with a unified "alert" option, which now accepts values like "discord", "email", "gotify", etc. This change simplifies the code and makes it easier to add or modify alert options in the future. * feat: Send stats to Google Analytics GA4 This commit adds the functionality to send server statistics to Google Analytics GA4. The payload includes metrics such as CPU usage, disk usage, memory usage, and server information. The data is sent using a POST request to the Google Analytics API. The previous code that sent stats to the LinuxGSM stats endpoint has been removed. Note: This commit does not include any specific file changes. * refactor: simplify sending stats to Google Analytics The code changes refactor the logic for sending stats to Google Analytics. The previous implementation had multiple if statements for different alert types, resulting in repetitive code. The refactored code now uses a function to generate the alert payload and reduces duplication. This improves readability and maintainability of the code. Co-authored-by: John Doe <[email protected]> --------- Co-authored-by: AI Assistant <[email protected]> Co-authored-by: John Doe <[email protected]> commit f68818d Author: Daniel Gibbs <[email protected]> Date: Wed Jul 26 22:12:20 2023 +0100 refactor: rename clear-modules command to cm;clear-modules The commit renames the clear-modules command to cm;clear-modules in the core_getopt.sh file. This change improves clarity and consistency in the codebase. commit 6dd9709 Author: Daniel Gibbs <[email protected]> Date: Wed Jul 26 21:21:35 2023 +0100 fix: add new info about steamcmd failures This commit fixes an issue in the core_dl.sh script where disk write failures and missing update files were not being handled correctly. Now, when a disk write failure or missing update files occur during the download process, appropriate error messages are displayed and logged. commit 7d50e3a Merge: 1ea6ebb edcd2b7 Author: Daniel Gibbs <[email protected]> Date: Fri Jul 21 21:23:25 2023 +0100 Merge branch 'release/v23.4.0' into develop
This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Refactor and improvements of tmux uniqueness, lock file handling and monitoring
Fixes #2646
note this PR will force a game server to reboot to correct new session names via monitor command.
Tmux uniqueness changes
A socket is a pseudo-file that represents a network connection. Tmux creates a socket file to allow tmux to connect to a tmux server. A tmux session is a single or collection of pseudo terminals running on the tmux server. Tmux can have multiple sessions per tmux server.
LinuxGSM now improves the handling of having mulitple game servers running by splitting up sockets and sessions as follows:
The socket name is now the servername plus a uid e.g
csgoserver-f6d3a44b
. This socket is shared by all game servers in the same installation (single installation with multiple instances). This means that every installation now has its own unique socket. The session name is the selfname of the game server e.gcsgoserver
orcsgoserver-2
since you cant have two files with the same name in a directory this is also unique to the socket.This change ensures there is no confusion when running two servers with the same name but in different installations (Single instance per installation) e.g
/home/csgoserver/csgoserver
and/home/csgoserver-2/csgoserver
would previously have the same socket name potentually causing the wrong servers to be interacted with when stopping starting and accessing the console etc.Type of change
Checklist
PR will not be merged until all steps are complete.
develop
branch as its base.Documentation
If documentation does need updating either update it by creating a PR (preferred) or request a documentation update.
Thank you for your Pull Request!