Jump directly to goals, what’s available, use, features of Net::DRI, join development or ask for a specific need, redistribute Net::DRI when you are a provider, see everything about support and bug reports, or download Net::DRI.
Dot and Co specializes in technical solutions and advices for domain name registries, registrars, resellers, webhosting companies, and all providers and clients. Among all solutions we provide, a key piece is to be able to connect to registries and registrars: for that need we created Net::DRI which is a free software you can learn about on this page.
View a presentation (in English) about Net::DRI and EPP made during the ICANN Caïro meeting in november 2008 (with slight corrections since then):
the presentation itself
done with
S5
which needs Javascript (press the space bar to go forward)
or
the presentation content without layout in PDF format.
Another presentation is also available, in French only, an introduction to Net::DRI during the French Perl Workshop in June 2009 : the presentation (with S5, see above) or the presentation content without layout in PDF format.
Net::DRI is a collection of object oriented Perl modules that provides
an abstract and uniform interface to connect to domain name providers,
either registries, registrars or an entity at another level.
Thus Net::DRI can be used by a registrar to establish connections with various registries,
or by a reseller that needs to connect with its registrar,
or by an end client that needs to connect with its provider, be it a registrar or not,
without being forced to use the specific interface available from the provider!
Net::DRI can then allow access to features that were not even available in the native provider interface, such as batch processing. Furthermore, by hiding differences between providers' interfaces, an application using Net::DRI for its connections will almost not have to be changed if there is a need to change providers, or if one provider changes the way it operates (new interface, other protocols, and so on...). With this solution, it is easy to adapt to political or technical changes of its registration providers.
Net::DRI implements many transports and protocols: this allows to take into account specifics of various providers. It is an open framework, and it is easy to add new providers, protocols and transports; it also allows to easily handle cases close to a standard but with few differences. Net::DRI handles synchronous providers (ex: through a web site, the answer comes immediately) as well as asynchronous ones (ex: by email, the answer can come many hours after the request).
Net::DRI can handle many providers simultaneously, even if they offer services in the same domain names, through as many simultaneous connections as needed with various protocols and/or transports for the same provider.
Net::DRI implements RRP and EPP, which are two IETF standards. It is the only independant and free implementation of these two standards. Everywhere it is possible, Net::DRI standardizes on EPP (for example for return status codes) by translating other cases to EPP.
Net::DRI participates in EPP standardization work inside IETF through interoperability tests: http://www.ietf.org/iesg/implementation/report-rfc4930-4934.txt
Net::DRI also implements Whois (IETF standard), DAS (« Domain Availability Service ») and the IRIS set of protocols (IETF standards): results are available through the same interface as other operations.
Net::DRI already implements services of the future, such as ENUM, ENUM Validation or DNSSEC.
It is easy to use Net::DRI as it provides a command line shell so that you can leverage all Net::DRI power without having to write a single line of code !
whois calls in various TLDs (see below), as well as DAS (Domain Availability Service) calls
available for .BE .EU .TC .VG .GD .AU .NL domain names and
IRIS DCHK (« Domain Availability Check for the Internet Registry Information Service ») calls available for .DE domain names.
You will find in the below table all features of the latest Net::DRI version: on a green background, TLDs being fully supported for which interoperability has been tested by Dot and Co or other registrars, on an orange background, TLDs being partially supported or for which interoperability has not been tested, on a red background, TLDs with a minimal support and on a violet background TLDs planned in the future or for which work is ongoing.
| TLD or Provider | Comments |
|---|---|
| .EU | all operations supported including TLD extensions, for accredited registrars |
| .COM .NET .CC .TV | |
| .ORG | |
| .BIZ | |
| .INFO | |
| .MOBI | |
| .COOP | |
| .NAME | |
| .TRAVEL | |
| .CAT | |
| .ASIA | |
| .LU | |
| .NU | |
| .BE | |
| .AU | |
| .US | |
| .DE | |
| .CH | |
| .LI | |
| .HN | |
| .SC | |
| .VC | |
| .AG | |
| .BZ | |
| .LC | |
| .MN | |
| .ME | |
| .CZ | |
| .PRO | |
| .JOBS | |
| .BR | |
| CentralNIC | |
| CoCCA | |
| .SE | all operations supported, including extensions, for accredited registrars ; interoperability tested by registry |
| .AT | |
| .NO | |
| .FR | domain name check through web services and all operations through email or EPP by a registrar having a contract with AFNIC |
| IENUM +43 | all operations supported, including extensions, for accredited registrars ; interoperability tested by registry |
| .WS | all operations supported, like for any registry based on RRP ; interoperability not tested |
| .PL | all operations supported excluding those related to future reservations ; interoperability not tested |
| .AERO | all operations supported, including TLD extensions, for accredited registrars ; interoperability not tested |
| .PT | |
| .SI | |
| .MUSEUM |
all operations supported, like for any registry based on EPP, for accredited registrars ; interoperability not tested
|
| .TEL | |
| .TW | |
| .CN | |
| .IM | |
| .CO.CZ | |
| .IT | |
| .UK | all operations supported through EPP ; interoperability not tested |
| BookMyName (aka Free/ProXad/Dedibox/Online) | retrieving the list of domain names, information on a domain name, or checking if a domain name exists through the web services API + DAS access |
| Gandi | only retrieving the list of domain names, information on a domain name, or checking if a domain name exists through the web services API |
| OVH | |
| AdamsNames (.TC .VG .GD) | only retrieving information on a domain name through the web services API |
| OpenSRS | almost all operations on domain names through the XCP over HTTPS API |
| .BE .EU .TV .VD .GD .AU .NL | public DAS access |
| .COM .NET .ORG .BIZ .INFO .AERO .EU .MOBI .NAME .LU .WS .SE .CAT .AT .TRAVEL .US .PT | public whois access |
| .DE | public IRIS DCHK access |
If you are a registry for which no interoperability has been tested, or a registrar accredited by such a registry, please contact us at netdri@dotandco.com to help conduct those tests.
Net::DRI is distributed as free software under the GPL license.
You just need to download the complete source archive
and complete the installation through the standard procedure
perl Makefile.PL ; make ; make install
The installation process checks that you have the following Perl modules already installed, as they are needed for Net::DRI correct operation (if you install Net::DRI with the CPAN shell, the modules will be automatically installed if needed):
Carp, UNIVERSAL::requireIO::Socket::INET, IO::Socket::SSL (version 0.90 and above)DateTime, DateTime::Duration,
DateTime::Format::Strptime, DateTime::TimeZone,
DateTime::Format::ISO8601 (version 0.06 and above) :
all dates and times used internally or exchanged with the application built on Net::DRI use the
DateTime frameworkClass::Accessor, Class::Accessor::ChainedTest::MoreTime::HiRes, Email::ValidXML::LibXMLSome modules are optional because only used for specific registries/registrars. If not there, they will not be automatically installed, but during tests (see below), you will be warned of which missing module is needed depending on how you plan to use Net::DRI.
SOAP::Lite (only needed to use web services
interface of BookMyName, Gandi, OVH or AFNIC)SOAP::WSDL (only needed to use web services interface of OVH)Net::SMTP, MIME::Entity (only needed
to exchange emails for .FR handled by AFNIC)LWP::UserAgent (only needed to use XCP protocol with OpenSRS,
or the EPP protocol with .PL)Digest::MD5 (only needed to use XCP protocol with OpenSRS)Net::DNS (only needed for IRIS DCHK operations, currently available only for .DE)
A test suite is available and can be started with the command make test
during installation. This would make sure that all needed additional modules needed for Net::DRI are correctly installed on your system.
Depending on version, you will be able to connect to various providers; please see details in the section on Net::DRI features.
You will find example programs showing how to use Net::DRI with its sources,
in the eg directory. Tests (in the t directory)
can also be useful. The most important modules of the distribution have their own documentation.
For an overview, please be sure to read the README file included with the sources.
Net::DRI is free software distributed under the GPL license: in short, this means you are free, as in free beer and as in free speech, to use it the way it suits you, that you have access to its sources that you can modify, but in exchange, if you redistribute this software, modified or not, you have to give sources, including your own modifications. Please consult the whole text of the license for further information, or contact us for any question.
At execution, you use Net::DRI to associate a provider by specifying for each connection a specific protocol and transport. During Net::DRI use, you can at will add or remove connections as well as providers.
In the following paragraphs you will find details about protocols, transports and providers that Net::DRI handles.
In the table below you will find the list of protocols included in Net::DRI.
Net::DRI protocols live in the
Net::DRI::Protocol namespace.
| Protocol name | Net::DRI version | Comments |
|---|---|---|
| RRP (RFC 2832,3632) | 0.11 | Previously used by .COM/.NET (before moving to EPP), and still by some ccTLDs |
| EPP (RFC 4930,4931,4932,4933,4934 - obsoleting 3730,3731,3732,3733,3734 - and 3735,3915) | 0.15 | used by .COM/.NET, all new gTLDs (.INFO, .BIZ, .PRO, etc...) and more and more ccTLDs |
| EPP E.164 (RFC 4114) | 0.16 | EPP extension needed for ENUM |
| EPP ENUM Validation (RFC 5076) | 0.85 | EPP extension needed for ENUM information validations |
| EPP SecDNS (RFC 4310) | 0.16 | EPP extension needed for DNSSEC |
| EPP NSgroup (DNS.BE / EURid) | 0.16 | EPP extension for .BE and .EU |
| EURid EPP extensions | 0.17 | EPP extensions for .EU (domains/contacts/sunrise/notifications/registrar) |
| SE EPP extensions | 0.21 | EPP extensions for .SE (domains/contacts) |
| PL EPP extensions (draft-zygmuntowicz-epp-pltld-03) | 0.21 | EPP extensions for .PL (domains/contacts) |
| MOBI EPP extension | 0.30 | EPP extension for .MOBI (domains) |
| CAT EPP extensions | 0.30 | EPP extensions for .CAT (domains/contacts/«defensive registration») |
| AERO EPP extensions | 0.30 | EPP extensions for .AERO (domains/contacts) |
| US EPP extensions | 0.30 | EPP extensions for .US (contacts) |
| VeriSign EPP extensions | 0.40 | EPP extensions especially for .COM .NET (IDNLanguage, NameStore, Sync, WhoisInfo, RGP-Poll, LowBalance) |
| COOP EPP extensions | 0.70 | EPP extensions for .COOP (contacts) |
| IENUMAT EPP extensions | 0.30 | EPP extensions for Infrastructure ENUM in Austria |
| AT EPP extensions | 0.70 | EPP extensions for .AT |
| BE EPP extensions | 0.40 | EPP extensions for .BE (domains/contacts) |
| LU EPP extensions | 0.80 | EPP extensions for .LU (domains/contacts/messages/status) |
| ASIA EPP extensions | 0.81 | EPP extensions for .ASIA (IPR for domain names, CED for contacts) |
| CentralNic EPP extensions | 0.81 | WebForwarding, TTL & Domain Release |
| Nominet (.UK) EPP extensions | 0.95 | EPP extensions for .UK: handling of accounts, domain names, contacts, hosts and notifications |
| AU EPP extensions | 0.85 | EPP extensions for .AU (domains) |
| Afilias EPP extensions | 0.90 | EPP extensions (IDNLanguage, Restore) for .ORG .HN .SC .VC .AG .BZ .LC .MN |
| NAME EPP extensions | 0.85 | EPP extensions (EmailFwd) for .NAME |
| US EPP extensions | 0.85 | EPP extensions (Contact) for .US |
| NO EPP extensions | 0.90 | EPP extensions (Contact, Host, Domain, Message, Result) for .NO |
| TRAVEL EPP extensions | 0.90 | EPP extensions (UIN) for .TRAVEL |
| CZ EPP extensions | 0.90 | EPP extensions (Domain, Contact, NSSET) for .CZ |
| BR EPP extensions (draft-neves-epp-brdomain-03.txt + draft-neves-epp-brorg-03.txt) | 0.91 | EPP extensions (Domain, Contact) for .BR |
| JOBS EPP extensions | 0.91 | EPP extensions (Contact, NameStore) for .JOBS |
| PRO EPP extensions | 0.91 | EPP extensions (Domain, Domain Activation) for .PRO |
| FR EPP extensions | 0.95 | EPP extensions (Domain, Contact, Notifications) for .FR |
| PT EPP extensions | 0.92 | EPP extensions (Domain, Contact) for .PT |
| SI EPP extensions | 0.95 | EPP extensions (Domain, Contact) for .SI |
| Whois (RFC 3912) | 0.95 | Parse of whois information for domain names in .COM .NET .ORG .BIZ .INFO .AERO .EU .MOBI .NAME .LU .WS .SE .CAT .AT .TRAVEL .PT |
| DAS | 0.95 | Domain Availability Service for .BE .EU .TC .VG .GD .AU .NL + BookMyName + AdamsNames for public use |
| AFNIC Web Services | 0.12 | Only domain_check |
| AFNIC Email | 0.30 | Email form version 2.0.0 |
| BookMyName Web Services | 0.85 | Only account_list_domains domain_info domain_check |
| Gandi Web Services | 0.85 | Only account_list_domains domain_info domain_check |
| OVH Web Services | 0.85 | Only account_list_domains domain_info domain_check |
| AdamsNames Web Services | 0.95 | Only domain_info |
| RRI | 0.90 | Used by DENIC (.DE) |
| XCP | 0.95 | Used by OpenSRS |
| IRIS (RFC 3981) | 0.92 | New set of protocols that should replace whois for all kind of registries (domain names, IP addresses, ENUM information, etc.) |
| IRIS DCHK (RFC 5144) | 0.92 | Currently only available for .DE |
| IRIS LWZ (RFC 4993) | 0.92 | Handling transport with UDP and optional compression, used by IRIS DCHK |
| IRIS XCP (RFC 4992) | 0.95 | Handling transport with TCP and supporting SASL PLAIN |
In the table below you will find the list of transports included in Net::DRI
as well as those planned for the future. Net::DRI transports live in the
Net::DRI::Transport namespace.
| Transport name | Net::DRI version | Comments |
|---|---|---|
| Socket | 0.11 |
Implements an UDP, TCP or TLS connection, with ping() method since version 0.40 |
| SOAP | 0.12 | Only with HTTP/HTTPS |
| SMTP | 0.22 | |
| HTTP/SOAPLite | 0.85 | |
| HTTP/SOAPWSDL | 0.85 | |
| HTTP/XMLRPC | 0.85 | |
| HTTP | 0.91 | Implements an HTTP or HTTPS stream |
| Defer | 0.92 | Implements deferred operations, also useful to simulate operations without sending anything to registries |
For testing and debugging, Net::DRI also provides a transport called Dummy that does not send
anything over the network. It can also be useful during development of a Net::DRI-based application.
In the table below you will find the list of providers (registries, registrars, resellers, hosting companies)
included in Net::DRI
as well as those planned for the future.
Net::DRI providers live in the Net::DRI::DRD namespace,
DRD standing for «Domain Registry Driver»,
where «Registry» should be taken broadly to include any domain name provider,
be it a registry, registrar, or a reseller at any level.
| Module name in Net::DRI | Provider | Domain Names / Services | Net::DRI version | Comments |
|---|---|---|---|---|
| ICANN | ICANN | 0.11 | Implements domain name rules in gTLDs | |
| VNDS | VeriSign Naming and Directory Services | .COM .NET .CC .TV .JOBS | 0.91 | Currently using EPP as protocol and
Socket as transport |
| WS | Global Domains International | .WS | 0.16 | Currently using RRP as protocol and
Socket as transport |
| AFNIC | AFNIC | .FR .RE .TF .WF .PM .YT | 0.91 | Only domain_check through Web Services and all operations by email and EPP |
| EURid | EURid | .EU | 0.17 | Currently using EPP as protocol and
Socket as transport |
| SE | NIC SE | .SE | 0.21 | Currently using EPP as protocol and
Socket as transport |
| PL | NASK | .PL | 0.91 | Currently using EPP as protocol and
HTTP as transport |
| AERO | SITA | .AERO | 0.30 | Currently using EPP as protocol and
Socket as transport |
| CAT | puntCAT (Corenic) | .CAT | 0.30 | Currently using EPP as protocol and
Socket as transport |
| MOBI | mTLD | .MOBI | 0.30 | Currently using EPP as protocol and
Socket as transport |
| IENUMAT | enum.at | Infrastructure ENUM in Austria | 0.30 | Currently using EPP as protocol and
Socket as transport |
| AT | NIC AT | .AT | 0.70 | Currently using EPP as protocol and
Socket as transport |
| BE | DNSBE | .BE | 0.40 | Currently using EPP as protocol and
Socket as transport |
| ORG | PIR | .ORG | 0.70 | Currently using EPP as protocol and
Socket as transport |
| INFO | Afilias | .INFO | 0.70 | Currently using EPP as protocol and
Socket as transport |
| COOP | Dot Cooperation | .COOP | 0.70 | Currently using EPP as protocol and
Socket as transport |
| LU | DNSLU | .LU | 0.80 | Currently using EPP as protocol and
Socket as transport |
| ASIA | DotAsia Organisation | .ASIA | 0.81 | Currently using EPP as protocol and
Socket as transport |
| NAME | Global Name Registry | .NAME | 0.81 | Currently using EPP as protocol and
Socket as transport |
| NU | .NU Domain LTD | .NU | 0.81 | Currently using EPP as protocol and
Socket as transport |
| Nominet | Nominet | .CO.UK .LTD.UK .ME.UK .NET.UK .ORG.UK .PLC.UK .SCH.UK | 0.85 | Currently using EPP as protocol and
Socket as transport |
| AU | auDA | .AU | 0.85 | Currently using EPP as protocol and
Socket as transport |
| US | NeuStar | .US | 0.85 | Currently using EPP as protocol and
Socket as transport |
| BookMyName | BookMyName (Free/ProXad/Iliad/Online) | .COM .NET .ORG .BIZ .INFO .NAME .EU .BE .US | 0.85 | Only account_list_domains domain_info through the web services API |
| Gandi | Gandi | .COM .NET .ORG .BIZ .INFO .NAME .BE | 0.85 | Only account_list_domains domain_info through the web services API |
| OVH | OVH | .COM .NET .ORG .BIZ .INFO .FR .EU .ME.UK .CO.UK .ORG.UK .DE .BE .RE .ES | 0.85 | Only account_list_domains domain_info through the web services API |
| NO | Norid | .NO | 0.90 | Currently using EPP as protocol and
Socket as transport |
| DENIC | DENIC | .DE | 0.90 | Currently using RRI or IRIS DCHK as protocol and
Socket as transport |
| SWITCH | SWITCH | .CH .LI | 0.90 | Currently using EPP as protocol and
Socket as transport |
| HN | Afilias | .HN | 0.90 | Currently using EPP as protocol and
Socket as transport |
| SC | .SC | |||
| VC | .VC | |||
| AG | .AG | |||
| BZ | .BZ | |||
| LC | .LC | |||
| MN | .MN | |||
| ME | .ME | |||
| CZ | CZ.NIC | .CZ | 0.90 | Currently using EPP as protocol and
Socket as transport |
| BR | RegistroBR | .BR | 0.91 | Currently using EPP as protocol and
Socket as transport |
| PRO | RegistryPRO | .PRO | 0.91 | Currently using EPP as protocol and
Socket as transport |
| OpenSRS | OpensRS | .COM .NET .ORG .INFO .BIZ .MOBI .NAME .ASIA .AT .BE .CA .CC .CH .CN .DE .DK .ES .EU .FR .IT .LI .ME .COM.MX .NL .TV .UK .US | 0.91 | Currently using XCP as protocol and
HTTP as transport |
| CentralNIC | CentralNIC | .LA .UK.NET .SE.NET .GB.NET .EU.COM .UK.COM .US.COM .CN.COM .DE.COM .JPN.COM .KR.COM .NO.COM .ZA.COM .BR.COM .AR.COM .RU.COM .SA.COM .SE.COM .HU.COM .GB.COM .QC.COM .UY.COM .AE.COM | 0.92 | Currently using EPP as protocol and
Socket as transport |
| CoCCA | CoCCA | .CX .GS .TL .KI .MU .NF .HT .NA .NG .CC .CM .SB .MG | 0.92 | Currently using EPP as protocol and
Socket as transport |
| PT | FCCN | .PT | 0.92 | Currently using EPP as protocol and
Socket as transport |
| ARNES | ARNES | .SI | 0.95 | Currently using EPP as protocol and
Socket as transport |
| IM | IM | .IM | 0.95 | Currently using EPP as protocol and
Socket as transport |
Net::DRI::Shell you can use to do all operations through Net::DRI without writing any line of code.
This shell is fully documented and also allows batch operations (on a list of domain names)
with logging and time statistics.
Net::DRI is developed using software revision tracking tools, and has a testing suite
to be able to verify that no bugs have been introduced on previous features
during a new revision. These tests are provided with the sources, and are available
in the t directory of the archive.
Participating in Net::DRI development is open to any interested person or company. Since Net::DRI is free software and because of its very flexible and easily extensible architecture, anyone can modify and extend the features in any required direction.
For any large development please do not hesitate to contact us beforehand in order to be able to later easily accept your contributions on the technical and license level.
Also, Dot and Co continues to develop Net::DRI in the directions that seem relevant and depending on feedback that we receive. Please do not hesitate to send your needs and expectations to us. Except in particular cases, future developments will remain under the GPL license.
If you have precise and specific needs, or an urgent need of a feature, you can financially sponsor a given development. Contact us for information on details and fees. Please note that we offer financial incentives for developments whose results can be later redistributed as free software, by inclusion in a future Net::DRI version (this can happen after a specific delay for example).
Net::DRI is a free software: any contribution (bugfixes, enhancements, new documentation, communication around the project, hypertext link to this page, financial donation, etc.) is welcome for its success ! Even a small email from a satisfied user is always appreciated.
The following individuals or organizations, in no particular order, have contributed to the development of Net::DRI by providing documentation, ideas for enhancements, code corrections, bug reports or financial support.
If you are missing in this list, want to be removed or to change something, please contact us. Each specific contribution is properly ported to the credit of its author in our Changes file distributed with Net::DRI.
Allowing your clients to directly use Net::DRI is a benefit for you:
To start earning all these benefits, you just have to get in touch with us to ensure the interoperability between Net::DRI and your systems. Such an interoperability may need a specific development in Net::DRI to implement a new protocol and/or transport.
Then, just point your clients to this web page or give them the sources archive of the latest Net::DRI version.
Even if you do not redistribute Net::DRI to your clients, any technical documentation regarding your systems that may help developing the client side or any access to your test systems would be greatly appreciated and advertised.
For any correspondence about this software, please use preferably the following email address: netdri@dotandco.com. You can use it to warn of a problem, provide comments or ask for technical support. Any argumented comment is welcome.
If necessary, a mailing list will be created later on. Discussion can also already take place in our newsgroup dotandco.discuss (please see our section on Dot and Co forums).
Dot and Co will try to answer all support requests for free and promptly, within reasonable limits.
At the same time, Dot and Co can provide specific solutions for installing, configuring, maintaining Net::DRI or developing applications with it, as well as technical support, through a fixed price or by duration. Please contact us for details at netdri@dotandco.com .
Net::DRI latest release is version 0.95, available since August, 15th 2009.
You can download:
INSTALL file, with details on installation steps:
http://search.cpan.org/dist/Net-DRI/INSTALLREADME file, with many details on Net::DRI use :
http://search.cpan.org/dist/Net-DRI/README