You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.4 KiB

13 years ago
# = Services Record (SRV)
#
# Defines services available in the zone, for example, ldap, http etc..
#
# @see http://www.ietf.org/rfc/rfc2872.txt
# @see http://www.zytrax.com/books/dns/ch8/srv.html
class SRV < Record
has_paper_trail
13 years ago
validates :name, :hostname => {:allow_underscore => true, :allow_wildcard_hostname => true}
validates :content, :format => /\A\d+ \d+ [A-Za-z0-9\-_.]+\z/
13 years ago
# RFC 2872
validates :prio, :presence => true, :numericality => {
:greater_than_or_equal_to => 0,
:less_than_or_equal_to => 65535,
:only_integer => true
}
validates :weight, :presence => true, :numericality => {
:greater_than_or_equal_to => 0,
:less_than_or_equal_to => 65535,
:only_integer => true
}
validates :port, :presence => true, :numericality => {
:greater_than_or_equal_to => 0,
:less_than_or_equal_to => 65535,
:only_integer => true
}
validates :host, :presence => true, :hostname => {
:allow_underscore => true,
:allow_wildcard_hostname => true
}
attr_accessor :weight, :port, :host
before_validation :assemble_content
after_initialize :disassemble_content
def supports_priority?; true end
protected
def assemble_content
self.content = "#{@weight} #{@port} #{@host}".strip
end
# Update our convenience accessors when the object has changed
def disassemble_content
@weight, @port, @host = content.split(/\s+/) unless content.blank?
end
end
Srv = SRV