X-Git-Url: http://git.sthu.org/?a=blobdiff_plain;f=caff%2Fcaff;h=2fc095df8e093460da63584fc4a7bbccdd6179f1;hb=88e91c7dab59944a9463696712fbfee3602bf7fa;hp=47c4ec89802c7211bfe5f46f18ab63d951fc3dd9;hpb=ff38a561c7c7346e088faf334083daecae580a86;p=pgp-tools.git diff --git a/caff/caff b/caff/caff index 47c4ec8..2fc095d 100755 --- a/caff/caff +++ b/caff/caff @@ -4,7 +4,7 @@ # $Id$ # # Copyright (c) 2004, 2005 Peter Palfrader -# Copyright (c) 2005 Christoph Berg +# Copyright (c) 2005, 2006 Christoph Berg # # All rights reserved. # @@ -203,6 +203,10 @@ This is useful for offline signing. Default: B<0>. Don't export UIDs by default, on which your latest signature is older than this age. Default: B<24*60*60> (i.e. one day). +=item B [string] + +Select the key that is used for signing, in case you have more than one key. + =head2 Mail settings =item B [boolean] @@ -245,6 +249,23 @@ Add a Reply-To: header to messages sent. Default: none. Address to send blind carbon copies to when sending mail. Default: none. +=item B [array] + +Parameters to pass to Mail::Mailer. +This could for example be + + $CONFIG{mailer-send} = [ 'smtp', Server => 'mail.server', Auth => ['user', 'pass'] ] + +to use the perl SMTP client or + + $CONFIG{mailer-send} = [ 'sendmail', '-o8' ] + +to pass arguments to the sendmail program. +For more information run C<< perldoc Mail::Mailer >>. +Setting this option is strongly discouraged. Fix your local MTA +instead. +Default: none. + =back =head1 AUTHORS @@ -286,6 +307,10 @@ my $VERSION = "0.0.0.$REVISION_NUMER"; +sub mywarn($) { + my ($line) = @_; + print "[WARN] $line\n"; +}; sub notice($) { my ($line) = @_; print "[NOTICE] $line\n"; @@ -313,9 +338,12 @@ sub generate_config() { my $gecos = defined $ENV{'LOGNAME'} ? (getpwnam($ENV{LOGNAME}))[6] : undef; my $email; my @keys; - my $hostname = `hostname -f`; + # BSD does not have hostname -f, so we try without -f first + my $hostname = `hostname`; + $hostname = `hostname -f` unless $hostname =~ /\./; chomp $hostname; my ($Cgecos,$Cemail,$Ckeys) = ('','',''); + if (defined $gecos) { $gecos =~ s/,.*//; @@ -426,6 +454,8 @@ sub load_config() { $CONFIG{'no-download'} = 0 unless defined $CONFIG{'no-download'}; $CONFIG{'no-sign'} = 0 unless defined $CONFIG{'no-sign'}; $CONFIG{'key-files'} = () unless defined $CONFIG{'key-files'}; + $CONFIG{'mailer-send'} = [] unless defined $CONFIG{'mailer-send'}; + die ("$PROGRAM_NAME: mailer-send is not an array ref in $config.\n") unless (ref $CONFIG{'mailer-send'} eq 'ARRAY'); $CONFIG{'mail-template'} = <<'EOM' unless defined $CONFIG{'mail-template'}; Hi, @@ -609,7 +639,7 @@ my $KEYEDIT_KEYEDIT_OR_DELSIG_PROMPT = '^\[GNUPG:\] (GET_BOOL keyedit.delsig|GET my $KEYEDIT_DELSUBKEY_PROMPT = '^\[GNUPG:\] GET_BOOL keyedit.remove.subkey'; load_config; -my $USER_AGENT = "caff $VERSION - (c) 2004, 2005 Peter Palfrader et al."; +my $USER_AGENT = "caff $VERSION - http://pgp-tools.alioth.debian.org/"; my $KEYSBASE = $CONFIG{'caffhome'}.'/keys'; my $GNUPGHOME = $CONFIG{'caffhome'}.'/gnupghome'; @@ -624,7 +654,7 @@ my $DATE_STRING = sprintf("%04d-%02d-%02d", $year+1900, $mon+1, $mday); sub version($) { my ($fd) = @_; - print $fd "caff $VERSION - (c) 2004, 2005 Peter Palfrader et al.\n"; + print $fd "caff $VERSION - (c) 2004, 2005, 2006 Peter Palfrader et al.\n"; }; sub usage($$) { @@ -770,7 +800,8 @@ sub send_mail($$$@) { $message_entity->head->add("Reply-To", $CONFIG{'reply-to'}) if defined $CONFIG{'reply-to'}; $message_entity->head->add("Bcc", $CONFIG{'bcc'}) if defined $CONFIG{'bcc'}; $message_entity->head->add("User-Agent", $USER_AGENT); - $message_entity->send(); + mywarn("You have set arguments to pass to Mail::Mailer. Better fix your MTA. (Also, Mail::Mailer's error reporting is non existant, so it won't tell you when it doesn't work.)") if (scalar @{$CONFIG{'mailer-send'}} > 0); + $message_entity->send(@{$CONFIG{'mailer-send'}}); $message_entity->stringify(); }; @@ -864,13 +895,18 @@ if ($params->{'version'}) { }; usage(\*STDERR, 1) unless scalar @ARGV >= 1; +$CONFIG{'local-user'} = $params->{'local-user'} if defined $params->{'local-user'}; +$CONFIG{'no-download'} = $params->{'no-download'} if defined $params->{'no-download'}; +$CONFIG{'no-mail'} = $params->{'no-mail'} if defined $params->{'no-mail'}; +$CONFIG{'mail'} = $params->{'mail'} if defined $params->{'mail'}; +$CONFIG{'no-sign'} = $params->{'no-sign'} if defined $params->{'no-sign'}; +push @{$CONFIG{'key-files'}}, @{$params->{'key-files'}} if defined $params->{'key-files'}; - -if ($params->{'local-user'}) { - $USER = $params->{'local-user'}; +if ($CONFIG{'local-user'}) { + $USER = $CONFIG{'local-user'}; $USER =~ s/^0x//i; unless ($USER =~ /^([A-F0-9]{8}|[A-F0-9]{16}|[A-F0-9]{40})$/i) { - print STDERR "-u $USER is not a keyid.\n"; + print STDERR "Local-user $USER is not a keyid.\n"; usage(\*STDERR, 1); }; $USER = uc($USER); @@ -889,13 +925,6 @@ for my $keyid (@ARGV) { push @KEYIDS, uc($keyid); }; -$CONFIG{'no-download'} = $params->{'no-download'} if defined $params->{'no-download'}; -$CONFIG{'no-mail'} = $params->{'no-mail'} if defined $params->{'no-mail'}; -$CONFIG{'mail'} = $params->{'mail'} if defined $params->{'mail'}; -$CONFIG{'no-sign'} = $params->{'no-sign'} if defined $params->{'no-sign'}; -push @{$CONFIG{'key-files'}}, @{$params->{'key-files'}} if defined $params->{'key-files'}; - - ################# # import own keys ################# @@ -1002,6 +1031,12 @@ if ($CONFIG{'no-download'}) { if (scalar %local_keyids) { notice ("Import failed for: ". (join ' ', keys %local_keyids)."." . ($had_v3_keys ? " (Or maybe it's one of those ugly v3 keys?)" : "")); exit 1 unless ask ("Some keys could not be imported - continue anyway?", 0); + if (scalar %local_keyids == 1) { + mywarn("Assuming ". (join ' ', keys %local_keyids)." is a fine keyid."); + } else { + mywarn("Assuming ". (join ' ', keys %local_keyids)." are fine keyids."); + }; + push @keyids_ok, keys %local_keyids; } };