X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Fsecurity%2Fpassword_functions.sh;h=f1e0df135dceed04c85de9fd116385e7bb7f2a6f;hb=77aaf89edd254173d7750fb1465130fa1431e98f;hp=08409311b94dd4484ade65a43fd2d46da5c29403;hpb=686e2f66386a4603513dc3b731963a061f87a176;p=feisty_meow.git diff --git a/scripts/security/password_functions.sh b/scripts/security/password_functions.sh index 08409311..f1e0df13 100644 --- a/scripts/security/password_functions.sh +++ b/scripts/security/password_functions.sh @@ -8,21 +8,26 @@ # two requirements are done automatically by the store_password function. # load_password: -# provides a way to read a password out of a file. -# the return value is an echoed password, so this method should always be -# called from within a subshell, e.g.: -# mypass="$(load_password /etc/glorp/secret_passcode)" -# the returned echo will be blank if the function failed. +# provides a way to read a password out of a file. the filename is the first +# paramater and the variable to fill with the password is the second. function load_password() { local passfile="$1"; shift + local varname="$1"; shift if [ -z "$passfile" ]; then echo 'The load_password function needs a filename to read the password from.' return 1 fi + if [ ! -f "$passfile" ]; then + # no file, which is not an error necessarily, but return a blank password + # in any case. + return 0 + fi local passwd read passwd < "$passfile" - echo "$passwd" + + # return the password in the variable they provided. + eval $varname="$passwd" } # stores a password into a password file. the password file should be the @@ -51,20 +56,23 @@ and (2) the password that should be stored. } # reads a password from the console, without echoing the letters when they -# are typed. the prompt to show the user is required as the first parameter. -# the password read in is returned as an echo, like load_password above. +# are typed. the prompt to show the user is required as the first parameter, +# and the variable to fill with the result is the second parameter. function read_password() { - prompt="$1"; shift + local prompt="$1"; shift + local varname="$1"; shift +#hmmm: complain if not enough parms. echo -n "$prompt " # turn off echo but remember former setting. stty_orig=`stty -g` stty -echo + local the_passwd read the_passwd # turn echo back on. stty $stty_orig - # return the password as an echo. - echo "$the_passwd" + # return the password in the variable they provided. + eval $varname="$the_passwd" }