Class: Netfilter

Inherits:
Object
  • Object
show all
Defined in:
lib/netfilter.rb,
lib/netfilter/tool.rb,
lib/netfilter/chain.rb,
lib/netfilter/table.rb,
lib/netfilter/filter.rb,
lib/netfilter/version.rb,
lib/netfilter/eb_tables.rb,
lib/netfilter/ip_tables.rb,
lib/netfilter/ip6_tables.rb

Defined Under Namespace

Classes: Chain, EbTables, Filter, Ip6Tables, IpTables, Table, Tool

Constant Summary collapse

NATIVE_TABLES =
%w(filter nat mangle raw)
NATIVE_CHAINS =
%w(input output forward prerouting postrouting)
NATIVE_TARGETS =
%w(accept drop continue return reject dnat snat arpreply ct mark)
SystemError =
Class.new(StandardError)
VERSION =
"4.2"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(namespace = nil) {|eb_tables, ip_tables, ip6_tables| ... } ⇒ Netfilter

Returns a new instance of Netfilter.



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

def initialize(namespace = nil)
  self.eb_tables = EbTables.new(namespace)
  self.ip_tables = IpTables.new(namespace)
  self.ip6_tables = Ip6Tables.new(namespace)
  yield(eb_tables, ip_tables, ip6_tables) if block_given?
end

Instance Attribute Details

#eb_tablesObject

Returns the value of attribute eb_tables.



25
26
27
# File 'lib/netfilter.rb', line 25

def eb_tables
  @eb_tables
end

#ip6_tablesObject

Returns the value of attribute ip6_tables.



25
26
27
# File 'lib/netfilter.rb', line 25

def ip6_tables
  @ip6_tables
end

#ip_tablesObject

Returns the value of attribute ip_tables.



25
26
27
# File 'lib/netfilter.rb', line 25

def ip_tables
  @ip_tables
end

Class Method Details

.import(data) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/netfilter.rb', line 27

def self.import(data)
  data = data.symbolize_keys
  new.tap do |netfilter|
    netfilter.eb_tables = data[:eb_tables] ? EbTables.import(data[:eb_tables]) : EbTables.new
    netfilter.ip_tables = data[:ip_tables] ? IpTables.import(data[:ip_tables]) : IpTables.new
    netfilter.ip6_tables = data[:ip6_tables] ? Ip6Tables.import(data[:ip6_tables]) : Ip6Tables.new
  end
end

Instance Method Details

#downObject



69
70
71
72
73
74
75
76
77
78
# File 'lib/netfilter.rb', line 69

def down
  done = []
  [:eb_tables, :ip_tables, :ip6_tables].each do |tool|
    send(tool).down
    done << tool
  end
rescue => e
  done.reverse.each{ |tool| send(tool).up }
  raise e
end

#exportObject



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

def export
  {
    :eb_tables => eb_tables.export,
    :ip_tables => ip_tables.export,
    :ip6_tables => ip6_tables.export,
  }
end

#namespace=(name) ⇒ Object



94
95
96
97
98
# File 'lib/netfilter.rb', line 94

def namespace=(name)
  eb_tables.namespace = name
  ip_tables.namespace = name
  ip6_tables.namespace = name
end

#ppObject



80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/netfilter.rb', line 80

def pp
  puts "Eb-Tables"
  puts "-" * 80
  eb_tables.pp
  puts
  puts "Ip-Tables"
  puts "-" * 80
  ip_tables.pp
  puts
  puts "Ip6-Tables"
  puts "-" * 80
  ip6_tables.pp
end

#upObject



58
59
60
61
62
63
64
65
66
67
# File 'lib/netfilter.rb', line 58

def up
  done = []
  [:eb_tables, :ip_tables, :ip6_tables].each do |tool|
    send(tool).up
    done << tool
  end
rescue => e
  done.reverse.each{ |tool| send(tool).down }
  raise e
end