diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2009-12-07 01:58:21 +0100 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2009-12-07 01:58:21 +0100 |
commit | 45e205f4a6cf38ff0f8ade027a7b6a6c7376a00c (patch) | |
tree | af2f9c3b8792bf1c58ab2e5b156be7413d40f4e2 /tools/git-notify | |
parent | 78fc8f4909750407585990aa10522d9510a69804 (diff) | |
download | monitoring-plugins-45e205f4a6cf38ff0f8ade027a7b6a6c7376a00c.tar.gz |
git-notify: Pipe e-mails directly to sendmail(8)
Use sendmail(8) instead of mail(1) in order to be able to set the
"Content-Type" header field on systems where the available mail(1)
command doesn't allow for setting it. This makes the "-H" flag (cf.
commit 71350c5a) unnecessary.
Diffstat (limited to 'tools/git-notify')
-rwxr-xr-x | tools/git-notify | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/tools/git-notify b/tools/git-notify index d8528234..17093aab 100755 --- a/tools/git-notify +++ b/tools/git-notify | |||
@@ -18,7 +18,6 @@ | |||
18 | # -A Omit the author name from the mail subject | 18 | # -A Omit the author name from the mail subject |
19 | # -C Show committer in the body if different from the author | 19 | # -C Show committer in the body if different from the author |
20 | # -c name Send CIA notifications under specified project name | 20 | # -c name Send CIA notifications under specified project name |
21 | # -H The mail(1) utility doesn't accept headers via "-a" | ||
22 | # -m addr Send mail notifications to specified address | 21 | # -m addr Send mail notifications to specified address |
23 | # -n max Set max number of individual mails to send | 22 | # -n max Set max number of individual mails to send |
24 | # -r name Set the git repository name | 23 | # -r name Set the git repository name |
@@ -44,8 +43,8 @@ sub get_repos_name(); | |||
44 | 43 | ||
45 | # some parameters you may want to change | 44 | # some parameters you may want to change |
46 | 45 | ||
47 | # set this to something that takes "-s" | 46 | # sendmail's pathname |
48 | my $mailer = "/usr/bin/mail"; | 47 | my $sendmail = "/usr/sbin/sendmail"; |
49 | 48 | ||
50 | # CIA notification address | 49 | # CIA notification address |
51 | my $cia_address = "cia\@cia.vc"; | 50 | my $cia_address = "cia\@cia.vc"; |
@@ -55,9 +54,6 @@ my $debug = 0; | |||
55 | 54 | ||
56 | # configuration parameters | 55 | # configuration parameters |
57 | 56 | ||
58 | # the $mailer doesn't accept headers via "-a" (can be set with the -H option) | ||
59 | my $legacy_mail = git_config( "notify.legacymail" ); | ||
60 | |||
61 | # omit the author from the mail subject (can be set with the -A option) | 57 | # omit the author from the mail subject (can be set with the -A option) |
62 | my $omit_author = git_config( "notify.omitauthor" ); | 58 | my $omit_author = git_config( "notify.omitauthor" ); |
63 | 59 | ||
@@ -112,7 +108,6 @@ sub usage() | |||
112 | print " -A Omit the author name from the mail subject\n"; | 108 | print " -A Omit the author name from the mail subject\n"; |
113 | print " -C Show committer in the body if different from the author\n"; | 109 | print " -C Show committer in the body if different from the author\n"; |
114 | print " -c name Send CIA notifications under specified project name\n"; | 110 | print " -c name Send CIA notifications under specified project name\n"; |
115 | print " -H The mail(1) utility doesn't accept headers via `-a'\n"; | ||
116 | print " -m addr Send mail notifications to specified address\n"; | 111 | print " -m addr Send mail notifications to specified address\n"; |
117 | print " -n max Set max number of individual mails to send\n"; | 112 | print " -n max Set max number of individual mails to send\n"; |
118 | print " -r name Set the git repository name\n"; | 113 | print " -r name Set the git repository name\n"; |
@@ -301,7 +296,6 @@ sub parse_options() | |||
301 | elsif ($arg eq '-A') { $omit_author = 1; } | 296 | elsif ($arg eq '-A') { $omit_author = 1; } |
302 | elsif ($arg eq '-C') { $show_committer = 1; } | 297 | elsif ($arg eq '-C') { $show_committer = 1; } |
303 | elsif ($arg eq '-c') { $cia_project_name = shift @ARGV; } | 298 | elsif ($arg eq '-c') { $cia_project_name = shift @ARGV; } |
304 | elsif ($arg eq '-H') { $legacy_mail = 1; } | ||
305 | elsif ($arg eq '-m') { $commitlist_address = shift @ARGV; } | 299 | elsif ($arg eq '-m') { $commitlist_address = shift @ARGV; } |
306 | elsif ($arg eq '-n') { $max_individual_notices = shift @ARGV; } | 300 | elsif ($arg eq '-n') { $max_individual_notices = shift @ARGV; } |
307 | elsif ($arg eq '-r') { $repos_name = shift @ARGV; } | 301 | elsif ($arg eq '-r') { $repos_name = shift @ARGV; } |
@@ -330,14 +324,13 @@ sub mail_notification($$$@) | |||
330 | $subject = "[$repos_name] $subject" if ($emit_repo and $name ne $cia_address); | 324 | $subject = "[$repos_name] $subject" if ($emit_repo and $name ne $cia_address); |
331 | $subject = encode("MIME-Q",$subject); | 325 | $subject = encode("MIME-Q",$subject); |
332 | 326 | ||
327 | my @header = ("To: $name", "Subject: $subject", "Content-Type: $content_type"); | ||
328 | |||
333 | if ($debug) | 329 | if ($debug) |
334 | { | 330 | { |
335 | binmode STDOUT, ":utf8"; | 331 | binmode STDOUT, ":utf8"; |
336 | print "---------------------\n"; | 332 | print "---------------------\n"; |
337 | print "To: $name\n"; | 333 | print join("\n", @header), "\n\n", join("\n", @text), "\n"; |
338 | print "Subject: $subject\n"; | ||
339 | print "Content-Type: $content_type\n"; | ||
340 | print "\n", join("\n", @text), "\n"; | ||
341 | } | 334 | } |
342 | else | 335 | else |
343 | { | 336 | { |
@@ -345,17 +338,11 @@ sub mail_notification($$$@) | |||
345 | return unless defined $pid; | 338 | return unless defined $pid; |
346 | if (!$pid) | 339 | if (!$pid) |
347 | { | 340 | { |
348 | my @mailer_options = ( "-s", $subject ); | 341 | exec $sendmail, "-t", "-oi", "-oem" or die "Cannot exec $sendmail"; |
349 | |||
350 | unless ($legacy_mail) | ||
351 | { | ||
352 | push @mailer_options, "-a", "Content-Type: $content_type"; | ||
353 | } | ||
354 | exec $mailer, @mailer_options, $name or die "Cannot exec $mailer"; | ||
355 | } | 342 | } |
356 | binmode MAIL, ":utf8"; | 343 | binmode MAIL, ":utf8"; |
357 | print MAIL join("\n", @text), "\n"; | 344 | print MAIL join("\n", @header), "\n\n", join("\n", @text), "\n"; |
358 | close MAIL or warn $! ? "Cannot execute $mailer: $!" : "$mailer exited with status: $?"; | 345 | close MAIL or warn $! ? "Cannot execute $sendmail: $!" : "$sendmail exited with status: $?"; |
359 | } | 346 | } |
360 | } | 347 | } |
361 | 348 | ||