class Proxy::Dns::Powerdns::Backend::Mysql
Attributes
database[R]
hostname[R]
password[R]
username[R]
Public Class Methods
new(a_server, a_ttl, pdnssec, hostname, username, password, database)
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, a_ttl, pdnssec, hostname, username, password, database) @hostname = hostname @username = username @password = password @database = database super(a_server, a_ttl, pdnssec) 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