Class: FilterChain

Inherits:
Object
  • Object
show all
Defined in:
lib/filter/filter_chain.rb

Overview

The filter chain is responsible for deciding which mail to forward and which to drop. The filter chain can consist of one ore more filters each analysing and/or modifing the incoming mail.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ FilterChain

Returns a new instance of FilterChain.



6
7
8
9
# File 'lib/filter/filter_chain.rb', line 6

def initialize(config)
  @filters = []
  @config = config
end

Class Method Details

.build_simple_filter_chain(config, charset = "UTF-8") ⇒ Object

Factory method to create a simple filter chaing using a SubjectFilter.



36
37
38
39
40
41
# File 'lib/filter/filter_chain.rb', line 36

def self.build_simple_filter_chain(config, charset = "UTF-8")
  filter_chain            = self.new(config)    
  subject_filter_password = config["filter_chain"]["subject_filter"]["password"]
  filter_chain << SubjectFilter.new(subject_filter_password, charset)
  return filter_chain
end

Instance Method Details

#<<(filter) ⇒ Object



11
12
13
# File 'lib/filter/filter_chain.rb', line 11

def <<(filter)
  @filters << filter   
end

#add(filter) ⇒ Object



15
16
17
# File 'lib/filter/filter_chain.rb', line 15

def add(filter)
  @filters << filter
end

#delete(filter) ⇒ Object



19
20
21
# File 'lib/filter/filter_chain.rb', line 19

def delete(filter)
  @filters.delete(filter)
end

#passed_filter?(tmail) ⇒ Boolean

Execute each filter, stop of a filter rejects the mail

Returns:

  • (Boolean)


24
25
26
27
28
29
30
31
32
33
# File 'lib/filter/filter_chain.rb', line 24

def passed_filter?(tmail)
  ret = true
  for filter in @filters do
    if not filter.passed_filter?(tmail) then
      ret = false
      break
    end
  end
  return ret
end