| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -58,8 +58,10 @@ add_user_to_group() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# Function to install kasmvncserver for debian-based distros
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				install_deb() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  local url=$1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  download_file "$url" /tmp/kasmvncserver.deb
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  # Define the directory to check
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  local kasmdeb="/tmp/kasmvncserver.deb"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  download_file "$url" "$kasmdeb"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  CACHE_DIR="/var/lib/apt/lists/partial"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  # Check if the directory exists and was modified in the last 60 minutes
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if [[ ! -d "$CACHE_DIR" ]] || ! find "$CACHE_DIR" -mmin -60 -print -quit &> /dev/null; then
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -67,25 +69,57 @@ install_deb() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # Update package cache with a 300-second timeout for dpkg lock
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    sudo apt-get -o DPkg::Lock::Timeout=300 -qq update
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  DEBIAN_FRONTEND=noninteractive sudo apt-get -o DPkg::Lock::Timeout=300 install --yes -qq --no-install-recommends --no-install-suggests /tmp/kasmvncserver.deb
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  DEBIAN_FRONTEND=noninteractive sudo apt-get -o DPkg::Lock::Timeout=300 install --yes -qq --no-install-recommends --no-install-suggests "$kasmdeb"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  rm "$kasmdeb"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  add_user_to_group "$USER" ssl-cert
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  rm /tmp/kasmvncserver.deb
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# Function to install kasmvncserver for rpm-based distros
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				install_rpm() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  local url=$1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  download_file "$url" /tmp/kasmvncserver.rpm
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  sudo dnf localinstall /tmp/kasmvncserver.rpm
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  rm /tmp/kasmvncserver.rpm
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  local kasmrpm="/tmp/kasmvncserver.rpm"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  local package_manager
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if command -v dnf &> /dev/null; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # shellcheck disable=SC2034
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    package_manager=(dnf localinstall -y)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  elif command -v zypper &> /dev/null; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # shellcheck disable=SC2034
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    package_manager=(zypper install -y)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  elif command -v yum &> /dev/null; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # shellcheck disable=SC2034
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    package_manager=(yum localinstall -y)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  elif command -v rpm &> /dev/null; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # Do we need to manually handle missing dependencies?
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # shellcheck disable=SC2034
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    package_manager=(rpm -i)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "ERROR: No supported package manager available (dnf, zypper, yum, or rpm required)"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    exit 1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  download_file "$url" "$kasmrpm"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  # shellcheck disable=SC2288
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  sudo "$${package_manager[@]}" "$kasmrpm" || {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "ERROR: Failed to install $kasmrpm"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    exit 1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  rm "$kasmrpm"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# Function to install kasmvncserver for Alpine Linux
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				install_alpine() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  local url=$1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  download_file "$url" /tmp/kasmvncserver.tgz
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  tar -xzf /tmp/kasmvncserver.tgz -C /usr/local/bin/
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  rm /tmp/kasmvncserver.tgz
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  local kasmtgz="/tmp/kasmvncserver.tgz"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  download_file "$url" "$kasmtgz"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  tar -xzf "$kasmtgz" -C /usr/local/bin/
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  rm "$kasmtgz"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# Detect system information
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |