40 lines
		
	
	
		
			972 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			972 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash --
 | |
| set -e
 | |
| [[ "$DEBUG" == "1" ]] && set -x
 | |
| 
 | |
| LOCALPORT="$(echo "$1" | cut -d ':' -f1)"
 | |
| DOMAIN="$(echo "$1" | cut -d ':' -f2)"
 | |
| PORT="$(echo "$1" | cut -d ':' -f3)"
 | |
| 
 | |
| print_usage() {
 | |
| cat >&2 <<USAGE
 | |
| Usage: $0 [localport]:[vmname]:[port]
 | |
| Bind localport to another VM port using the qubes.ConnectTCP RPC service.
 | |
| USAGE
 | |
| }
 | |
| 
 | |
| check_port() {
 | |
| [[ "$1" -ge 1 ]] && [[ "$1" -le 65535 ]]
 | |
| }
 | |
| 
 | |
| if [ $# -lt 1 ] ; then
 | |
|     print_usage
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| [[ -z "$PORT" ]] && { echo "Please provide PORT"; exit 1; };
 | |
| [[ -z "$LOCALPORT" ]] && LOCALPORT="$PORT"
 | |
| 
 | |
| if check_port "$PORT" && check_port "$LOCALPORT"; then
 | |
|     if [ -n "$DOMAIN" ]; then
 | |
|         msg="Binding TCP '$DOMAIN:$PORT' to 'localhost:$LOCALPORT'..."
 | |
|     else
 | |
|         msg="Binding TCP '@default:$PORT' to 'localhost:$LOCALPORT'..."
 | |
|     fi
 | |
|     echo "$msg"
 | |
|     sudo socat TCP-LISTEN:"$LOCALPORT",reuseaddr,fork EXEC:"qrexec-client-vm \'$DOMAIN\' qubes.ConnectTCP+$PORT" &
 | |
| else
 | |
|     echo "Invalid port provided"
 | |
|     exit 1
 | |
| fi
 | 
