X-Git-Url: https://codewiz.org/gitweb?p=monkeysphere.git;a=blobdiff_plain;f=src%2Fmonkeysphere-host;h=f5374bd1a607fdfc937e72822f99f1415713de49;hp=5007cac3b6f503d1dc9324740cdc8a4ffc5df04e;hb=42f7fec024d11c2ff20299f73254eda5b06ed181;hpb=8b806ee99239d48fd3c2920c19f5cac7d54d2e8d diff --git a/src/monkeysphere-host b/src/monkeysphere-host index 5007cac..f5374bd 100755 --- a/src/monkeysphere-host +++ b/src/monkeysphere-host @@ -110,6 +110,11 @@ update_pgp_pub_file() { # all-number (e.g. ssh://666.666), which are technically not allowed # (though some exist on the 'net, apparently) +# FIXME: this will probably misbehave if raw IP addresses are provided, +# either IPv4 or IPv6 using the bracket notation. + +# FIXME: this doesn't address the use of hashed User IDs. + check_service_name() { local name="$1" local errs="" @@ -142,7 +147,7 @@ Service names should use fully-qualified domain names (FQDN), but the domain name you chose appears to only have the local part. For example: don't use 'ssh://foo' ; use 'ssh://foo.example.com' instead." - [[ "$name" =~ ^[a-z]([a-z0-9-]*[a-z0-9])?://[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.|((\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+))(:[1-9][0-9]{0,4})?$ ]] || \ + [[ "$name" =~ ^[a-z0-9]([a-z0-9-]*[a-z0-9])?://[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.|((\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+))(:[1-9][0-9]{0,4})?$ ]] || \ failure "Not a valid service name: '$name' Service names look like ://full.example.com[:], @@ -234,7 +239,7 @@ prompt_userid_exists() { if gpgOut=$(gpg_host_list_keys "=${userID}" 2>/dev/null) ; then fingerprint=$(echo "$gpgOut" | grep '^fpr:' | cut -d: -f10) if [ "$PROMPT" != "false" ] ; then - printf "Service name '%s' is already being used by key '%s'.\nAre you sure you want to use it again? (y/N) " "$fingerprint" "$userID" >&2 + printf "Service name '%s' is already being used by key '%s'.\nAre you sure you want to use it again? (y/N) " "$userID" "$fingerprint" >&2 read OK; OK=${OK:=N} if [ "${OK/y/Y}" != 'Y' ] ; then failure "Service name not added." @@ -251,20 +256,21 @@ multi_key() { shift local keys=$@ local i=0 - local fprs=($(list_primary_fingerprints <"$HOST_KEY_FILE")) local key check_no_keys + local fprs=($(list_primary_fingerprints <"$HOST_KEY_FILE")) + if [[ -z "$1" || "$1" == '--all' ]] ; then keys="${fprs[@]}" fi for key in $keys ; do if (( i++ > 0 )) ; then - echo "##############################" + printf "\n" fi - eval "$cmd" "$key" + "$cmd" "$key" done } @@ -296,15 +302,16 @@ show_key() { # create the ssh key tmpssh="$GNUPGHOME"/ssh_host_key_rsa_pub - gpg --export "$fingerprint" 2>/dev/null \ + gpg --export --no-armor "$fingerprint" 2>/dev/null \ | openpgp2ssh 2>/dev/null >"$tmpssh" # list the host key info # FIXME: make no-show-keyring work so we don't have to do the grep'ing # FIXME: can we show uid validity somehow? gpg --list-keys --list-options show-unusable-uids "$fingerprint" 2>/dev/null \ - | grep -v "^${GNUPGHOME}/pubring.gpg$" \ - | egrep -v '^-+$' + | grep -v "^${GNUPGHOME}/pubring.gpg$" \ + | egrep -v '^-+$' \ + | grep -v '^$' # list revokers, if there are any revokers=$(gpg --list-keys --with-colons --fixed-list-mode "$fingerprint" \ @@ -314,7 +321,6 @@ show_key() { for key in $revokers ; do echo "revoker: $key" done - echo fi # list the pgp fingerprint @@ -373,7 +379,7 @@ COMMAND="$1" shift case $COMMAND in - 'import-key'|'i') + 'import-key'|'import'|'i') source "${MHSHAREDIR}/import_key" import_key "$@" ;; @@ -382,7 +388,7 @@ case $COMMAND in multi_key show_key "$@" ;; - 'set-expire'|'extend-key'|'e') + 'set-expire'|'extend-key'|'extend'|'e') source "${MHSHAREDIR}/set_expire" set_expire "$@" ;; @@ -421,7 +427,7 @@ case $COMMAND in update_pgp_pub_file ;; - 'version'|'v') + 'version'|'--version'|'v') version ;;