Class: IPTables::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/iptables/configuration.rb

Constant Summary collapse

@@json_pattern =
/\.js(on)?$/

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Configuration

Returns a new instance of Configuration.



7
8
9
10
# File 'lib/iptables/configuration.rb', line 7

def initialize(*args)
  @parsed_hash = {}
  self.parse_files(*args)
end

Instance Method Details

#converge_firewallObject



109
110
111
112
113
114
# File 'lib/iptables/configuration.rb', line 109

def converge_firewall()
  policy_fw = self.policy
  rules_fw = self.rules
  policy_fw.merge(rules_fw)
  return policy_fw
end

#handle_json(file_name) ⇒ Object



100
101
102
103
104
105
106
107
# File 'lib/iptables/configuration.rb', line 100

def handle_json(file_name)
  json = File.read(file_name)
  JSON.parse(json).each{ |key, value|
    $log.debug("reading #{key} from file #{file_name}")
    raise "duplicate key: #{key}" if @parsed_hash.has_key? key
    @parsed_hash[key] = value
  }
end

#interpolations(in_interpolations = nil) ⇒ Object



46
47
48
49
50
51
52
53
54
# File 'lib/iptables/configuration.rb', line 46

def interpolations(in_interpolations = nil)
  @interpolations ||= nil
  return @interpolations unless @interpolations.nil?
  unless in_interpolations.nil?
    @interpolations = in_interpolations
    return @interpolations
  end
  @interpolations = IPTables::Interpolations.new(self.primitives)
end

#macros(in_macros = nil) ⇒ Object



89
90
91
92
93
94
95
96
97
98
# File 'lib/iptables/configuration.rb', line 89

def macros(in_macros = nil)
  @macros ||= nil
  return @macros unless @macros.nil?
  unless in_macros.nil?
    @macros = in_macros
    return @macros
  end
  raise 'missing macros' unless @parsed_hash.has_key? 'macros'
  @macros = IPTables::Macros.new(@parsed_hash['macros'])
end

#parse_files(*args) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/iptables/configuration.rb', line 12

def parse_files(*args)
  args.each{ |arg|
    $log.debug("reading arg #{arg}")
    case arg
    when @@json_pattern
      handle_json(arg)
    else
      raise "don't know how to handle #{arg.inspect}"
    end
  }
end

#policy(in_policy = nil) ⇒ Object



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

def policy(in_policy = nil)
  @policy ||= nil
  return @policy unless @policy.nil?
  unless in_policy.nil?
    @policy = in_policy
    return @policy
  end
  raise 'missing policy' unless @parsed_hash.has_key? 'policy'
  @policy = IPTables::Tables.new(@parsed_hash['policy'], self)
end

#policy6(in_policy = nil) ⇒ Object



35
36
37
38
39
40
41
42
43
44
# File 'lib/iptables/configuration.rb', line 35

def policy6(in_policy = nil)
  @policy6 ||= nil
  return @policy6 unless @policy6.nil?
  unless in_policy.nil?
    @policy6 = in_policy
    return @policy6
  end
  raise 'missing policy6' unless @parsed_hash.has_key? 'policy6'
  @policy6 = IPTables::Tables.new(@parsed_hash['policy6'], self)
end

#primitives(in_primitives = nil) ⇒ Object



56
57
58
59
60
61
62
63
64
65
# File 'lib/iptables/configuration.rb', line 56

def primitives(in_primitives = nil)
  @primitives ||= nil
  return @primitives unless @primitives.nil?
  unless in_primitives.nil?
    @primitives = in_primitives
    return @primitives
  end
  raise 'missing primitives' unless @parsed_hash.has_key? 'primitives'
  @primitives = IPTables::Primitives.new(@parsed_hash['primitives'])
end

#rules(in_rules = nil) ⇒ Object



67
68
69
70
71
72
73
74
75
76
# File 'lib/iptables/configuration.rb', line 67

def rules(in_rules = nil)
  @rules ||= nil
  return @rules unless @rules.nil?
  unless in_rules.nil?
    @rules = in_rules
    return @rules
  end
  raise 'missing rules' unless @parsed_hash.has_key? 'rules'
  @rules = IPTables::Tables.new(@parsed_hash['rules'], self)
end

#services(in_services = nil) ⇒ Object



78
79
80
81
82
83
84
85
86
87
# File 'lib/iptables/configuration.rb', line 78

def services(in_services = nil)
  @services ||= nil
  return @services unless @services.nil?
  unless in_services.nil?
    @services = in_services
    return @services
  end
  raise 'missing services' unless @parsed_hash.has_key? 'services'
  @services = IPTables::Services.new(@parsed_hash['services'])
end