Whois Server Definitions
Definitions are stored in the server class and are grouped by object type. There are 3 types of definitions:
:tld
a definition for a TLD:ipv4
a definition for an IPv4 address:ipv6
a definition for an IPv6 address
The Whois
library is shipped with a comprehensive definition list and you probably won't need to alter it. However, you can always append additional definitions to the existing list.
To get the current definition list use the Whois::Server.definitions
method. It returns a Hash
with all the definitions currently loaded.
# Example: Getting the list of all definitions currently loaded
Whois::Server.definitions
# => { :tld=> [[".br.com", "whois.centralnic.net", {}], [".cn.com", "whois.centralnic.net", {}], ... ] }
Whois::Server.definitions(:tld)
# => [[".br.com", "whois.centralnic.net", {}], [".cn.com", "whois.centralnic.net", {}], ... ]
Creating a new definition
Use the Whois::Server.define
to append a new element to the definition list. The method requires the definition type, the allocation, the host to query and an optional Hash
of parameters.
# Example: Creating new definitions
# Define a server for the .it extension
Whois::Server.define :tld, ".it", "whois.nic.it"
# Define a new server for an range of IPv4 addresses
Whois::Server.define :ipv4, "61.192.0.0/12", "whois.nic.ad.jp"
# Define a new server for an range of IPv6 addresses
Whois::Server.define :ipv6, "2001:2000::/19", "whois.ripe.net"
The most important option is the :adapter
. It controls the Whois::Server::Adapters
class to be used to query the WHOIS server. The value must be either a Class
or Symbol
:
-
when a class, the value should be a valid adapter and the class must implement
Whois::Server::Adapters::Base
abstract class.It's likely you won't need to define a new adapter. Instead, pick the most appropriate in the existing adapter list. Unless specified, the adapter defaults to
Whois::Servers::Adapter::Standard
. -
when a symbol, the value must correspond to a class in the
Whois::Server::Adapters
namespace.
# Example: Creating new definitions with an :adapter
# Add a definition for the .biz TLD using a Formatted adapter
Whois::Server.define :tld, ".cat", "whois.cat", adapter: :formatted, format: "-C US-ASCII ace %s"
# Add a definition for the .ad TLD using a None adapter
Whois::Server.define :tld, ".ad", nil, adapter: :none
# Add a definition for the .ad TLD using a Custom adapter
Whois::Server.define :tld, ".ad", nil, adapter: Whois::Server::Adapters::Custom