65 lines
1.2 KiB
Bash
Executable file
65 lines
1.2 KiB
Bash
Executable file
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
source "${HOME}/bin/script_framework.sh"
|
|
|
|
function usage() {
|
|
echo "Usage: $0 [-hv] [-p prefix] <port>" >&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[@]}"
|