repos / dotfiles

my dotfiles

dotfiles / bin
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