Eric Bower
·
2025-04-02
tuns
1#!/usr/bin/env bash
2
3TUNNEL_TYPE=""
4TUNNEL_ENDPOINT=""
5TUNNEL_ARGS=""
6
7case $1 in
8 http|https)
9 TUNNEL_TYPE="-R"
10 TUNNEL_ENDPOINT="$([[ $1 == "http" ]] && echo "80" || echo "443"):"
11
12 if [ -z $2 ]; then
13 echo "Tunnel provided incorrect port. Usage: tunnel $1 <port>"
14 return
15 fi
16
17 if [ ! -z $3 ]; then
18 TUNNEL_ENDPOINT="$3:${TUNNEL_ENDPOINT}"
19 fi
20
21 LOCAL_PORT=$2
22 if [[ $LOCAL_PORT != *":"* ]]; then
23 LOCAL_PORT="localhost:$2"
24 fi
25
26 TUNNEL_ENDPOINT+="$LOCAL_PORT"
27 echo "Starting ${1^^} tunnel to $LOCAL_PORT"
28 ;;
29
30 tcp)
31 TUNNEL_TYPE="-R"
32 TUNNEL_ENDPOINT="${3:-0}:"
33
34 if [ -z $2 ]; then
35 echo "Tunnel provided incorrect port. Usage: tunnel $1 <port>"
36 return
37 fi
38
39 LOCAL_PORT=$2
40 if [[ $LOCAL_PORT != *":"* ]]; then
41 LOCAL_PORT="localhost:$2"
42 fi
43
44 TUNNEL_ENDPOINT+="$LOCAL_PORT"
45 echo "Starting ${1^^} tunnel to $LOCAL_PORT"
46 ;;
47 *)
48 echo "unknown tunnel"
49 return
50 ;;
51esac
52
53ssh $TUNNEL_TYPE $TUNNEL_ENDPOINT tuns.sh $TUNNEL_ARGS