Source

autotunnel / autotunnel

#!/bin/bash

get_config() {
  CONFIG=$1
  if [[ -z ${CONFIG} ]]; then
    CONFIG=default
  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:
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.