diff options
Diffstat (limited to 'bin/ez-pine-gpg-incoming')
-rwxr-xr-x | bin/ez-pine-gpg-incoming | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/bin/ez-pine-gpg-incoming b/bin/ez-pine-gpg-incoming new file mode 100755 index 0000000..2cf8a3b --- /dev/null +++ b/bin/ez-pine-gpg-incoming @@ -0,0 +1,159 @@ +#!/bin/sh + +######################################################## +## ez-pine-gpg-incoming ## +## 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 + +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 + +#################################################### +## if things go wrong, this notice will be displayed +## along with the incoming message +## +gpg_failed () { + echo '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' + echo '%%%%%%%%%%%% Something went wrong --- See above for more info %%%%%%%%%%%%' + echo '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' + ############################# + ## if the message is textmode + if [ "${textmode}" = 'yes' ] + then + ############################################################ + ## display the input and un-dash-escape any clearsigned text + echo "${input}" | sed '/^-----BEGIN PGP SIGNED MESSAGE-----/,/^-----BEGIN PGP SIGNATURE-----/ s/^- -/-/' + elif [ "${textmode}" = 'no' ] && [ "${stdout}" ] + then + ####################################### + ## if the message seems to be encrypted + ## and gpg produces STDOUT display the decrypted message + echo "${stdout}" + else + ############################################################################## + ## if we're here then the message was encrypted but not successfully decrypted + ## just display the input + echo "${input}" + fi + ############################################# + ## unset variables that we don't need anymore + input= ; stdout= ; textmode= + ############################################ + ## just because something went wrong doesn't + ## mean that pine needs to know about it. + ## a zero exit status makes pine happy + clear 1>&2 + exit 0 +} + +########################################### +## do the right thing even if ^C is pressed +## +trap 'gpg_failed' 2 + +############################################################ +## create a variable "input" containing STDIN to this script +## +input="`cat`" + +##################################################### +## test if the message in textmode or binary/armored? +if echo "${input}" | gpg --list-only --list-packets 2>&1 | egrep -q '^[[:space:]]+mode t' +then + export textmode=yes +else + export textmode=no +fi + +############################################################## +## echo a message that let's us know ez-pine-gpg is being used +## and display the machine name and current date/time +## +echo '##########################################################################' +echo '## ez-pine-gpg v0.4h ## http://Business-PHP.com/opensource/ez-pine-gpg/' +echo "## `date` ## `uname -n`" +echo '##########################################################################' + +################################################# +## display some information about the the message +## we're only concerned with STDERR +echo "${input}" | gpg --list-only > /dev/null + +############################################### +## the variable "stdout" is the output from gpg +## notices from gpg STDERR are redirected to STDOUT and displayed +## if gpg fails then bail out with an error message +## +{ stdout="`echo "${input}" | gpg --decrypt`" || gpg_failed ; } 2>&1 + +############################################# +## figure out how to best display the message +## +if [ "${textmode}" = 'no' ] +then + ######################################################## + ## if the message is armored display the output from gpg + echo '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' + echo '%%%%%%%%%%%%%%%%%%%%%%%% OpenPGP ENCODED MESSAGE %%%%%%%%%%%%%%%%%%%%%%%%%' + echo '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' + echo "${stdout}" +else + ########################################################################################## + ## if the message is clearsigned (or malformed?) display the input and un-dash-escape text + echo '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' + echo '%%%%%%%%%%%%%%%%%%%%%%%%% OpenPGP SIGNED MESSAGE %%%%%%%%%%%%%%%%%%%%%%%%%' + echo '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%' + echo "${input}" | sed '/^-----BEGIN PGP SIGNED MESSAGE-----/,/^-----BEGIN PGP SIGNATURE-----/ s/^- -/-/' +fi + +########################### +## get rid of the variables +## containing the message +input= ; stdout= ; textmode= + +############# +## we're done +## +exit 0 |