Source

autotunnel / autotunnel

#!/bin/bash

get_config() {
  CONFIG=$1
  if [[ -z ${CONFIG} ]]; then
    CONFIG=/etc/autotunnel/default.conf
  fi

  CFGFILE=/etc/autotunnel.d/${CONFIG}.conf
  [[ ! -f ${CFGFILE} ]] && echo "Invalid configuration file ${CFGFILE}" && exit 1

  echo "Reading config from ${CFGFILE}"
  source ${CFGFILE}
}

if [[ "$1" == "-k" ]]; then
  # kill mode
  get_config $2
  pkill -SIGKILL -f "autossh -M ${AUTOSSH_PORT}"
  exit 0
else
  # launch mode
  get_config $1
  DEBUG=$2
fi

if [[ -z ${TUNNELS} ]] && [[ -z ${REVERSE} ]] && [[ ${SOCKS_PORT} -eq 0 ]]; then
  echo "Nothing to do; aborting"
  exit 2
fi

if [[ ${SOCKS_PORT} -gt 0 ]]; then
  DO_SOCKS="-D ${SOCKS_PORT}"
else
  DO_SOCKS=""
fi

CMD="autossh -M ${AUTOSSH_PORT} -NT ${USER}@${HOST} ${DO_SOCKS}"
for t in ${TUNNELS[@]}; do
    CMD="${CMD} -L ${t}"
done

for rt in ${REVERSE[@]}; do
    CMD="${CMD} -R ${rt}"
done

[[ ! -z ${DEBUG} ]] && echo ${CMD}

$CMD

# vim:set ts=2 sw=2 et: