@@ -24,6 +24,7 @@ source $HESTIA/conf/hestia.conf
2424# Verifications #
2525# ----------------------------------------------------------#
2626
27+ check_args ' 2' " $# " ' USER SSH_PUBLIC_KEY'
2728is_format_valid ' user'
2829is_object_valid ' user' ' USER' " $user "
2930is_object_unsuspended ' user' ' USER' " $user "
@@ -37,22 +38,23 @@ check_hestia_demo_mode
3738
3839# Reading user values
3940source $USER_DATA /user.conf
41+
42+ AUTHKEY_FILE=" $HOMEDIR /$user /.ssh/authorized_keys"
43+ [ -z " $( readlink -f " $AUTHKEY_FILE " | egrep " ^$HOMEDIR /$user /.ssh/" ) " ] && check_result $E_FORBIDEN " Invalid authorized keys path"
44+
4045# check if file exits
41- AUTHKEY_FILE=$HOMEDIR /$user /.ssh/authorized_keys
4246if [ ! -f " $AUTHKEY_FILE " ]; then
43- touch " $AUTHKEY_FILE "
44- chown ${user} : " ${AUTHKEY_FILE} "
47+ v-add-fs-file " $user " " ${AUTHKEY_FILE} "
4548fi
46- TEMP=$( mktemp)
47- echo " $key " >> " $TEMP "
48- ssh-keygen -l -f " $TEMP "
49- if [ ! $? -eq 0 ]; then
50- rm " $TEMP "
51- exit
49+
50+ [ -z " $key " ] && check_result $E_NOTEXIST " Empty ssh public key"
51+
52+ if ! echo " $key " | ssh-keygen -l -f - > /dev/null 2>&1 ; then
53+ check_result $E_PARSING " Validating user private key"
5254fi
53- rm " $TEMP "
55+
5456# make sure authorized_keys is ending with EOL
55- sed -i ' $a\' " ${AUTHKEY_FILE} "
57+ [ -f " ${AUTHKEY_FILE} " ] && sed -i ' $a\' " ${AUTHKEY_FILE} "
5658
5759# append key to file
5860echo " $key " >> " $AUTHKEY_FILE "
@@ -62,7 +64,7 @@ echo "$key" >> "$AUTHKEY_FILE"
6264# ----------------------------------------------------------#
6365
6466# Logging
65- log_history " added ssh-key $user "
67+ log_history " Added ssh-key $user "
6668log_event " $OK " " $ARGUMENTS "
6769
6870exit
0 commit comments