X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=inline;f=src%2Fmonkeysphere-server;h=69395a4dbb449f4b6dee8e85455586aa955d7e7d;hb=46586fc0f24e24166a52c2a0efb3e2ab838eea81;hp=31bce7da81ac31de8f333879cd0a5b31e128a83b;hpb=8cf936aa9d62f6e8655904375a2d8217f559947a;p=monkeysphere.git diff --git a/src/monkeysphere-server b/src/monkeysphere-server index 31bce7d..69395a4 100755 --- a/src/monkeysphere-server +++ b/src/monkeysphere-server @@ -375,6 +375,8 @@ EOF add_hostname() { local userID local fingerprint + local tmpuidMatch + local line local adduidCommand if [ -z "$1" ] ; then @@ -383,19 +385,26 @@ add_hostname() { userID="ssh://${1}" - if [ "$(gpg_host --list-key "=${userID}" 2> /dev/null)" ] ; then + fingerprint=$(fingerprint_server_key) + + # match to only ultimately trusted user IDs + tmpuidMatch="u:$(echo $userID | gpg_escape)" + + # find the index of the requsted user ID + # NOTE: this is based on circumstantial evidence that the order of + # this output is the appropriate index + if line=$(gpg_host --list-keys --with-colons --fixed-list-mode "0x${fingerprint}"\! \ + | egrep '^(uid|uat):' | cut -f2,10 -d: | grep -n -x -F "$tmpuidMatch") ; then failure "Host userID '$userID' already exists." fi echo "The following user ID will be added to the host key:" - echo " '$userID'" + echo " $userID" read -p "Are you sure you would like to add this user ID? (y/N) " OK; OK=${OK:=N} if [ ${OK/y/Y} != 'Y' ] ; then failure "user ID not added." fi - fingerprint=$(fingerprint_server_key) - # edit-key script command to add user ID adduidCommand=$(cat < /dev/null | \ - egrep "^(uid|uat):" | cut -d: -f10 | gpg_unescape | cat -n | \ - grep "$userID" | awk '{ print $1 }') - - if [ -z "$uidIndex" ] ; then - failure "User ID '$userID' not found in host key." + if line=$(gpg_host --list-keys --with-colons --fixed-list-mode "0x${fingerprint}"\! \ + | egrep '^(uid|uat):' | cut -f2,10 -d: | grep -n -x -F "$tmpuidMatch") ; then + uidIndex=${line%%:*} + else + failure "No non-revoked user ID '$userID' is found." fi echo "The following user ID will be revoked from the host key:" - echo " '$userID'" + echo " $userID" read -p "Are you sure you would like to revoke this user ID? (y/N) " OK; OK=${OK:=N} if [ ${OK/y/Y} != 'Y' ] ; then failure "user ID not revoked." fi + message="Hostname removed by monkeysphere-server $DATE" + # edit-key script command to revoke user ID revuidCommand=$(cat <