| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -17,8 +17,10 @@ usage() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "                          Default: 6080"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "    --vnc VNC_HOST:PORT   VNC server host:port proxy target"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "                          Default: localhost:5900"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "    --cert CERT           Path to combined cert/key file"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "    --cert CERT           Path to combined cert/key file, or just"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "                          the cert file if used with --key"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "                          Default: self.pem"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "    --key KEY             Path to key file, when not combined with cert"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "    --web WEB             Path to web files (e.g. vnc.html)"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "                          Default: ./"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "    --ssl-only            Disable non-https connections."
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -34,6 +36,7 @@ HERE="$(cd "$(dirname "$REAL_NAME")" && pwd)"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				PORT="6080"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				VNC_DEST="localhost:5900"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				CERT=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				KEY=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				WEB=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proxy_pid=""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				SSLONLY=""
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -63,6 +66,7 @@ while [ "$*" ]; do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    --listen)  PORT="${OPTARG}"; shift            ;;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    --vnc)     VNC_DEST="${OPTARG}"; shift        ;;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    --cert)    CERT="${OPTARG}"; shift            ;;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    --key)     KEY="${OPTARG}"; shift             ;;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    --web)     WEB="${OPTARG}"; shift            ;;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    --ssl-only) SSLONLY="--ssl-only"             ;;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    --record) RECORD_ARG="--record ${OPTARG}"; shift ;;
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -116,6 +120,13 @@ else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    echo "Warning: could not find self.pem"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# Check key file
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if [ -n "${KEY}" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if [ ! -e "${KEY}" ]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        die "Could not find ${KEY}"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# try to find websockify (prefer local, try global, then download local)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if [[ -e ${HERE}/websockify ]]; then
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    WEBSOCKIFY=${HERE}/websockify/run
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -148,7 +159,7 @@ fi
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				echo "Starting webserver and WebSockets proxy on port ${PORT}"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#${HERE}/websockify --web ${WEB} ${CERT:+--cert ${CERT}} ${PORT} ${VNC_DEST} &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				${WEBSOCKIFY} ${SSLONLY} --web ${WEB} ${CERT:+--cert ${CERT}} ${PORT} ${VNC_DEST} ${RECORD_ARG} &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				${WEBSOCKIFY} ${SSLONLY} --web ${WEB} ${CERT:+--cert ${CERT}} ${KEY:+--key ${KEY}} ${PORT} ${VNC_DEST} ${RECORD_ARG} &
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				proxy_pid="$!"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				sleep 1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if ! ps -p ${proxy_pid} >/dev/null; then
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |