diff --git a/Rimworld-Together/serverupdate.sh b/Rimworld-Together/serverupdate.sh new file mode 100644 index 0000000..971275d --- /dev/null +++ b/Rimworld-Together/serverupdate.sh @@ -0,0 +1,128 @@ +#!/bin/bash + +#Dotnet Path for starting the server +export DOTNET_ROOT=$HOME/dotnet +export PATH=$PATH:$HOME/dotnet + + +# Set the GitHub repository +REPO="Byte-Nova/Rimworld-Together" + +# Set the platform +#This is how it finds what release to grab. +#It should be part of the file name you want under Assests on the release page. +SEARCH="Linux-x64" + +# Path to the SteamCMD executable +STEAMCMD_PATH="/opt/steamcmd/steamcmd.sh" + +# Path to the text file containing workshop IDs (one ID per line) +WORKSHOP_IDS_FILE="/home/rimworld/workshop_ids.txt" + +# Path to the directory where you want to install the workshop items +#mods will be in $INSTALL_DIR/steamapps/workshop/content/$APP_ID/$workshop_id/ +INSTALL_DIR="/home/rimworld/" + +# AppID for the game (replace with the appropriate AppID) +APP_ID="294100" + +cd "/home/rimworld/" || exit + + +# Update Mods + +# Ensure the SteamCMD executable exists +if [ ! -f "$STEAMCMD_PATH" ]; then + echo "Error: SteamCMD not found at $STEAMCMD_PATH. Please provide the correct path." + exit 1 +fi + + +modupdate(){ +# Loop through each workshop ID in the file +while IFS= read -r workshop_id || [ -n "$workshop_id" ]; do + # Run SteamCMD to install the workshop item + "$STEAMCMD_PATH" +force_install_dir "$INSTALL_DIR" +login anonymous +workshop_download_item "$APP_ID" "$workshop_id" +quit + + echo + echo + echo + echo "Installed workshop item with ID $workshop_id" + echo + + #Rate Limit fix + sleep 5 +done < "$WORKSHOP_IDS_FILE" +} +#modupdate + +# Update RWT + + +# Fetch the latest release information using the GitHub API +RELEASE_INFO=$(curl -s "https://api.github.com/repos/$REPO/releases/latest") + +# Extract the version using jq and store it in version.txt +NEW_VERSION=$(echo "$RELEASE_INFO" | jq -r ".tag_name" | sed 's/[^0-9]*//g') +CURRENT_VERSION=$(cat version.txt 2>/dev/null) + +# Check if version.txt exists and if the latest version is newer +if [ -z "$CURRENT_VERSION" ] || [ "$NEW_VERSION" -gt "$CURRENT_VERSION" ]; then + echo "Newer version available. Updating version.txt and downloading..." + + # Update version.txt with the new version + echo "$NEW_VERSION" > version.txt + + # Extract the download URLs for all assets + DOWNLOAD_URLS=$(echo "$RELEASE_INFO" | jq -r '.assets[] | .browser_download_url') + + # Loop through each download URL and find the one containing the SEARCH string + for URL in $DOWNLOAD_URLS; do + if [[ $URL == *"$SEARCH"* ]]; then + DOWNLOAD_URL=$URL + break + fi + done + + # Download the release + if [ -n "$DOWNLOAD_URL" ]; then + echo "Downloading $DOWNLOAD_URL" + curl -LOs "$DOWNLOAD_URL" + echo "Download complete." + + # Check if a tar file exists in the directory + #Change file extension as needed! + if [ -e *.zip ]; then + # Extract the tar file + echo "Extracting zip file..." + unzip -o *.zip + + # Delete the tar file + echo "Deleting zip file..." + rm -f *.zip + #change perms on the server exe + chmod +x /home/rimworld/GameServer + echo "Zip file deleted." + else + echo "Error: No tar file found in the directory." + exit 1 + fi + else + echo "Error: Unable to find download URL for $SEARCH." + exit 1 + fi +else + echo "Already up-to-date. No need to download." +fi + + + +#sync the config files with the website. +rsync -av --include='*.json' --exclude='*' --stats "/home/rimworld/Core/" "/var/www/html/assets/Rimworld/" + +#Run the server +cd /home/rimworld/ || exit 1 +./GameServer + + +exit