Moved postmaster filter options to config.
This commit is contained in:
parent
6f56399af2
commit
1fd36cfc6a
3 changed files with 120 additions and 14 deletions
|
@ -346,16 +346,10 @@ retrns
|
||||||
mail = parse(msg)
|
mail = parse(msg)
|
||||||
|
|
||||||
# run postmaster pre filter
|
# run postmaster pre filter
|
||||||
filters = {
|
filters = {}
|
||||||
'0010' => Channel::Filter::Trusted,
|
Setting.where(area: 'Postmaster::PreFilter').each {|setting|
|
||||||
'0020' => Channel::Filter::AutoResponseCheck,
|
filters[setting.name] = Kernel.const_get(Setting.get(setting.name))
|
||||||
'0030' => Channel::Filter::OutOfOfficeCheck,
|
|
||||||
'0100' => Channel::Filter::FollowUpCheck,
|
|
||||||
'0900' => Channel::Filter::BounceCheck,
|
|
||||||
'1000' => Channel::Filter::Database,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# filter(channel, mail)
|
|
||||||
filters.each {|_prio, backend|
|
filters.each {|_prio, backend|
|
||||||
begin
|
begin
|
||||||
backend.run(channel, mail)
|
backend.run(channel, mail)
|
||||||
|
@ -511,11 +505,9 @@ retrns
|
||||||
Observer::Ticket::Notification.transaction
|
Observer::Ticket::Notification.transaction
|
||||||
|
|
||||||
# run postmaster post filter
|
# run postmaster post filter
|
||||||
filters = {
|
Setting.where(area: 'Postmaster::PostFilter').each {|setting|
|
||||||
# '0010' => Channel::Filter::Trusted,
|
filters[setting.name] = Kernel.const_get(Setting.get(setting.name))
|
||||||
}
|
}
|
||||||
|
|
||||||
# filter( channel, mail )
|
|
||||||
filters.each {|_prio, backend|
|
filters.each {|_prio, backend|
|
||||||
begin
|
begin
|
||||||
backend.run(channel, mail, ticket, article, user)
|
backend.run(channel, mail, ticket, article, user)
|
||||||
|
|
59
db/migrate/20160412000001_add_config_postmaster_filter.rb
Normal file
59
db/migrate/20160412000001_add_config_postmaster_filter.rb
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
class AddConfigPostmasterFilter < ActiveRecord::Migration
|
||||||
|
def up
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Define postmaster filter.',
|
||||||
|
name: '0010_postmaster_filter_trusted',
|
||||||
|
area: 'Postmaster::PreFilter',
|
||||||
|
description: 'Define postmaster filter to remove X-Zammad-Headers from not trusted sources.',
|
||||||
|
options: {},
|
||||||
|
state: 'Channel::Filter::Trusted',
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Define postmaster filter.',
|
||||||
|
name: '0020_postmaster_filter_auto_response_check',
|
||||||
|
area: 'Postmaster::PreFilter',
|
||||||
|
description: 'Define postmaster filter to identify auto responses to prevent auto replies from Zammad.',
|
||||||
|
options: {},
|
||||||
|
state: 'Channel::Filter::AutoResponseCheck',
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Define postmaster filter.',
|
||||||
|
name: '0030_postmaster_filter_out_of_office_check',
|
||||||
|
area: 'Postmaster::PreFilter',
|
||||||
|
description: 'Define postmaster filter to identify out of office emails for follow up detection and keeping current ticket state.',
|
||||||
|
options: {},
|
||||||
|
state: 'Channel::Filter::OutOfOfficeCheck',
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Define postmaster filter.',
|
||||||
|
name: '0100_postmaster_filter_follow_up_check',
|
||||||
|
area: 'Postmaster::PreFilter',
|
||||||
|
description: 'Define postmaster filter to identify follow ups (based on admin settings).',
|
||||||
|
options: {},
|
||||||
|
state: 'Channel::Filter::FollowUpCheck',
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Define postmaster filter.',
|
||||||
|
name: '0900_postmaster_filter_bounce_check',
|
||||||
|
area: 'Postmaster::PreFilter',
|
||||||
|
description: 'Define postmaster filter to identify postmaster bounced - to handle it as follow up of origin ticket.',
|
||||||
|
options: {},
|
||||||
|
state: 'Channel::Filter::BounceCheck',
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Define postmaster filter.',
|
||||||
|
name: '1000_postmaster_filter_database_check',
|
||||||
|
area: 'Postmaster::PreFilter',
|
||||||
|
description: 'Define postmaster filter for filters managed via admin interface.',
|
||||||
|
options: {},
|
||||||
|
state: 'Channel::Filter::Database',
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
57
db/seeds.rb
57
db/seeds.rb
|
@ -1516,6 +1516,61 @@ Setting.create_if_not_exists(
|
||||||
frontend: false
|
frontend: false
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Define postmaster filter.',
|
||||||
|
name: '0010_postmaster_filter_trusted',
|
||||||
|
area: 'Postmaster::PreFilter',
|
||||||
|
description: 'Define postmaster filter to remove X-Zammad-Headers from not trusted sources.',
|
||||||
|
options: {},
|
||||||
|
state: 'Channel::Filter::Trusted',
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Define postmaster filter.',
|
||||||
|
name: '0020_postmaster_filter_auto_response_check',
|
||||||
|
area: 'Postmaster::PreFilter',
|
||||||
|
description: 'Define postmaster filter to identify auto responses to prevent auto replies from Zammad.',
|
||||||
|
options: {},
|
||||||
|
state: 'Channel::Filter::AutoResponseCheck',
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Define postmaster filter.',
|
||||||
|
name: '0030_postmaster_filter_out_of_office_check',
|
||||||
|
area: 'Postmaster::PreFilter',
|
||||||
|
description: 'Define postmaster filter to identify out of office emails for follow up detection and keeping current ticket state.',
|
||||||
|
options: {},
|
||||||
|
state: 'Channel::Filter::OutOfOfficeCheck',
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Define postmaster filter.',
|
||||||
|
name: '0100_postmaster_filter_follow_up_check',
|
||||||
|
area: 'Postmaster::PreFilter',
|
||||||
|
description: 'Define postmaster filter to identify follow ups (based on admin settings).',
|
||||||
|
options: {},
|
||||||
|
state: 'Channel::Filter::FollowUpCheck',
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Define postmaster filter.',
|
||||||
|
name: '0900_postmaster_filter_bounce_check',
|
||||||
|
area: 'Postmaster::PreFilter',
|
||||||
|
description: 'Define postmaster filter to identify postmaster bounced - to handle it as follow up of origin ticket.',
|
||||||
|
options: {},
|
||||||
|
state: 'Channel::Filter::BounceCheck',
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
|
Setting.create_if_not_exists(
|
||||||
|
title: 'Define postmaster filter.',
|
||||||
|
name: '1000_postmaster_filter_database_check',
|
||||||
|
area: 'Postmaster::PreFilter',
|
||||||
|
description: 'Define postmaster filter for filters managed via admin interface.',
|
||||||
|
options: {},
|
||||||
|
state: 'Channel::Filter::Database',
|
||||||
|
frontend: false
|
||||||
|
)
|
||||||
|
|
||||||
signature = Signature.create_if_not_exists(
|
signature = Signature.create_if_not_exists(
|
||||||
id: 1,
|
id: 1,
|
||||||
name: 'default',
|
name: 'default',
|
||||||
|
@ -1740,7 +1795,7 @@ Overview.create_if_not_exists(
|
||||||
},
|
},
|
||||||
'ticket.owner_id' => {
|
'ticket.owner_id' => {
|
||||||
operator: 'is',
|
operator: 'is',
|
||||||
value: 1,
|
pre_condition: 'not_set',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
order: {
|
order: {
|
||||||
|
|
Loading…
Reference in a new issue