Add Rimworld-Together/serverupdate.sh
This commit is contained in:
		
							parent
							
								
									c1efe61711
								
							
						
					
					
						commit
						7d0c8b3d53
					
				
					 1 changed files with 128 additions and 0 deletions
				
			
		
							
								
								
									
										128
									
								
								Rimworld-Together/serverupdate.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								Rimworld-Together/serverupdate.sh
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue