Changes for version 0.92_01 - 2009-01-01

  • UPGRADE instructions from previous versions:
  • use add_profile/add_current_profile instead of new_profile/new_current_profile (warning: you may hit different APIs, depending on how you used new_profile/new_current_profile !)
  • remove use of log_fh attribute during transport setup, and use instead the new Logging framework (see Net::DRI and Net::DRI::Logging modules documentation)
  • Detailed changes:
  • Registry add_profile()/add_current_profile() : new methods that will replace in the future new_profile()/new_current_profile() with a better API; this will also make it possible to have DRD protocol agnostic again the future (when old API completely removed) ; all scripts in eg/ and test files in t/ have been updated
  • Logging : a new framework has been put in place, for better extensibility ; fix of encoding bug ; various logging has been added, at debug level, to facilitate debugging (such as methods called, cache handling, transport loops/timeouts/retries) ; see document of modules Net::DRI, Net::DRI::Logging and Net::DRI::Logging::{Stderr,Files,Null}
  • Protocol/ResultStatus : $rc objects returned from most operations do also contain now all data retrieved with the operation (including the raw messages exchange), which can be accessed by get_data()/get_data_collection() method on the the $rc object, see module documentation
  • Shell autocompletion support for commands and parameters (domain names, contacts, hostnames, local filenames), see Net::DRI::Shell documentation
  • Shell new commands: add, record, set, show config, !cmd, help and add_current_profile (replacing new_current_profile) + backticks for batch operations ; see Net::DRI::Shell documentation
  • .IM support (EPP) : interoperability not tested
  • .SI support (EPP) : interoperability not tested
  • Data/Contact (and all subclasses) : a new method attributes() allows to know what attributes exist for this specific class of contact data
  • Data/Contact as_string() : better handling of subclasses attributes, now also automatically included in output, as well as class name (to know the contact type)
  • DRD/EURid : add registrar DAS (type=das-registrar) & registrar Whois (type=whois-registrar) profile types
  • DRD/CoCCA : .NA and .NG added
  • DRD/DENIC : add 9.4.e164.arpa in list of tlds, as they can be queried with IRIS DCHK
  • DRD/ICANN : .MOBI and .COOP can have one character domain name
  • DRD/WS : domain transfer operations are now possible
  • DRI del_registry() : to properly close all profiles in a given registry name (or the current one if no parameter given)
  • Registry del_profile() : deletes the current profile (or the name specified as input), which will also close transport connections associated with the profile as needed
  • Protocol/IRIS/XCP (RFC4992) : prototype implementation (no publicly known server uses this for now), only SASL PLAIN is supported
  • Protocol/IRIS/Core parse_authentication() : to support SASL in IRIS (RFC4991 authentication messages)
  • Shell : if we detect the server has closed connection, we try to reopen it at next command
  • DRI : cache() method to return the current underlying cache object
  • Cache : ttl() accessor/mutator to query or change the current time to live for cached data
  • DRD registry_can() : returns 1 or 0 if the operation given as input parameter (ex: domain_create) is available for the currently selected registry
  • Protocol/ResultStatus : new method is_closing() returns 1 if the server has closed connection (after successful operation or not)
  • Protocol/ResultStatus : new method is() to check symbolic return codes, see module documentation
  • Protocol/IRIS/LWZ : now supports compressed responses (with some help by Felix Antonius Wilhelm Ostmann) ; nicely handling of current mismatch between RFC LWZ compression method (RFC1951) and DENIC IRIS DCHK server (RFC1950)
  • Protocol/EPP/Extensions/Neulevel/IDNLanguage (contributed by Jouanne Mickael)
  • Protocol/EPP/Message : added a message/info/checked_on key always there with a DateTime object to know when we got information on number of messages waiting
  • Protocol/EPP/Message : we always set message/info/count attribute, including to 0 if nothing pending
  • Protocol/.../Connection classes : we use EPP code 2500 instead of 2400 (through ResultStatus new COMMAND_FAILED_CLOSING symbolic name) to warn where we were not able to get registry response, probably due to a closed connection
  • Protocol/.../Message classes : as_string() is now mandatory to be implemented (for logging purposes), so add it where needed
  • Protocol/EPP/Extensions/DNSBE/Domain : trade operation now needs op=>'request' (bugfix by Roger Heykoop)
  • Protocol/IRIS/Message : add xml preambule to outgoing messages
  • Registry available_profiles() : returns list of fullnames (profile name + protocol name + transport name) if passed a true value
  • Protocol/ResultStatus info() has been renamed to get_extended_results()
  • DRI trid_factory() accessor/mutator, this is a coderef used everywhere (including in Transport classes) to generate transaction identificators such as clTRID in EPP (all Transport classed have been modified to use that)
  • Caching changes (see Registry::try_restore_from_cache, DRD and various DRD subclasses): Registry::set_info_from_cache() disappears and its features are subsumed by try_restore_from_cache() ; two major changes (that will make the cache less often used) : we use it only for the same action, and we use data from the same profile only ; logging is done (at debug level) to be able to track each cache miss or hit ; when results are given from the cache, the result_from_cache (in branch session/exchange) key has a value of 1, otherwise 0
  • Transport + DRD/Registry : total rework of sending/receiving messages, better handling of timeouts and retries ; this is specially needed for servers difficult to reach, like public Whois/IRIS/DAS ones
  • Registry : after exchange with registry, add in ResultStatus data a session+exchange branch with keys: duration_seconds (the duration in seconds of the exchange), command (a string representation of what has been sent to the registry), reply (a string representation of what has been received from registry), result_from_cache (=0), action (name of action that has been done) and type (type of object on which this operation has been done)
  • DRD {domain,host,contact}_check_multi() : if the currently selected protocol does not support check_multi, we emulate by doing multiple check calls, as needed
  • DRD domain_create() : if not pure_create, we start by doing a domain_check and stop there if domain exists already (so that we do not trigger an hitpoint at registry like EURid)
  • DRD/NO : verify_name_domain() updates
  • DRD/DENIC : better parameters for IRIS DCHK timeouts and retries
  • Util : fulltime() and xml_indent() methods added, used by Logging framework
  • Util : encode() encode_utf8() encode_ascii() decode() decode_utf8() decode_ascii() methods added, as wrapper around Encode
  • When using Encode::{encode,decode}(), use check=1 (die on malformed data)
  • Protocol : the name key is only set for domain and host object types, not in all cases
  • Connection classes for EPP,RRI,IRIS : using sysread() instead of read(), since we do not want any buffering
  • Connection classes for EPP/Extensions/PL,OpenSRS/XCP : using HTTP::Response::decoded_content() method instead of just content()
  • Connection classes read_data method : make sure to translate what we received into perl native strings (Encode::decode & similar stuff)
  • EPP/Extensions/PL/Connection write_message() : encode perl string in utf8 before putting in HTTP::Message::content
  • DRD : add a default verify_name_domain() and domain_operation_needs_is_mine() for all subclasses, this make many DRD subclasses simpler and shorter
  • DRD classes : various simplifications and removals (verify_duration_transfer, is_my_tld, domain_operation_needs_is_mine), plus use of BaseClass::make_exception_for_unavailable_operations
  • DRD classes : sanitization of the internal API for verify_name_domain, and rewrite in the new framework (using DRD::_verify_name_rules)
  • Protocol/EPP/Extensions/AFNIC : various updates following registry new prototype
  • Protocol/AFNIC/Email : various updates for form version 2.5.0 (notably: authinfo mandatory, nameservers not mandatory)
  • DRD contact_check_multi() : make sure to allow a ref hash for optional parameters, as with all other contact methods
  • Protocol/IRIS/LWZ : make sure to start with a clean empty DNS resolver
  • DRD/DENIC : make sure to use "de." and not "de" for DNS queries (finding NAPTR servers)
  • Protocol/EPP/Core/RegistryMessage pollack() : message ids are not necessarily numbers, but XML token (RT#41032 reported by Joaquim Carandell)
  • Protocol/EPP/Core/{Contact,Domain,Host} : for registry notifications (poll messages), we do not set the exist key anymore as the operation may be related to a creation or something else ; this would need to be handled by extensions
  • Shell : properly take into account quit commands in script files (reported by Eberhard Lisse)
  • DRD domain_{delete,create}_only() : deprecated methods, now removed (see previous version)
  • Protocol/{EPP,RRI,IRIS}/Connection : use strict utf8 ("UTF-8") and not Perl lax utf8 ("utf8") when encoding before sending to server (through Util::encode_utf8 function)
  • Protocol Connection classes login() logout() keepalive() methods : now they return the message, and do not call write_message themselves, this is done by Transport class (for homogeneity and logging reasons)
  • Protocol/IRIS/Core parse_error() : correct parsing of messages/languages (they were swapped)
  • Protocol/EPP/Extensions/BR/Contact : allow update of pure contacts (no orgid)

Modules

Interface to Domain Name Registries/Registrars/Resellers
Superclass of various classes inside Net::DRI
Local cache for Net::DRI
Superclass of all Net::DRI Registry Drivers
.AERO policies for Net::DRI
AFNIC (.FR/.RE) Registry driver for Net::DRI
.AG policies for Net::DRI
ARNES (.SI) policies for Net::DRI
.ASIA policies for Net::DRI
.AT policies for Net::DRI
.AU policies for Net::DRI
.BE (DNSBE) policies for Net::DRI
.BIZ policies for Net::DRI
.BR policies for Net::DRI
.BZ policies for Net::DRI
BookMyName (aka Free/ProXad/Online/Dedibox/Iliad) Registry driver for Net::DRI
.CAT policies for Net::DRI
.COOP policies for Net::DRI
.CZ policies for Net::DRI
CentralNic (.LA .EU.COM .UK.COM etc.) Registry driver for Net::DRI
CoCCA Registry driver for Net::DRI
DENIC (.DE) policies for Net::DRI
EURid (.EU) policies for Net::DRI
Gandi Registry driver for Net::DRI
.HN policies for Net::DRI
ICANN policies for Net::DRI
Infrastructure ENUM.AT policies for Net::DRI
.IM policies for Net::DRI
.INFO policies for Net::DRI
.LC policies for Net::DRI
.LU policies for Net::DRI
.ME policies for Net::DRI
.MN policies for Net::DRI
.MOBI policies for Net::DRI
.NAME policies for Net::DRI
.NO policies for Net::DRI
.NU policies for Net::DRI
.UK (Nominet) policies for Net::DRI
.ORG policies for Net::DRI
OVH Registry driver for Net::DRI
OpenSRS Registry driver for Net::DRI
.PL policies for Net::DRI
.PRO policies for Net::DRI
FCCN .PT Registry driver for Net::DRI
.SC policies for Net::DRI
.SE policies for Net::DRI
SWITCH (.CH/.LI) policies for Net::DRI
.TRAVEL policies for Net::DRI
.US policies for Net::DRI
.VC policies for Net::DRI
Verisign .COM/.NET Registry driver for Net::DRI
Website.WS .WS Registry driver for Net::DRI
Bundle of changes in Net::DRI
Handle contact data, modeled from EPP for Net::DRI
Handle .AERO contact data for Net::DRI
Handle AFNIC contact data for Net::DRI
Handle .SI contact data for Net::DRI
Handle .ASIA contact data for Net::DRI
Handle .AT contact data for Net::DRI
Handle .BE contact data for Net::DRI
Handle BR contact data for Net::DRI
Handle .CAT contact data for Net::DRI
Handle .COOP contact data for Net::DRI
Handle .DE contact data for Net::DRI
Handle EURid contact data for Net::DRI
Handle FCCN (.PT) contact data for Net::DRI
Handle .JOBS contact data for Net::DRI
Handle .LU contact data for Net::DRI
Handle .NO contact data for Net::DRI
Handle .UK contact data for Net::DRI
Handle .PL contact data for Net::DRI
Handle .SE contact data for Net::DRI
Handle .CH/.LI contact data for Net::DRI
Handle .US contact data for Net::DRI
Handle an ordered collection of contacts for Net::DRI
Handle ordered list of nameservers (name, IPv4 addresses, IPv6 addresses) for Net::DRI
Encapsulating raw data for Net::DRI
Additional API for Net::DRI operations
Handle a collection of statuses for an object, in a registry independent fashion for Net::DRI
Class to store all exceptions inside Net::DRI
Logging Operations for Net::DRI
Logging to Files for Net::DRI
Null Logging Operations for Net::DRI
STDERR Logging Operations for Net::DRI
Superclass of all Net::DRI Protocols
AFNIC Email Protocol for Net::DRI
AFNIC Email Domain commands for Net::DRI
AFNIC Email Message for Net::DRI
AFNIC Web Services Protocol for Net::DRI
AFNIC Web Services Domain commands for Net::DRI
AFNIC Web Services Message for Net::DRI
BookMyName (aka Free/ProXad/Online/Dedibox/Iliad) Web Services Protocol for Net::DRI
BookMyName Web Services Account commands for Net::DRI
BookMyName Web Services Domain commands for Net::DRI
BookMyName Web Services Message for Net::DRI
DAS Protocol (.BE & .EU Domain Availability Service) for Net::DRI
DAS Connection handling for Net::DRI
DAS Domain commands for Net::DRI
DAS Message for Net::DRI
EPP Protocol (RFC 4930,4931,4932,4933,4934 obsoleting RFC 3730,3731,3732,3733,3734 and RFC 3735) for Net::DRI
EPP over TCP (and TLS) Connection Handling (RFC4934) for Net::DRI
EPP Contact commands (RFC4933 obsoleting RFC3733) for Net::DRI
EPP Domain commands (RFC4931 obsoleting RFC3731) for Net::DRI
EPP Host commands (RFC4932 obsoleting RFC3732) for Net::DRI
EPP Registry messages commands (RFC4930 obsoleting RFC3730) for Net::DRI
EPP Session commands (RFC4930 obsoleting RFC3730) for Net::DRI
EPP Status for Net::DRI
.AERO EPP extensions for Net::DRI
.AERO EPP Contact extension commands for Net::DRI
.AERO EPP Domain extension commands for Net::DRI
AFNIC (.FR/.RE) EPP extensions for Net::DRI
AFNIC (.FR/.RE) EPP Contact extensions for Net::DRI
AFNIC (.FR/.RE) EPP Domain extensions for Net::DRI
AFNIC (.FR/.RE) EPP Notifications for Net::DRI
AFNIC (.FR/.RE) EPP Status for Net::DRI
ARNES (.SI) EPP extensions for Net::DRI
ARNES (.SI) EPP Contact extensions for Net::DRI
ARNES (.SI) EPP Domain extension commands for Net::DRI
ASIA EPP extensions for Net::DRI
.ASIA EPP CED extensions for Net::DRI
.ASIA EPP IPR extensions for Net::DRI
.AT EPP extensions for Net::DRI
NIC.AT Result Condition EPP Mapping for Net::DRI
NIC.AT Contact Extensions for Net::DRI
NIC.AT EPP Domain extension for Net::DRI
ENUM.AT Options EPP Mapping for Net::DRI
NIC.AT Message EPP Mapping for Net::DRI
ENUM.AT Result Condition EPP Mapping for Net::DRI
.AU EPP extensions for Net::DRI
.AU EPP Domain extension commands for Net::DRI
Afilias (.ORG & various ccTLDs) EPP extensions for Net::DRI
Afilias EPP IDN Language commands (EPP-IDN-Lang-Mapping.pdf) for Net::DRI
EPP renew redemption period support for Net::DRI
.BR EPP extensions for Net::DRI
.BR EPP Contact extension commands for Net::DRI
.BR EPP Domain extension commands for Net::DRI
.CAT EPP extensions for Net::DRI
.CAT EPP Contact extension commands for Net::DRI
.CAT EPP Defensive Registration extension commands for Net::DRI
.CAT EPP Domain extension commands for Net::DRI
.COOP EPP extensions for Net::DRI
.COOP EPP Contact extension commands for Net::DRI
.CZ EPP extensions for Net::DRI
.CZ EPP Contact extension commands for Net::DRI
.CZ Domain extension commands for Net::DRI
.CZ NSSET extension commands for Net::DRI
CentralNic EPP extensions for Net::DRI
EPP Release CentralNic extension commands for Net::DRI
EPP DNS TTL CentralNic extension commands for Net::DRI
EPP WebForwarding CentralNic extension commands for Net::DRI
DNSBE (.BE) EPP extensions for Net::DRI
DNSBE EPP Contact extension commands for Net::DRI
DNSBE EPP Domain extension commands for Net::DRI
EPP E.164 Number Mapping (RFC4114) for Net::DRI
EPP E.164 Validation (RFC5076) for Net::DRI
EPP E.164 Validation Information Example from RFC5076 for Net::DRI
EURid (.EU) EPP extensions for Net::DRI
EURid EPP Contact extension commands for Net::DRI
EURid EPP Domain extension commands for Net::DRI
EURid Sunrise EPP extension for Net::DRI
FCCN (.PT) EPP extensions for Net::DRI
FCCN (.PT) EPP Contact extensions for Net::DRI
FCCN (.PT) EPP Domain extension commands for Net::DRI
EPP Grace Period commands (RFC3915) for Net::DRI
Infrastructure ENUM .AT EPP extensions for Net::DRI
DNSLU EPP extensions for Net::DRI
.LU EPP Contact extension commands for Net::DRI
.LU EPP Domain extension commands for Net::DRI
EPP DNS-LU Poll extensions (DocRegistrar-2.0.6.pdf pages 35-37) for Net::DRI
.MOBI EPP extensions for Net::DRI
.MOBI EPP Domain extension commands for Net::DRI
.NAME EPP extensions for Net::DRI
EPP EmailFwd extension commands for Net::DRI
.NO EPP extensions for Net::DRI
.NO Contact Extensions for Net::DRI
.NO EPP Domain extension commands for Net::DRI
.NO Host Extensions for Net::DRI
.NO Mesage Extensions for Net::DRI
.NO Result Condition EPP Mapping for Net::DRI
EPP NSgroup extension commands for Net::DRI
NeuLevel EPP IDN Language Commands for Net::DRI
EPP Extension for .TRAVEL UIN for Net::DRI
.UK EPP extensions for Net::DRI
.UK EPP Account commands for Net::DRI
.UK EPP Contact commands for Net::DRI
.UK EPP Domain commands for Net::DRI
.UK EPP Host commands for Net::DRI
.PL EPP extensions (draft-zygmuntowicz-epp-pltld-03) for Net::DRI
.PL EPP over HTTPS connection handling for Net::DRI
.PL EPP Contact extension commands for Net::DRI
.PL EPP Domain extension commands for Net::DRI
.PL EPP Message extension commands for Net::DRI
.PRO EPP extensions for Net::DRI
.PRO EPP A/V extensions for Net::DRI
.PRO EPP domain extensions for Net::DRI
.SE EPP Extensions for Net::DRI
.SE EPP Domain/Contact Extensions for Net::DRI
.CH/.LI EPP extensions for Net::DRI
EPP DNS Security Extensions (RFC4310) for Net::DRI
.US EPP extensions (draft-liu-epp-usTLD-00) for Net::DRI
.US EPP Contact NEXUS Extensions for Net::DRI
VeriSign EPP extensions for Net::DRI
EPP IDN Language commands (EPP-IDN-Lang-Mapping.pdf) for Net::DRI
.JOBS EPP contact extensions for Net::DRI
VeriSign EPP NameStore Extension for Net::DRI
EPP Low Balance Mapping (EPP-LowBalance-Mapping.pdf) for Net::DRI
EPP RGP Poll Mapping (EPP-RGP-Poll-Mapping.pdf) for Net::DRI
EPP Sync commands (draft-hollenbeck-epp-sync-01) for Net::DRI
EPP Whois Info (EPP-Whois-Info-Ext.pdf) for Net::DRI
EPP Message for Net::DRI
Gandi Web Services Protocol for Net::DRI
Gandi Web Services Account commands for Net::DRI
Gandi Web Services Connection handling for Net::DRI
Gandi Web Services Domain commands for Net::DRI
Gandi Web Services Message for Net::DRI
IRIS Protocols (RFC 3981,3982,3983,4414,4698,4991,4992,4993,5144) for Net::DRI
IRIS Core (RFC3981) functions for Net::DRI
IRIS DCHK (RFC5144) Domain Commands for Net::DRI
IRIS DCHK Domain Status for Net::DRI
IRIS LWZ connection handling (RFC4993) for Net::DRI
IRIS Message for Net::DRI
IRIS XCP Connection Handling (RFC4992) for Net::DRI
Superclass of all protocol messages in Net::DRI
OVH Web Services Protocol for Net::DRI
OVH Web Services Account commands for Net::DRI
OVH Web Services Connection handling for Net::DRI
OVH Web Services Domain commands for Net::DRI
OVH Web Services Message for Net::DRI
OpenSRS XCP Protocol for Net::DRI
OpenSRS XCP Account commands for Net::DRI
OpenSRS XCP Connection handling for Net::DRI
OpenSRS XCP Domain commands for Net::DRI
OpenSRS XCP Message for Net::DRI
OpenSRS XCP Session commands for Net::DRI
RRI Protocol (DENIC-11) for Net::DRI
RRI Connection handling (DENIC-11) for Net::DRI
RRI Contact commands (DENIC-11) for Net::DRI
RRI Domain commands (DENIC-11) for Net::DRI
RRI Message for Net::DRI
RRI Registry messages commands (DENIC-11) for Net::DRI
RRI Session commands (DENIC-11) for Net::DRI
RRP 1.1/2.0 Protocol for Net::DRI
RRP Connection handling for Net::DRI
RRP Domain commands for Net::DRI
RRP Host commands for Net::DRI
RRP Session commands for Net::DRI
RRP Status for Net::DRI
RRP Message for Net::DRI
Encapsulate Details of an Operation Result (with Standardization on EPP) for Net::DRI
Whois Protocol for Net::DRI
Whois Connection handling for Net::DRI
Whois Domain commands (RFC3912) for Net::DRI
.AERO Whois commands (RFC3912) for Net::DRI
.AT Whois commands (RFC3912) for Net::DRI
.BIZ Whois commands (RFC3912) for Net::DRI
.CAT Whois commands (RFC3912) for Net::DRI
.COM/.NET Whois commands (RFC3912) for Net::DRI
.EU Whois commands (RFC3912) for Net::DRI
.INFO Whois commands (RFC3912) for Net::DRI
.LU Whois commands (RFC3912) for Net::DRI
.MOBI Whois commands (RFC3912) for Net::DRI
.NAME Whois commands (RFC3912) for Net::DRI
.ORG Whois commands (RFC3912) for Net::DRI
.SE Whois commands (RFC3912) for Net::DRI
.TRAVEL Whois commands (RFC3912) for Net::DRI
.US Whois commands (RFC3912) for Net::DRI
.WS Whois commands (RFC3912) for Net::DRI
Whois commands (RFC3912) for Net::DRI
Whois Message for Net::DRI
Specific Registry Driver Instance inside Net::DRI
Command Line Shell for Net::DRI, with batch features and autocompletion support
Superclass of all Transport Modules in Net::DRI
Deferred Transport for Net::DRI
Net::DRI dummy transport for tests & debug
HTTP/HTTPS Transport for Net::DRI
SOAP Transport for Net::DRI
SOAP+WSDL Transport for Net::DRI
XML-RPC Transport for Net::DRI
SMTP transport for Net::DRI
SOAP (HTTP/HTTPS) Transport for Net::DRI
TCP/TLS Socket connection for Net::DRI
Various useful functions for Net::DRI operations

Provides

in lib/Net/DRI.pm