#!/bin/bash set -euo pipefail source "${HOME}/bin/script_framework.sh" function usage() { echo "Usage: $0 [-hv] [-p prefix] " >&2 } # Get real shareport command shareport=$(which -a shareport | grep -v $0 | head -n1) # Start argument array args=($shareport) host=localhost # Parse options while getopts ":hi:p:v" o; do case "${o}" in h) usage exit 0 ;; i) host="${OPTARG}" ;; p) args+=(--var "FQDN_PREFIX=${OPTARG}") ;; v) args+=(--log-level debug) ;; *) usage fatal "Invalid option -- ${OPTARG}" ;; esac done shift $((OPTIND - 1)) # Add port port="${1:-}" [[ -n $port ]] || fatal "Missing local port as first argument" args+=(--local-addr "${host}:${port}") step "Fetching secrets..." export IDENTITY_FILE=$(mktemp) export IDENTITY_FILE_PASSWORD=$(vault read -field=passphrase secret/ssh-key/shareport) vault read -field=private secret/ssh-key/shareport >${IDENTITY_FILE} # Configure remote export REMOTE_HOST=knut.dev:22 export REMOTE_SCRIPT="${HOME}/.config/shareport.remote.sh" export REMOTE_USER=shareport # Setup removal of SSH key after exit function cleanup() { step "Cleaning up..." rm -f ${IDENTITY_FILE} } trap cleanup EXIT step "Starting shareport..." "${args[@]}"