aboutsummaryrefslogtreecommitdiffstats
path: root/lib/mail_handler/backends/mail_extensions.rb
diff options
context:
space:
mode:
authorMatthew Landauer <matthew@openaustralia.org>2013-03-19 11:41:19 +1100
committerMatthew Landauer <matthew@openaustralia.org>2013-03-19 13:59:10 +1100
commit5738367d0f38627ba0227758be0433af23faefbc (patch)
treedfe8b1340fc4a7c2ca2cd8216048dd12db4cf5b5 /lib/mail_handler/backends/mail_extensions.rb
parente1c8699be581a72dbe157f6c5d8b4517aec4d7dc (diff)
Rails security update
The rails upgrade also forces a mail gem upgrade. To make things work again we need to remove part of the monkeypatched backporting of encoding fixes.
Diffstat (limited to 'lib/mail_handler/backends/mail_extensions.rb')
-rw-r--r--lib/mail_handler/backends/mail_extensions.rb67
1 files changed, 0 insertions, 67 deletions
diff --git a/lib/mail_handler/backends/mail_extensions.rb b/lib/mail_handler/backends/mail_extensions.rb
index 611b44c4c..d25012e39 100644
--- a/lib/mail_handler/backends/mail_extensions.rb
+++ b/lib/mail_handler/backends/mail_extensions.rb
@@ -46,28 +46,6 @@ module Mail
self
end
-
- # HACK: Backported from Mail 2.5 for Ruby 1.8 support
- # Can be removed when we no longer support Ruby 1.8
- def to_yaml(opts = {})
- hash = {}
- hash['headers'] = {}
- header.fields.each do |field|
- hash['headers'][field.name] = field.value
- end
- hash['delivery_handler'] = delivery_handler.to_s if delivery_handler
- hash['transport_encoding'] = transport_encoding.to_s
- special_variables = [:@header, :@delivery_handler, :@transport_encoding]
- if multipart?
- hash['multipart_body'] = []
- body.parts.map { |part| hash['multipart_body'] << part.to_yaml }
- special_variables.push(:@body, :@text_part, :@html_part)
- end
- (instance_variables.map(&:to_sym) - special_variables).each do |var|
- hash[var.to_s] = instance_variable_get(var)
- end
- hash.to_yaml(opts)
- end
end
# A patched version of the parameter hash that handles nil values without throwing
@@ -124,49 +102,4 @@ module Mail
end
end
end
-
- # HACK: Backport encoding fixes for Ruby 1.9 from Mail 2.5
- # Can be removed when Rails relies on Mail > 2.5
- class Ruby19
- def Ruby19.b_value_decode(str)
- match = str.match(/\=\?(.+)?\?[Bb]\?(.+)?\?\=/m)
- if match
- encoding = match[1]
- str = Ruby19.decode_base64(match[2])
- str.force_encoding(fix_encoding(encoding))
- end
- decoded = str.encode("utf-8", :invalid => :replace, :replace => "")
- decoded.valid_encoding? ? decoded : decoded.encode("utf-16le", :invalid => :replace, :replace => "").encode("utf-8")
- end
-
- def Ruby19.q_value_decode(str)
- match = str.match(/\=\?(.+)?\?[Qq]\?(.+)?\?\=/m)
- if match
- encoding = match[1]
- str = Encodings::QuotedPrintable.decode(match[2])
- str.force_encoding(fix_encoding(encoding))
- end
- decoded = str.encode("utf-8", :invalid => :replace, :replace => "")
- decoded.valid_encoding? ? decoded : decoded.encode("utf-16le", :invalid => :replace, :replace => "").encode("utf-8")
- end
-
- # mails somtimes includes invalid encodings like iso885915 or utf8 so we transform them to iso885915 or utf8
- # TODO: add this as a test somewhere
- # Encoding.list.map{|e| [e.to_s.upcase==fix_encoding(e.to_s.downcase.gsub("-", "")), e.to_s] }.select {|a,b| !b}
- # Encoding.list.map{|e| [e.to_s==fix_encoding(e.to_s), e.to_s] }.select {|a,b| !b}
- def Ruby19.fix_encoding(encoding)
- case encoding
- # ISO-8859-15, ISO-2022-JP and alike
- when /iso-?(\d{4})-?(\w{1,2})/i then return "ISO-#{$1}-#{$2}"
- # "ISO-2022-JP-KDDI" and alike
- when /iso-?(\d{4})-?(\w{1,2})-?(\w*)/i then return "ISO-#{$1}-#{$2}-#{$3}"
- # UTF-8, UTF-32BE and alike
- when /utf-?(\d{1,2})?(\w{1,2})/i then return "UTF-#{$1}#{$2}"
- # Windows-1252 and alike
- when /Windows-?(.*)/i then return "Windows-#{$1}"
- #more aliases to be added if needed
- else return encoding
- end
- end
- end
end