1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/lib/tasks/ingress.rake

47 lines
1.4 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
namespace :action_mailbox do
namespace :ingress do
desc "Pipe an inbound email from STDIN to the Postfix ingress at the given URL"
task :postfix do
require "active_support"
require "active_support/core_ext/object/blank"
require "http"
url, password = ENV.values_at("URL", "INGRESS_PASSWORD")
if url.blank? || password.blank?
puts "4.3.5 URL and INGRESS_PASSWORD are required"
exit 1
end
begin
2018-11-05 14:04:05 -05:00
response = HTTP.basic_auth(user: "actionmailbox", pass: password)
.timeout(connect: 1, write: 10, read: 10)
.post(url, body: STDIN.read,
headers: { "Content-Type" => "message/rfc822", "User-Agent" => ENV.fetch("USER_AGENT", "Postfix") })
2018-11-05 14:18:03 -05:00
case
when response.status.success?
puts "2.0.0 HTTP #{response.status}"
2018-11-05 14:18:03 -05:00
when response.status.unauthorized?
puts "4.7.0 HTTP #{response.status}"
exit 1
2018-11-05 14:18:03 -05:00
when response.status.unsupported_media_type?
puts "5.6.1 HTTP #{response.status}"
exit 1
else
puts "4.0.0 HTTP #{response.status}"
exit 1
end
rescue HTTP::ConnectionError => error
puts "4.4.2 Error connecting to the Postfix ingress: #{error.message}"
exit 1
rescue HTTP::TimeoutError
puts "4.4.7 Timed out piping to the Postfix ingress"
exit 1
end
end
end
end