class Tablomat::IPTables::Rule

IPTables are made of Rules

Attributes

active[RW]
chain[R]
description[R]
method[RW]
owned[RW]
position[RW]

Public Class Methods

new(chain, description, owned = true) click to toggle source
# File lib/tablomat/iptables/rule.rb, line 10
def initialize(chain, description, owned = true)
  @system = chain.table.system
  @chain = chain
  @description = description
  @items = {}
  @owned = owned
  @active = false
  @method = 'APPEND'
  @position = 0
  activate if @chain.active
end

Public Instance Methods

activate(override = false) click to toggle source
# File lib/tablomat/iptables/rule.rb, line 22
def activate(override = false)
  return unless @owned || override
  return if @active

  @active = true
  return if override

  @chain.activate unless @chain.active
  apply_create
end
apply_create() click to toggle source
# File lib/tablomat/iptables/rule.rb, line 43
def apply_create
  return unless @owned

  method = if @method == 'APPEND'
             "-A #{@chain.name}"
           else
             "-I #{@chain.name} #{@position}"
           end
  command = "#{@system.iptables_bin} -t #{@chain.table.name} #{method} #{@description}"
  @system.exec command
end
apply_delete() click to toggle source
# File lib/tablomat/iptables/rule.rb, line 55
def apply_delete
  return unless @owned

  command = "#{@system.iptables_bin} -t #{@chain.table.name} -D #{@chain.name} #{@description}"
  @system.exec command
end
deactivate(override = false) click to toggle source
# File lib/tablomat/iptables/rule.rb, line 33
def deactivate(override = false)
  return unless @owned || override
  return unless @active

  self.active = false
  return if override

  apply_delete
end