From ca41781b99ff2bc340bb71d2e3bf499ddca22e95 Mon Sep 17 00:00:00 2001 From: David Runge Date: Wed, 16 Dec 2015 00:42:13 +0100 Subject: bin/gpg2mutt: Moving the lesser rememberable generate_pgp_auto to an easier to remember script name. --- bin/generate_pgp_auto | 69 --------------------------------------------------- bin/gpg2mutt | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 69 deletions(-) delete mode 100755 bin/generate_pgp_auto create mode 100755 bin/gpg2mutt (limited to 'bin') diff --git a/bin/generate_pgp_auto b/bin/generate_pgp_auto deleted file mode 100755 index d9db27b..0000000 --- a/bin/generate_pgp_auto +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash -# ~/.mutt/generate_pgp_auto -# Generate mutt pgp_auto* send-hooks from gpg pubring. -# Redirect output to file and source that in muttrc. -# Add the global hook _before_ sourcing the list: -# send-hook . 'reset pgp_autoencrypt' -# -=*# created by erAck #*=- CopyLeft Eike Rathke 2008-01-08T01:36+0100 - -# At least in an UTF-8 environment sed gets confused by 8-bit characters in -# real names and doesn't match the address anymore, an empty LANG variable -# works around. -LANG= - -# Output file -output="$HOME/.mutt/gpg-auto.rc" - -# if the file exists, delete it -if [ -f "${output}" ]; then - rm "${output}" -fi - -# 2nd gpg colon field: -# d := disabled (deprecated - use the 'D' in field 12 instead) -# e := expired -# r := revoked - -# Note that the following lines are part of the sed script passed by the shell -# and may not contain the ' character! Hence the double backslash in mail -# addresses to escape the regex . dot meta character for Mutt. -#gpg --list-keys --with-colons --fixed-list-mode --no-secmem-warning -gpg --list-keys --with-colons --fixed-list-mode --no-secmem-warning | sed -ne ' - -:START - -# ignore d|e|r keys -/^pub:[der]:/ b IGNORE - -# ignore disabled keys, D in last field (12) -/^pub:.*D[^:]*:$/ b IGNORE - -# take keys with encryption capability (E in last field), ignore without and -# other records like ^tru: -#/^pub:.*E[^:]*:$/ ! b IGNORE - -# extract uids and convert address to mutt hook and print -:EXTRACT -# ignore non-uid or no address -/^uid:[^der]:[^<]*<\([^:>]\+@[^:>]\+\)>/ ! b NUSKIP -# extract address -# somehow the colon part after \)> is needed to not produce a trailing : in output -# sed buffer problem? -s/^uid:[^der]:[^<]*<\([^:>]\+@[^:>]\+\)>[^:]*:/\1/ -# escape dot meta characters, with escaped backslash for mutt -s/\./\\\\./g -# print hook -s/\(.*\)/send-hook "!~l ~t \1" "set crypt_autoencrypt"/p -:NUSKIP -n -/^pub:/ b START -b EXTRACT - -# ignore entire key with uid/sub/... until next pub is encountered -:IGNORE -n -/^pub:/ b START -b IGNORE - -' | egrep -v 'WhatYouDontWantInThisList@example\\\\\.org' | sort -u > ${output} -# Note the triple escaped backslash! diff --git a/bin/gpg2mutt b/bin/gpg2mutt new file mode 100755 index 0000000..d9db27b --- /dev/null +++ b/bin/gpg2mutt @@ -0,0 +1,69 @@ +#!/bin/bash +# ~/.mutt/generate_pgp_auto +# Generate mutt pgp_auto* send-hooks from gpg pubring. +# Redirect output to file and source that in muttrc. +# Add the global hook _before_ sourcing the list: +# send-hook . 'reset pgp_autoencrypt' +# -=*# created by erAck #*=- CopyLeft Eike Rathke 2008-01-08T01:36+0100 + +# At least in an UTF-8 environment sed gets confused by 8-bit characters in +# real names and doesn't match the address anymore, an empty LANG variable +# works around. +LANG= + +# Output file +output="$HOME/.mutt/gpg-auto.rc" + +# if the file exists, delete it +if [ -f "${output}" ]; then + rm "${output}" +fi + +# 2nd gpg colon field: +# d := disabled (deprecated - use the 'D' in field 12 instead) +# e := expired +# r := revoked + +# Note that the following lines are part of the sed script passed by the shell +# and may not contain the ' character! Hence the double backslash in mail +# addresses to escape the regex . dot meta character for Mutt. +#gpg --list-keys --with-colons --fixed-list-mode --no-secmem-warning +gpg --list-keys --with-colons --fixed-list-mode --no-secmem-warning | sed -ne ' + +:START + +# ignore d|e|r keys +/^pub:[der]:/ b IGNORE + +# ignore disabled keys, D in last field (12) +/^pub:.*D[^:]*:$/ b IGNORE + +# take keys with encryption capability (E in last field), ignore without and +# other records like ^tru: +#/^pub:.*E[^:]*:$/ ! b IGNORE + +# extract uids and convert address to mutt hook and print +:EXTRACT +# ignore non-uid or no address +/^uid:[^der]:[^<]*<\([^:>]\+@[^:>]\+\)>/ ! b NUSKIP +# extract address +# somehow the colon part after \)> is needed to not produce a trailing : in output +# sed buffer problem? +s/^uid:[^der]:[^<]*<\([^:>]\+@[^:>]\+\)>[^:]*:/\1/ +# escape dot meta characters, with escaped backslash for mutt +s/\./\\\\./g +# print hook +s/\(.*\)/send-hook "!~l ~t \1" "set crypt_autoencrypt"/p +:NUSKIP +n +/^pub:/ b START +b EXTRACT + +# ignore entire key with uid/sub/... until next pub is encountered +:IGNORE +n +/^pub:/ b START +b IGNORE + +' | egrep -v 'WhatYouDontWantInThisList@example\\\\\.org' | sort -u > ${output} +# Note the triple escaped backslash! -- cgit v1.2.3-70-g09d2