diff options
Diffstat (limited to 'keyserver/gpg2keys_mailto.in')
-rwxr-xr-x | keyserver/gpg2keys_mailto.in | 42 |
1 files changed, 15 insertions, 27 deletions
diff --git a/keyserver/gpg2keys_mailto.in b/keyserver/gpg2keys_mailto.in index 4e5d6bc30..959f0e7ca 100755 --- a/keyserver/gpg2keys_mailto.in +++ b/keyserver/gpg2keys_mailto.in @@ -52,10 +52,6 @@ if(@ARGV) open(STDIN,$ARGV[0]) || die "Can't open input file $ARGV[0]\n"; } -($login,$name)=(getpwuid($<))[0,6]; - -$from="$name <$login>"; - while(<STDIN>) { last if($_ eq "\n"); @@ -85,9 +81,24 @@ while(<STDIN>) { $verbose--; } + elsif($1=~/^mail-from=(.+)$/i) + { + $from=$1; + } + elsif($1=~/^no-mail-from$/i) + { + undef $from; + } + } } +if(!defined($from)) +{ + ($login,$name)=(getpwuid($<))[0,6]; + $from="$name <$login>"; +} + $program="(unknown)" if(!defined($program)); if(!defined($address)) @@ -96,29 +107,6 @@ if(!defined($address)) exit(1); } -# decode $address - -($address,$args)=split(/\?/,$address); - -if(defined($args)) -{ - @pairs = split(/&/, $args); - foreach $pair (@pairs) - { - ($hdr, $val) = split(/=/, $pair); - $hdr =~ tr/+/ /; - $hdr =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; - $val =~ tr/+/ /; - $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; -# we only handle "from" right now - if($hdr=~/^from$/i) - { - $from=$val; - last; - } - } -} - while(<STDIN>) { last if($_ eq "\n"); |