main dotfiles / bin / tuns
Eric Bower  ·  2026-07-01
 1#!/usr/bin/env bash
 2
 3TUNNEL_TYPE=""
 4TUNNEL_ENDPOINT=""
 5TUNNEL_ARGS=""
 6
 7case $1 in
 8http | 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
30tcp)
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