From: Leonardo Bras <leobras.c@gmail.com>
To: git@vger.kernel.org
Cc: Leonardo Bras <leobras.c@gmail.com>,
Jan Viktorin <viktorin@rehivetech.com>,
Michal Nazarewicz <mina86@mina86.com>
Subject: [PATCH] send-email: Defines smtpPassCmd config option
Date: Fri, 1 May 2020 07:51:31 -0300 [thread overview]
Message-ID: <20200501105131.297457-1-leobras.c@gmail.com> (raw)
Defines smtpPassCmd config option, to allow the user to pass a command
that is used to output the password.
Its useful for users that store the password encrypted on disk, and
want a easy way to send-email without typing it again.
Signed-off-by: Leonardo Bras <leobras.c@gmail.com>
---
Documentation/config/sendemail.txt | 1 +
Documentation/git-send-email.txt | 5 +++--
git-send-email.perl | 11 +++++++++++
3 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/Documentation/config/sendemail.txt b/Documentation/config/sendemail.txt
index 0006faf800..f71e58862d 100644
--- a/Documentation/config/sendemail.txt
+++ b/Documentation/config/sendemail.txt
@@ -34,6 +34,7 @@ sendemail.from::
sendemail.multiEdit::
sendemail.signedoffbycc::
sendemail.smtpPass::
+sendemail.smtpPassCmd::
sendemail.suppresscc::
sendemail.suppressFrom::
sendemail.to::
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index 0a69810147..8e9da5ed64 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -203,8 +203,9 @@ independently of `--smtp-user`
Furthermore, passwords need not be specified in configuration files
or on the command line. If a username has been specified (with
`--smtp-user` or a `sendemail.smtpUser`), but no password has been
-specified (with `--smtp-pass` or `sendemail.smtpPass`), then
-a password is obtained using 'git-credential'.
+specified (with `--smtp-pass` or `sendemail.smtpPass`, or as an output
+of `sendemail.smtpPassCmd`), then a password is obtained using
+'git-credential'.
--no-smtp-auth::
Disable SMTP authentication. Short hand for `--smtp-auth=none`
diff --git a/git-send-email.perl b/git-send-email.perl
index dc95656f75..d953ebb058 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -170,6 +170,7 @@ sub format_2822_time {
my $smtp;
my $auth;
my $num_sent = 0;
+my $smtp_authpass_cmd;
# Regexes for RFC 2047 productions.
my $re_token = qr/[^][()<>@,;:\\"\/?.= \000-\037\177-\377]+/;
@@ -271,6 +272,7 @@ sub do_edit {
"smtpserveroption" => \@smtp_server_options,
"smtpuser" => \$smtp_authuser,
"smtppass" => \$smtp_authpass,
+ "smtppasscmd" => \$smtp_authpass_cmd,
"smtpdomain" => \$smtp_domain,
"smtpauth" => \$smtp_auth,
"smtpbatchsize" => \$batch_size,
@@ -1303,6 +1305,15 @@ sub smtp_auth_maybe {
die "invalid smtp auth: '${smtp_auth}'";
}
+ # Check password command if password was not provided.
+ if(!defined $smtp_authpass && defined $smtp_authpass_cmd){
+ open my $pass, "$smtp_authpass_cmd |"
+ or die sprintf(__("Could not execute '%s'"), $smtp_authpass_cmd);
+ #Cut newline char
+ $smtp_authpass = substr <$pass>, 0, -1;
+ close($pass);
+ }
+
# TODO: Authentication may fail not because credentials were
# invalid but due to other reasons, in which we should not
# reject credentials.
--
2.25.4
next reply other threads:[~2020-05-01 10:52 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-01 10:51 Leonardo Bras [this message]
2020-05-01 12:53 ` [PATCH] send-email: Defines smtpPassCmd config option Carlo Marcelo Arenas Belón
2020-05-01 15:50 ` Junio C Hamano
2020-05-01 22:27 ` Taylor Blau
2020-05-01 23:59 ` brian m. carlson
2020-05-03 9:43 ` Jeff King
2020-05-03 16:27 ` brian m. carlson
2020-05-03 23:48 ` Carlo Marcelo Arenas Belón
2020-05-04 19:49 ` Leonardo Bras
2020-05-04 20:35 ` Jeff King
2020-05-04 21:29 ` Leonardo Bras
2020-05-04 19:09 ` Leonardo Bras
2020-05-04 19:02 ` Leonardo Bras
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200501105131.297457-1-leobras.c@gmail.com \
--to=leobras.c@gmail.com \
--cc=git@vger.kernel.org \
--cc=mina86@mina86.com \
--cc=viktorin@rehivetech.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.