From 2fc0e9c1b8eeac923b2e2d8dbe574993c8417009 Mon Sep 17 00:00:00 2001 From: bnewbold Date: Tue, 21 Aug 2012 13:03:50 -0400 Subject: add ez-pine stuff to dotfiles --- bin/ez-pine-gpg-sign-and-encrypt | 134 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100755 bin/ez-pine-gpg-sign-and-encrypt (limited to 'bin/ez-pine-gpg-sign-and-encrypt') diff --git a/bin/ez-pine-gpg-sign-and-encrypt b/bin/ez-pine-gpg-sign-and-encrypt new file mode 100755 index 0000000..9994687 --- /dev/null +++ b/bin/ez-pine-gpg-sign-and-encrypt @@ -0,0 +1,134 @@ +#!/bin/sh + +######################################################## +## ez-pine-gpg-sign-and-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 + +###################################################### +## this compensates for an un-acknowledged bug in pine +stty -f /dev/tty echo + +############################################################### +## 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 signs and encrypts your message. ##' 1>&2 +echo '## ##' 1>&2 +echo '## (May not be safe for BCC recipients -- see documentation) ##' 1>&2 +echo '## ##' 1>&2 +echo '## If you want to cancel sending press ^C ##' 1>&2 +echo '#########################################################################' 1>&2 + +####################################### +## 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 signing message from: ${from}" 1>&2 + echo '#########################################################################' 1>&2 + echo "## Tried encrypting to: `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= ; from= + ############################################################################# + ## 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 to continue ///////////////////////' 1>&2 + read dead < /dev/tty + clear 1>&2 + exit 1 +} + +########################################### +## do the right thing even if ^C is pressed +## +trap 'echo 1>&2 ; gpg_failed ${@}' 2 + +########################################################## +## the variable "msg" is the full headers and message body +## +msg="`cat`" + +######################################################################## +## use "ez-pine-gpg-helper-sender" to find what role is sending the mail +## +from=`echo "${msg}" | ez-pine-gpg-helper-sender` + +############################################### +## 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 ${@} + +################################################################ +## pipe the message body (minus headers) into gpg sign + encrypt +## pine will read the signed message from STDOUT +## +cr=`printf '\015'` +echo "${msg}" | sed "1,/^${cr}\$/d" \ + | gpg --sign --encrypt --local-user "${from}" --armor ${recipients} || gpg_failed ${recipients} + +############################################# +## unset variables that we don't need anymore +## +recipients= ; each_recipient= ; from= ; msg= + +############# +## we're done +## +exit 0 -- cgit v1.2.3