Files
dokku/plugins/ssh-keys/subcommands/add

41 lines
1.2 KiB
Plaintext
Raw Normal View History

2016-06-30 17:34:07 -07:00
#!/usr/bin/env bash
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
2016-06-30 17:34:07 -07:00
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
2016-07-01 11:42:16 -07:00
source "$PLUGIN_AVAILABLE_PATH/ssh-keys/functions"
2016-06-30 17:34:07 -07:00
2016-07-01 11:42:16 -07:00
add_keys() {
2016-06-30 17:34:07 -07:00
declare desc="add a new key via sshcommand"
2016-07-01 11:42:16 -07:00
local cmd="ssh-keys:add"
[[ "$1" == "$cmd" ]] && shift 1
declare NAME="$1" KEY_FILE="$2"
local TMP_KEY_FILE
TMP_KEY_FILE=$(mktemp "/tmp/${FUNCNAME[0]}.XXXX")
trap 'rm -rf "$TMP_KEY_FILE" >/dev/null' RETURN INT TERM EXIT
if [[ -n "$KEY_FILE" ]]; then
true
elif [[ -p /dev/stdin ]]; then
local key_contents
read -r key_contents
echo "$key_contents" >"$TMP_KEY_FILE"
KEY_FILE="$TMP_KEY_FILE"
else
dokku_log_fail "No key specified via file or pipe"
fi
2019-04-23 14:21:40 -04:00
if [[ ! -s "$KEY_FILE" ]]; then
dokku_log_fail "Empty key was specified"
2016-06-30 17:34:07 -07:00
fi
local count="$(wc -l "$KEY_FILE")"
[[ "$count" -eq 1 ]] || dokku_log_fail "Too many keys provided, set one per invocation of dokku ssh-keys:add <NAME> <KEY_FILE>"
ssh-keygen -lf "$KEY_FILE" &>/dev/null || dokku_log_fail "Key specified in is not a valid ssh public key"
create_ssh_key_file
2016-06-30 17:34:07 -07:00
verify_ssh_key_exists
sshcommand acl-add dokku "$NAME" "$KEY_FILE" || dokku_log_fail "sshcommand returned an error: $?"
verify_ssh_key_file
2016-06-30 17:34:07 -07:00
}
add_keys "$@"