class IpWrangler::DB

Public Class Methods

new(db_name, logger) click to toggle source
# File lib/ip_wrangler/db.rb, line 3
def initialize(db_name, logger)
  @db = Sequel.connect('sqlite://' + db_name)
  @logger = logger
end

Public Instance Methods

delete_nat_ip(private_ip, public_ip = nil) click to toggle source
# File lib/ip_wrangler/db.rb, line 61
def delete_nat_ip(private_ip, public_ip = nil)
  params = { private_ip: private_ip,
             public_ip: public_ip }.select do |_, value|
    !value.nil?
  end
  data = { private_ip: nil }
  @db[:nat_ips].where(params).update(data)
  @logger.info("Delete nat ip entry: #{public_ip}")
end
delete_nat_port(private_ip, private_port = nil, protocol = nil) click to toggle source
# File lib/ip_wrangler/db.rb, line 51
def delete_nat_port(private_ip, private_port = nil, protocol = nil)
  params = { private_ip: private_ip, private_port: private_port,
             protocol: protocol }.select do |_, value|
    !value.nil?
  end
  data = { private_ip: nil, private_port: nil }
  @db[:nat_ports].where(params).update(data)
  @logger.info("Delete nat ip port entry: #{private_ip}/#{private_port} (#{protocol})")
end
get_first_empty_nat_ip() click to toggle source
# File lib/ip_wrangler/db.rb, line 81
def get_first_empty_nat_ip
  params = { private_ip: nil }
  empty_nat_ips = @db[:nat_ips].where(params)
  unless empty_nat_ips.empty?
    return empty_nat_ips.to_a[0]
  end
  nil
end
get_first_empty_nat_port(protocol) click to toggle source
# File lib/ip_wrangler/db.rb, line 71
def get_first_empty_nat_port(protocol)
  params = { private_ip: nil, private_port: nil,
             protocol: protocol }
  empty_nat_ports = @db[:nat_ports].where(params)
  unless empty_nat_ports.empty?
    return empty_nat_ports.to_a[0]
  end
  nil
end
insert_nat_ip(public_ip, private_ip) click to toggle source
# File lib/ip_wrangler/db.rb, line 44
def insert_nat_ip(public_ip, private_ip)
  params = { public_ip: public_ip }
  data = { private_ip: private_ip }
  @db[:nat_ips].where(params).update(data)
  @logger.info("Insert nat ip entry: #{public_ip} -> #{private_ip}")
end
insert_nat_port(public_ip, public_port, private_ip, private_port, protocol) click to toggle source
# File lib/ip_wrangler/db.rb, line 35
def insert_nat_port(public_ip, public_port, private_ip, private_port, protocol)
  params = { public_ip: public_ip, public_port: public_port,
             protocol: protocol }
  data = { private_ip: private_ip, private_port: private_port }
  @db[:nat_ports].where(params).update(data)
  @logger.info("Insert nat ip port entry: #{public_ip}/#{public_port} -> "\
      "#{private_ip}/#{private_port} (#{protocol})")
end
not_exists_nat_ip?(public_ip, private_ip) click to toggle source
# File lib/ip_wrangler/db.rb, line 95
def not_exists_nat_ip?(public_ip, private_ip)
  @db[:nat_ips].where(public_ip: public_ip, private_ip: private_ip).empty?
end
not_exists_nat_port?(public_ip, public_port, protocol, private_ip, private_port) click to toggle source
# File lib/ip_wrangler/db.rb, line 90
def not_exists_nat_port?(public_ip, public_port, protocol, private_ip, private_port)
  @db[:nat_ports].where(public_ip: public_ip, public_port: public_port,
    private_ip: private_ip, private_port: private_port, protocol: protocol).empty?
end
select_nat_ip(private_ip = nil, public_ip = nil) click to toggle source
# File lib/ip_wrangler/db.rb, line 22
def select_nat_ip(private_ip = nil, public_ip = nil)
  params = { private_ip: private_ip, public_ip: public_ip }.select do |_, value|
    !value.nil?
  end
  nat_ips = []
  @db[:nat_ips].where(params).each do |nat_ip|
    if nat_ip[:private_ip]
      nat_ips.push(nat_ip)
    end
  end
  nat_ips
end
select_nat_port(private_ip = nil, private_port = nil, protocol = nil) click to toggle source
# File lib/ip_wrangler/db.rb, line 8
def select_nat_port(private_ip = nil, private_port = nil, protocol = nil)
  params = { private_ip: private_ip, private_port: private_port,
             protocol: protocol }.select do |_, value|
    !value.nil?
  end
  nat_ports = []
  @db[:nat_ports].where(params).each do |nat_port|
    if nat_port[:private_port] && nat_port[:private_port]
      nat_ports.push(nat_port)
    end
  end
  nat_ports
end