summaryrefslogtreecommitdiffstats
path: root/bin/ez-pine-gpg-encrypt
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ez-pine-gpg-encrypt')
-rwxr-xr-xbin/ez-pine-gpg-encrypt125
1 files changed, 125 insertions, 0 deletions
diff --git a/bin/ez-pine-gpg-encrypt b/bin/ez-pine-gpg-encrypt
new file mode 100755
index 0000000..3f544be
--- /dev/null
+++ b/bin/ez-pine-gpg-encrypt
@@ -0,0 +1,125 @@
+#!/bin/sh
+
+########################################################
+## ez-pine-gpg-encrypt ##
+## part of ez-pine-gpg v0.4h // gpg filters for pine ##
+## http://Business-PHP.com/opensource/ez-pine-gpg/ ##
+## (c) 13 Feb 2004, Atom Emet ##
+## (c) 16 Dec 2004, Atom Emet ##
+## Atom {at} Business-PHP.com ##
+## Distributed under the GNU General Public License ##
+## http://www.gnu.org/copyleft/gpl.html ##
+## ##
+## ################################################ ##
+## ##
+## This program is free software; you can ##
+## redistribute it and/or modify it under the terms ##
+## of the GNU General Public License as published by ##
+## the Free Software Foundation; either version 2 of ##
+## the License, or (at your option) any later ##
+## version. ##
+## ##
+## This program is distributed in the hope that it ##
+## will be useful, but WITHOUT ANY WARRANTY; without ##
+## even the implied warranty of MERCHANTABILITY or ##
+## FITNESS FOR A PARTICULAR PURPOSE. See the GNU ##
+## General Public License for more details. ##
+## ##
+## You should have received a copy of the GNU ##
+## General Public License along with this program; ##
+## if not, write to the ##
+## Free Software Foundation, Inc., ##
+## 59 Temple Place - Suite 330, ##
+## Boston, MA 02111-1307, USA. ##
+########################################################
+
+#########################################
+## PATH is configured during installation
+PATH=/bin:/usr/bin:/home/bnewbold/bin
+
+###################
+## clear the screen
+clear 1>&2
+
+###############################################################
+## display notices and give the user an opportunity to bail out
+##
+echo '#########################################################################' 1>&2
+echo '## This message is being processed by ez-pine-gpg v0.4h ##' 1>&2
+echo '## http://Business-PHP.com/opensource/ez-pine-gpg/ ##' 1>&2
+echo '## (c) 13 Feb 2004, Atom Emet ##' 1>&2
+echo '## (c) 16 Dec 2004, Atom Emet ##' 1>&2
+echo '## Distributed under the GNU General Public License ##' 1>&2
+echo '## See source for details ##' 1>&2
+echo '## ##' 1>&2
+echo '## THIS FILTER ENCRYPTS BUT DOES NOT SIGN YOUR MESSAGE! ##' 1>&2
+echo '## ##' 1>&2
+echo '## (May not be safe for BCC recipients -- see documentation) ##' 1>&2
+echo '## ##' 1>&2
+echo '## Are you sure you want to send this message without signing it? ##' 1>&2
+echo '## Press ENTER to continue or ^C to cancel. ##' 1>&2
+echo '#########################################################################' 1>&2
+
+####################################################
+## we only need an acknowledgment: hit <ENTER> or ^C
+## of course, some loser will type in their passphrase
+## so we want it to NOT echo and we want to unset it
+## hopefully this will be unset before their
+## passphrase is written to disk cache
+## the stty commmand also compensates for an un-acknowledged display bug in pine
+##
+stty -f /dev/tty -echo
+read answer 0< /dev/tty
+answer=
+stty -f /dev/tty echo
+
+#######################################
+## function to gracefully handle errors
+## if something goes wrong display an error message
+## that includes the recipients
+##
+gpg_failed () {
+ echo '#########################################################################' 1>&2
+ echo '## Something went wrong #### See above for more info ##' 1>&2
+ echo '#########################################################################' 1>&2
+ echo "## Tried encrypting to: <user>`printf '\011'`(key ID)" 1>&2
+ for each_recipient in ${@}
+ do
+ [ "`echo ${each_recipient} | egrep '@'`" ] && echo "## <${each_recipient}>`printf '\011'`(`gpg --with-colons --list-keys ${each_recipient} 2> /dev/null | egrep ^pub | head -n 1 | cut -d : -f 5`)" 1>&2
+ done
+ echo '#########################################################################' 1>&2
+ ########################
+ ## unset these variables
+ recipients= ; each_recipient=
+ #############################################################################
+ ## a non-zero exit status will force pine to recognize that the script failed
+ ## forcing an acknowledgment here will leave diagnostic info visible to user
+ echo '/////////////////////// Press <ENTER> to continue ///////////////////////' 1>&2
+ read dead < /dev/tty
+ clear 1>&2
+ exit 1
+}
+
+###############################################
+## recipients are passed as arguments from pine
+## and processed by "ez-pine-gpg-helper-recipient"
+## if a key can't be found for an address
+## then bail out with an error message
+##
+recipients=`ez-pine-gpg-helper-recipient ${@}` || gpg_failed ${@}
+
+####################################################
+## send the message from STDIN through gpg to STDOUT
+## if it fails then bail out with an error message
+##
+gpg -ea ${recipients} || gpg_failed ${recipients}
+
+########################################
+## unset variables we don't need anymore
+##
+recipients= ; each_recipient=
+
+#############
+## we're done
+##
+exit 0