class Proxy::Dns::Powerdns::Backend::Mysql

Attributes

database[R]
hostname[R]
password[R]
username[R]

Public Class Methods

new(a_server = nil, a_ttl = nil) click to toggle source
Calls superclass method Proxy::Dns::Powerdns::Record.new
# File lib/smart_proxy_dns_powerdns/backend/mysql.rb, line 8
def initialize(a_server = nil, a_ttl = nil)
  @hostname = Proxy::Dns::Powerdns::Plugin.settings.powerdns_mysql_hostname || 'localhost'
  @username = Proxy::Dns::Powerdns::Plugin.settings.powerdns_mysql_username
  @password = Proxy::Dns::Powerdns::Plugin.settings.powerdns_mysql_password
  @database = Proxy::Dns::Powerdns::Plugin.settings.powerdns_mysql_database

  super(a_server, a_ttl)
end

Public Instance Methods

connection() click to toggle source
# File lib/smart_proxy_dns_powerdns/backend/mysql.rb, line 17
def connection
  @connection ||= Mysql2::Client.new(:host => hostname, :username => username, :password => password, :database => database)
end
create_record(domain_id, name, type, content) click to toggle source
# File lib/smart_proxy_dns_powerdns/backend/mysql.rb, line 34
def create_record domain_id, name, type, content
  name = connection.escape(name)
  content = connection.escape(content)
  type = connection.escape(type)
  connection.query("INSERT INTO records (domain_id, name, ttl, content, type) VALUES (#{domain_id}, '#{name}', #{ttl.to_i}, '#{content}', '#{type}')")
  connection.affected_rows == 1
end
delete_record(domain_id, name, type) click to toggle source
# File lib/smart_proxy_dns_powerdns/backend/mysql.rb, line 42
def delete_record domain_id, name, type
  name = connection.escape(name)
  type = connection.escape(type)
  connection.query("DELETE FROM records WHERE domain_id=#{domain_id} AND name='#{name}' AND type='#{type}'")
  connection.affected_rows == 1
end
get_zone(name) click to toggle source
# File lib/smart_proxy_dns_powerdns/backend/mysql.rb, line 21
def get_zone name
  domain = nil

  name = connection.escape(name)
  connection.query("SELECT LENGTH(name) domain_length, id, name FROM domains WHERE '#{name}' LIKE CONCAT('%%.', name) ORDER BY domain_length DESC LIMIT 1").each do |row|
    domain = row
  end

  raise Proxy::Dns::Error, "Unable to determine zone. Zone must exist in PowerDNS." unless domain

  domain
end