Added service protection. Just create a max. of recipients/users.
This commit is contained in:
parent
1c941ec317
commit
d5033b99bd
2 changed files with 41 additions and 0 deletions
|
@ -87,6 +87,8 @@ module Channel::Filter::IdentifySender
|
|||
|
||||
# create to and cc user
|
||||
def self.create_recipients(mail)
|
||||
max_count = 40
|
||||
current_count = 0
|
||||
['raw-to', 'raw-cc'].each { |item|
|
||||
next if !mail[item.to_sym]
|
||||
begin
|
||||
|
@ -99,6 +101,8 @@ module Channel::Filter::IdentifySender
|
|||
lastname: '',
|
||||
email: address_data.address,
|
||||
)
|
||||
current_count += 1
|
||||
return false if current_count == max_count
|
||||
}
|
||||
rescue => e
|
||||
# parse not parseable fields by mail gem like
|
||||
|
@ -122,6 +126,8 @@ module Channel::Filter::IdentifySender
|
|||
lastname: '',
|
||||
email: address,
|
||||
)
|
||||
current_count += 1
|
||||
return false if current_count == max_count
|
||||
}
|
||||
end
|
||||
}
|
||||
|
|
35
test/unit/email_process_identify_sender_max_test.rb
Normal file
35
test/unit/email_process_identify_sender_max_test.rb
Normal file
|
@ -0,0 +1,35 @@
|
|||
# encoding: utf-8
|
||||
require 'test_helper'
|
||||
|
||||
class EmailProcessIdentifySenderMax < ActiveSupport::TestCase
|
||||
|
||||
test 'text max created recipients per email' do
|
||||
current_users = User.count
|
||||
email_raw_string = "From: customer@example.com
|
||||
To: #{generate_recipient(22)}
|
||||
Cc: #{generate_recipient(22)}
|
||||
Subject: test max sender identify
|
||||
|
||||
Some Text"
|
||||
|
||||
ticket_p, article_p, user_p, mail = Channel::EmailParser.new.process({}, email_raw_string)
|
||||
ticket = Ticket.find(ticket_p.id)
|
||||
assert_equal('test max sender identify', ticket.title)
|
||||
|
||||
assert_equal(current_users + 40, User.count)
|
||||
end
|
||||
|
||||
def generate_recipient(count)
|
||||
recipients = ''
|
||||
count.times.each do
|
||||
if recipients.present?
|
||||
recipients += ', '
|
||||
end
|
||||
domain = "#{Time.zone.now.to_i}-#{rand(999_999_999)}.example.com"
|
||||
email = "#{Time.zone.now.to_i}-#{rand(999_999_999)}@#{domain}"
|
||||
recipients += email
|
||||
end
|
||||
recipients
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in a new issue