X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=src%2Fcommon;h=396670582b289376423a2f70f490358d978b8b48;hb=0e27af63f34c5bb75cef059fc9d76887251c1517;hp=f5bb3bbbf4f0d40b5ebce3229658d9fbce4ec339;hpb=8e1439bc18f8203d71c1237a25c21374ca17c38c;p=monkeysphere.git diff --git a/src/common b/src/common index f5bb3bb..3966705 100644 --- a/src/common +++ b/src/common @@ -83,6 +83,10 @@ remove_line() { return 1 fi + if [ ! -e "$file" ] ; then + return 1 + fi + # if the string is in the file... if grep -q -F "$string" "$file" 2> /dev/null ; then # remove the line with the string, and return 0 @@ -94,6 +98,24 @@ remove_line() { fi } +# remove all lines with MonkeySphere strings in file +remove_monkeysphere_lines() { + local file + + file="$1" + + if [ -z "$file" ] ; then + return 1 + fi + + if [ ! -e "$file" ] ; then + return 1 + fi + + egrep -v '^MonkeySphere[[:digit:]]{4}(-[[:digit:]]{2}){2}T[[:digit:]]{2}(:[[:digit:]]{2}){2}$' \ + "$file" | sponge "$file" +} + # translate ssh-style path variables %h and %u translate_ssh_variables() { local uname @@ -533,7 +555,7 @@ update_known_hosts() { lockfile-create "$KNOWN_HOSTS" # note pre update file checksum - fileCheck=$(md5sum "$KNOWN_HOSTS") + fileCheck="$(cat "$KNOWN_HOSTS" | md5sum)" for host ; do # process the host @@ -556,7 +578,7 @@ update_known_hosts() { lockfile-remove "$KNOWN_HOSTS" # note if the known_hosts file was updated - if [ "$(md5sum "$KNOWN_HOSTS")" != "$fileCheck" ] ; then + if [ "$(cat "$KNOWN_HOSTS" | md5sum)" != "$fileCheck" ] ; then log "known_hosts file updated." fi @@ -671,7 +693,10 @@ update_authorized_keys() { lockfile-create "$AUTHORIZED_KEYS" # note pre update file checksum - fileCheck=$(md5sum "$AUTHORIZED_KEYS") + fileCheck="$(cat "$AUTHORIZED_KEYS" | md5sum)" + + # remove any monkeysphere lines from authorized_keys file + remove_monkeysphere_lines "$AUTHORIZED_KEYS" for userID ; do # process the user ID, change return code if key not found for @@ -696,7 +721,7 @@ update_authorized_keys() { lockfile-remove "$AUTHORIZED_KEYS" # note if the authorized_keys file was updated - if [ "$(md5sum "$AUTHORIZED_KEYS")" != "$fileCheck" ] ; then + if [ "$(cat "$AUTHORIZED_KEYS" | md5sum)" != "$fileCheck" ] ; then log "authorized_keys file updated." fi @@ -742,45 +767,3 @@ process_authorized_user_ids() { update_authorized_keys "${userIDs[@]}" } - -# EXPERIMENTAL (unused) process userids found in authorized_keys file -# go through line-by-line, extract monkeysphere userids from comment -# fields, and process each userid -# NOT WORKING -process_authorized_keys() { - local authorizedKeys - local userID - local returnCode - - # default return code is 0, and is set to 1 if a key for a user - # is not found - returnCode=0 - - authorizedKeys="$1" - - # take all the monkeysphere userids from the authorized_keys file - # comment field (third field) that starts with "MonkeySphere uid:" - # FIXME: needs to handle authorized_keys options (field 0) - meat "$authorizedKeys" | \ - while read -r options keytype key comment ; do - # if the comment field is empty, assume the third field was - # the comment - if [ -z "$comment" ] ; then - comment="$key" - fi - - if echo "$comment" | egrep -v -q '^MonkeySphere[[:digit:]]{4}(-[[:digit:]]{2}){2}T[[:digit:]]{2}(:[[:digit:]]{2}){2}' ; then - continue - fi - userID=$(echo "$comment" | awk "{ print $2 }") - if [ -z "$userID" ] ; then - continue - fi - - # process the userid - log "processing userid: '$userID'" - process_user_id "$userID" > /dev/null || returnCode=1 - done - - return "$returnCode" -}