Net::DRI(3) Interface to Domain Name Registries/Registrars/Resellers


This documentation refers to Net::DRI version 0.95


use Net::DRI;
my $dri=Net::DRI->new({ cache_ttl => 10, trid_factory => ..., logging => .... });
... various operations ...


Net::DRI is a Perl library to access services offered by domain name providers, such as registries or registrars. DRI stands for Domain Registration Interface and it aims to be for domain name registries/registrars/resellers what DBI is for databases: an abstraction over multiple providers, with multiple policies, transports and protocols all used through a uniform API.

It is an object-oriented framework implementing RRP (RFC 2832/3632), EPP (core EPP in RFC 5730/5731/5732/5733/5734 aka STD69, extensions in RFC 3915/4114/4310/5076 and various extensions of ccTLDs/gTLDs - currently more than 30 TLDs are directly supported with extensions), RRI (.DE registration protocol), Whois, DAS (Domain Availability Service used by .BE, .EU, .AU, .NL), IRIS (RFC3981) DCHK (RFC5144) over LWZ (RFC4993) for .DE currently and XCP (RFC4992), .FR/.RE email and webservices interface, and resellers interface of some registrars (Gandi, OpenSRS, etc.). It has transports for connecting with UDP/TCP/TLS, HTTP/HTTPS, Web Services (XML-RPC and SOAP with/without WSDL), or SMTP-based registries/registrars.

It is not limited to handling of domain names, it can be easily extended. For example, it supports ENUM registrations and validations, or DNSSEC provisioning.

A shell is included for easy prototyping and debugging, see Net::DRI::Shell. Caching and logging features are also included by default.

Please see the included README file for full details.


Please see the "eg/" subdirectory of the distribution, it contains various examples. Please also see all unit tests under "t/", they show all parts of the API.


After having used Net::DRI (which is the only module you should need to "use" from this distribution), you create an object as instance of this class, and every operation will be carried through it.


This is an accessor to the trid factory (code reference) used to generate client transaction identificators, that are useful for logging and asynchronous operations.

During the "new()" call, a "trid_factory()" is initialized to a default safe value (being Net::DRI::Util::create_trid_1).

You need to call this method only if you wish to use another function to generate transaction identificators.

All other objects (registry profiles and transports) created after that will inherit this value. If you call again "trid_factory()" the change will only apply to new objects (registry profiles and transports) created after the change, it will not apply to already existing objects (registry profiles and transports).


This is an accessor to the underlying Logging object. During the "new()" call you can provide the object, or just a string (``null'', ``stderr'', ``files'' or ``syslog'' which are the current logging modules available in Net::DRI), or a reference to an array with the first parameter a string (same as previously) and the second parameter a reference to an hash with data needed by the logging class used (see for example Net::DRI::Logging::Files).

If you want to log the application data (what is exchanged with remote server, such as EPP XML streams), you need to use logging level of 'notice', or higher.


This is an accessor to the underlying Cache object. See Net::DRI::Cache. This object has a "ttl()" method to access and change the current time to live for cached data.


For now, support questions should be sent to:

<[email protected]>

Please also see the SUPPORT file in the distribution.


Patrick Mevzek, <[email protected]> and various contributors (see Changes file and web page above)


Copyright (c) 2005-2010 Patrick Mevzek <[email protected]>. All rights reserved.


This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

See the LICENSE file that comes with this distribution for more details.