commit 5081ed4ee160ac612c2b11bff8d259c943cf1e42
parent 7039653b8d8989977e8c6bafc8e17e7b6e1922c2
Author: Ben Walton <bwalton@artsci.utoronto.ca>
Date: Sun, 7 Jun 2009 19:44:37 -0400
Bounce Message Hook
Determine the command used to bounce a message based on a Hook instead
of a configuration option. Instead of writing an external script that
can send the message properly based on the recipient addresses, rely
on a hook that can return the command based on the From header in the
mail being bounced as well as the intended recipients. This is more
in line with the sup philosophy.
The default is still to strip any -t from the sendmail command of the
default account.
Signed-off-by: Ben Walton
Diffstat:
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/lib/sup.rb b/lib/sup.rb
@@ -207,7 +207,6 @@ else
:confirm_top_posting => true,
:discard_snippets_from_encrypted_messages => false,
:default_attachment_save_dir => "",
- :bounce_sendmail => "",
}
begin
FileUtils.mkdir_p Redwood::BASE_DIR
diff --git a/lib/sup/modes/thread-view-mode.rb b/lib/sup/modes/thread-view-mode.rb
@@ -24,6 +24,18 @@ Return value:
None. The variable 'headers' should be modified in place.
EOS
+ HookManager.register "bounce-command", <<EOS
+Determines the command used to bounce a message.
+Variables:
+ from: The From header of the message being bounced
+ (eg: likely _not_ your address).
+ to: The addresses you asked the message to be bounced to as an array.
+Return value:
+ A string representing the command to pipe the mail into. This
+ should include the entire command except for the destination addresses,
+ which will be appended by sup.
+EOS
+
register_keymap do |k|
k.add :toggle_detailed_header, "Toggle detailed header", 'h'
k.add :show_header, "Show full message header", 'H'
@@ -184,9 +196,9 @@ EOS
end
end
- cmd = case $config[:bounce_sendmail]
+ cmd = case HookManager.run "bounce-command", :from => m.from, :to => to
when nil, /^$/ then defcmd
- else $config[:bounce_sendmail]
+ else hookcmd
end + ' ' + to.map { |t| t.email }.join(' ')
bt = to.size > 1 ? "#{to.size} recipients" : to.to_s