summaryrefslogtreecommitdiffstats
path: root/bin/ez-pine-gpg-sign
diff options
context:
space:
mode:
Diffstat (limited to 'bin/ez-pine-gpg-sign')
-rwxr-xr-xbin/ez-pine-gpg-sign129
1 files changed, 129 insertions, 0 deletions
diff --git a/bin/ez-pine-gpg-sign b/bin/ez-pine-gpg-sign
new file mode 100755
index 0000000..fe9a994
--- /dev/null
+++ b/bin/ez-pine-gpg-sign
@@ -0,0 +1,129 @@
+#!/bin/sh
+
+########################################################
+## ez-pine-gpg-sign ##
+## 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 BUT DOES NOT ENCRYPT YOUR MESSAGE! ##' 1>&2
+echo '## ##' 1>&2
+echo '## Are you sure you want to send this message without encrypting it? ##' 1>&2
+echo '## If you want to cancel sending press ^C ##' 1>&2
+echo '#########################################################################' 1>&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`
+
+###################################################
+## we don't need to process any more of the headers
+## this assigns the body of the message to the var "body"
+##
+cr=`printf '\015'`
+body=`echo "${msg}" | sed "1,/^${cr}\$/d"`
+
+###########################
+## unset the "msg" variable
+##
+msg=
+
+#######################################
+## function to gracefully handle errors
+## if something goes wrong display an error message
+## that includes the sender
+##
+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
+ ########################################
+ ## unset variables we don't need anymore
+ body= ; 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 <ENTER> to continue ///////////////////////' 1>&2
+ read dead < /dev/tty
+ clear 1>&2
+ exit 1
+}
+
+###########################################
+## do the right thing even if ^C is pressed
+##
+trap 'gpg_failed' 2
+
+#######################################################
+## pipe the message body into the gpg clearsign command
+## pine will read the signed message from STDOUT
+##
+{ echo "${body}" ; echo ; } | gpg --local-user "${from}" --clearsign || gpg_failed
+
+#############################################
+## unset variables that we don't need anymore
+##
+body= ; from=
+
+#############
+## we're done
+##
+exit 0