commit c9b3531e83455ab729a223f6a2510e21b4102dbe
parent 16b9f5fedf4b48aac7121333e1dafda715ae1d76
Author: Jaromil <jaromil@dyne.org>
Date: Mon, 4 Jun 2012 16:08:15 +0200
should function without gnome-keyring (to be tested)
Diffstat:
M | src/jaro | | | 86 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------- |
1 file changed, 62 insertions(+), 24 deletions(-)
diff --git a/src/jaro b/src/jaro
@@ -153,6 +153,16 @@ ${=mkdir} "$WORKDIR/certs"
PROCMAILDIR=$WORKDIR/.procmail
MUTTDIR=$WORKDIR/.mutt
+
+# use gnome-keyring for passwords on GNU systems
+GNOMEKEY=0
+pidof gnome-keyring-daemon > /dev/null
+{ test $? = 0 } && {
+ which jaro-gnome-keyring > /dev/null
+ { test $? = 0 } && { GNOMEKEY=1 }
+}
+
+
cleanexit() {
func "Clean exit procedures"
for f in `ls $TMPDIR/ | grep -v '.lock$'`; do
@@ -272,17 +282,29 @@ ask_password() {
;;
#####################################
GNU)
- func "Looking for password in keyring: $1 @ $2"
- echo "protocol=${type}\npath=jaromail/${email}\nusername=${login}\nhost=${host}\n\n" | $WORKDIR/bin/jaro-gnome-keyring check
- if [ $? != 0 ]; then # its a new password
- new_password
- { test $? = 0 } && {
- error "Password input aborted."
- return 1 }
- else # password found into gnome keyring
- act "Using saved password for $1 @ $2"
- password=`echo "protocol=${type}\npath=jaromail/${email}\nusername=${login}\nhost=${host}\n\n" | $WORKDIR/bin/jaro-gnome-keyring get`
- fi
+ func "Looking for password in keyring: $name"
+ ###################
+ # USE GNOME KEYRING
+ { test $GNOMEKEY = 1 } && {
+ echo "protocol=${type}\npath=jaromail/${email}\nusername=${login}\nhost=${host}\n\n" \
+ | $WORKDIR/bin/jaro-gnome-keyring check
+ if [ $? != 0 ]; then # its a new password
+ new_password
+ { test $? = 0 } && {
+ error "Password input aborted."
+ return 1 }
+ else # password found into gnome keyring
+ act "Using saved password for $1 @ $2"
+ password=`echo "protocol=${type}\npath=jaromail/${email}\nusername=${login}\nhost=${host}\n\n" | $WORKDIR/bin/jaro-gnome-keyring get`
+ fi
+ return 0
+ }
+ ####################
+ # USE PINENTRY ALONE
+ new_password
+ { test $? = 0 } && {
+ error "Password input aborted."
+ return 1 }
return 0
;;
*)
@@ -320,31 +342,47 @@ new_password() {
fi
;;
GNU)
- if [ "$password" != "" ]; then
- cat <<EOF | $WORKDIR/bin/jaro-gnome-keyring store
+ if [ "$password" != "" ]; then # password was written
+
+ # USE GNOME KEYRING
+ { test $GNOMEKEY = 1 } && {
+
+ cat <<EOF | $WORKDIR/bin/jaro-gnome-keyring store
protocol=${type}
path=jaromail/${email}
username=${login}
host=${host}
password=${password}
EOF
- { test $? != 0 } && {
- unset password
- error "Error saving password in Gnome keyring"
- return 1 }
+ { test $? != 0 } && {
+ unset password
+ error "Error saving password in Gnome keyring"
+ return 1 }
+ return 0
+ }
+
return 0
- else
- cat <<EOF | $WORKDIR/bin/jaro-gnome-keyring erase
+
+ else # password is blank or aborted
+
+ # USE GNOME KEYRING
+ { test $GNOMEKEY = 1 } && {
+
+ cat <<EOF | $WORKDIR/bin/jaro-gnome-keyring erase
protocol=${type}
path=jaromail/${email}
username=${login}
host=${host}
EOF
- { test $? != 0 } && {
- error "Error accessing password in Gnome keyring"
- return 1 }
- act "No new password given, old password erased."
- return 0
+ { test $? != 0 } && {
+ error "Error accessing password in Gnome keyring"
+ return 1 }
+ act "No new password given, old password erased."
+ return 0
+ }
+
+ return 1
+
fi
;;
*)