aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfrancis <francis>2008-05-05 22:48:43 +0000
committerfrancis <francis>2008-05-05 22:48:43 +0000
commita32016b466d63ca71542e38af058f40c0c1b6d9f (patch)
tree5f50168e6cee4521c624a53027cb4d0f9c0c19a7
parentd93aadb057c1a281cfde996d70009ee7e26660ae (diff)
Mask emails from Word docs etc.
-rw-r--r--app/controllers/request_controller.rb7
-rw-r--r--app/models/incoming_message.rb13
2 files changed, 18 insertions, 2 deletions
diff --git a/app/controllers/request_controller.rb b/app/controllers/request_controller.rb
index b169b7188..db53631c4 100644
--- a/app/controllers/request_controller.rb
+++ b/app/controllers/request_controller.rb
@@ -4,7 +4,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: request_controller.rb,v 1.77 2008-04-30 00:46:00 francis Exp $
+# $Id: request_controller.rb,v 1.78 2008-05-05 22:48:43 francis Exp $
class RequestController < ApplicationController
@@ -305,6 +305,11 @@ class RequestController < ApplicationController
@part_number = params[:part].to_i
@attachment = IncomingMessage.get_attachment_by_url_part_number(@incoming_message.get_attachments_for_display, @part_number)
+
+ # Prevent spam to magic request address.
+ # XXX Bit dodgy modifying a binary like this but hey. Maybe only do for some mime types?
+ @attachment.body = @incoming_message.binary_mask_special_emails(@attachment.body)
+
response.content_type = 'application/octet-stream'
if !@attachment.content_type.nil?
response.content_type = @attachment.content_type
diff --git a/app/models/incoming_message.rb b/app/models/incoming_message.rb
index efec2885a..e2d0155ee 100644
--- a/app/models/incoming_message.rb
+++ b/app/models/incoming_message.rb
@@ -17,7 +17,7 @@
# Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved.
# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
#
-# $Id: incoming_message.rb,v 1.92 2008-04-30 01:19:53 francis Exp $
+# $Id: incoming_message.rb,v 1.93 2008-05-05 22:48:43 francis Exp $
# TODO
# Move some of the (e.g. quoting) functions here into rblib, as they feel
@@ -174,6 +174,17 @@ class IncomingMessage < ActiveRecord::Base
return text
end
+ # Replaces emails we know about in (possibly binary data) with equal length alternative ones.
+ def binary_mask_special_emails(text)
+ if not self.info_request.public_body.request_email.empty?
+ text = text.gsub(self.info_request.public_body.request_email, 'X' * self.info_request.public_body.request_email.size)
+ end
+ text = text.gsub(self.info_request.incoming_email, 'X' * self.info_request.incoming_email.size)
+ text = text.gsub(MySociety::Config.get("CONTACT_EMAIL", 'contact@localhost'), 'X' * MySociety::Config.get("CONTACT_EMAIL", 'contact@localhost').size)
+ text = text.gsub('Welwyn', "XXXXXX")
+ return text
+ end
+
# Remove email addresses from text (mainly to reduce spam - particularly
# we want to stop spam to our own magic archiving request-* addresses,
# which would otherwise appear a lot in bounce messages and reply quotes etc.)