0.81 2007-11-07 = Updated all RFCs references related to EPP : RFCs 4930,4931,4932,4933,4934 are now obsoleting RFCs 3730,3731,3732,3733,3734 xsi:schemaLocation is not removed in messages created, but may be removed in future releases we do not add an empty domain:chg any more for pure extension update commands = Conformity with Perl critic Best Practices (level 5) + Added support for .ASIA extensions (work submitted by Tonnerre Lombard) + Update for .EU : taking into account new version=2 for domain_info & domain_check (retrieving more data from registry) Warning : this changes some registry reply codes, see registry documentation + Contact : new method _intfirst() (from suggestion by Rony Meyer) + Transport/Socket : new parameter protocol_data, see documentation (from idea by Rony Meyer) + DRD/VNDS : also handle .CC & .TV + DRD/NAME and DRD/NU : provided by Alexander Biehl + 3 new EPP extensions for CentralNic : WebForwarding, TTL & Domain Release (see t/621centralnic_epp.t for examples of use) + Whois support for .MOBI .NAME (see example in eg/whois.pl) + Transport : new way to do logging (send/receive methods receive an extra parameter at beginning, the trid) = DRD : is_my_tld() correctly handles registries with more than one TLD (from initial bugreport by Rony Meyer) = Data/Hosts : new method clear() (patch by Tonnerre Lombard) = Protocol/EPP/Extensions/VeriSign/NameStore : extension not always provided by registry (bugfix from Rony Meyer) = Protocol/EPP/Extensions/VeriSign/IDNLanguage DRD/ICANN : allow use of xn-- domain names (from suggestion by Rony Meyer) [ This may change in the future, depending on how Net::DRI implements IDN ] - DRD : bugfix in domain_can (bugfix from Tonnerre Lombard) - Protocol/EPP/* (various parses) : better handling of XML nodes/elements (from initial bugreport by Tonnerre Lombard for .LU) 0.80 2007-04-19 + DAS support for .EU & .BE : quick lookup of domain availability ; see eg/eurid_das.pl for an example (same interface as domain_check) + Whois support (RFC3912) for thick registries (full) and thin registries (only registry part) ; see eg/whois.pl for an example (same interface as domain_info) ; parse provided for .COM .NET .ORG .BIZ .INFO .AERO .EU + .LU support : all extensions (except startTLS & IDNs) ; we do not enforce policy of only one IPv4 and one IPv6 at most for hosts + Transport/Socket : new parameter ssl_version (suggestion from Rony Meyer) + Transport/Socket {RRP,EPP}/Protocol/Connection : allow changing password at connection (from initial patch by Rony Meyer) + DRD/BIZ (provided by Rony Meyer) = DateTime::Format::ISO8601 : required version is now 0.06 (0.0403 is also ok, but 0.05 is absolutely not ok, hence we upgraded the required version) = .AT updates (contributed by Michael Braunoeder from NIC.AT) = Data/Contact : new as_string() method for quick display = Data/ContactSet : minor changes, rem as alias to del, add/del/set returns the object itself, as new() (with explicit return) = Protocol/EPP/Core/{Domain,Host} VeriSign/PollRGP: make sure to lowercase domain names given back by registry (from bugreport by Rony Meyer) We advise passing to Net::DRI only domain names and hostnames in lowercase. - DRD : bugfix in contact_info for cached values (bugfix from Rony Meyer) - Protocol/EPP/Core/Host : bugfix in parsing IP addresses (bugreport from Rony Meyer) 0.70 2007-03-12 + .COOP full support : all operations with EPP, see included example in eg/coop_epp.pl and t/619coop_epp.t (with help from registry staff member Dan Maharry) + .AT full support : all operations with EPP, contributed by Michael Braunoeder from NIC.AT + .EU (DRD/EURid) : added Bulgaria and Romania + Transport/Socket : a new trid key whose value is a code ref can be provided to generate transaction ids (from Rony Meyer idea) + Transport/Socket : we pass MultiHomed => 1 when opening socket (tcp and tls) in order to try all IPs (suggested by Michael Braunoeder) + Transport/Socket : for TLS, a callback can be specified to verify server credentials + DRD/INFO DRD/ORG : contributed by Rony Meyer + Contact : int2loc() and loc2int() methods to create localized version from internationalized, or the opposite = .MOBI : maintainer url is not mandatory (bugfix from Rony Meyer) = Protocol/EPP/Extensions/SecDNS : during domain create, no secdns data is not a fatal error anymore = Protocol/EPP/Extensions/MOBI/Domain : maintainer_url is not mandatory (bugfix from Rony Meyer) = Protocol/EPP/Message : for poll replies, id of _current_ message is available, like count (see source) = DRD/ICANN : operations (except domain creation) on one-letter and two-letter domain names are now possible (not denied) ; this should really be handled on a per-registry basis (from suggestion by Rony Meyer) = Protocol/EPP/Core/Domain : for some registries (like .AT) we send all nameservers' IP, even if nameserver is in domain = Protocol/EPP/Core/Status : delete/renew/update operations are allowed even if some pending status is set (per draft-hollenbeck-epp-rfc3731bis-05.txt draft-hollenbeck-epp-rfc3732bis-04.txt draft-hollenbeck-epp-rfc3733bis-06.txt) - Protocol/EPP/Core/RegistryMessage : correctly handle case of no message at all, or message without extra data (bugreport by Elias Sidenbladh) ; see end of t/601vnds_epp.t - .SE (Data/Contact/SE DRD/SE) : bugfixes by Elias Sidenbladh - Protocol/EPP/Core/Contact : minor bugfix in contact creation (parse_disclose) from Elias Sidenbladh - Transport/Socket : ssl_verify was not taken into account, bugfix by Rony Meyer - Protocol/EPP/Extensions/{DNSBE,Eurid}/Domain : add op="request" for transferq commands (bugreport and fix from Cedric Dubois) - Transport : use true loops in send() and receive() (bugreport from Elias Sidenbladh) 0.40 2006-09-22 + .BE full support : all operations with EPP except agent update & info (with help from Roger Heykoop) + EPP : better support for results, we parse all replies for which we already have a parse function registered + EPP/Extensions : RGP Notification & Low Balance Notification for VeriSign (poll messages) + DRD : new method message_count() to retrieve the number of messages available + Transport/Socket : added ping(), with autoreconnection if wanted and necessary + EPP & RRP : for all actions returning information, a key action is created whose value is the name of the action that has triggered this reply (see 600vnds_rrp.t 601vnds_epp.t 605vnds_epp_nsgroup.t 613cat_epp.t) = EPP/Core/Contact : correctly handle case of contact:id being chosen by registry during contact:create (see 601vnds_epp.t) = EPP : uses instead of as keepalive message (explicitely allowed in draft-hollenbeck-epp-rfc3730bis-02.txt) = EPP/Extensions/CAT/DefensiveRegistration : better handling of XML namespace = Transport : creation time is available through time_creation() like time_open() and time_used() - Transport : correct month & minutes in logging (bugfix by Rony Meyer & Christian Kratzer) - DRD/VNDS : verify_domain_transfer does not need a full domain_info with hosts=all, none is enough (bugfix by Rony Meyer) - DRD : correct retrieval of result status from cache (bug report by Rony Meyer) - Protocol/EPP/Connection : take into account message language if given by registry (bug report by Rony Meyer) - Protocol/EPP/Extensions/VeriSign/WhoisInfo : handle default value for indirect domain_info calls (bug report by Rony Meyer) - Protocol/EPP/Extensions/GracePeriod : correctly takes into account VeriSign breaking its own RFC (bug report by Rony Meyer) 0.30 2006-06-15 + .FR full support : all operations by email (form version 2.0.0 for both organizations & individuals) + .COM .NET full support in EPP with multiple VeriSign extensions: Sync (see t/610vnds_epp_sync.t) IDN Language (see t/611vnds_epp_idnlang.t) Whois Info (see t/612vnds_epp_whoisinfo.t) NameStore from original patch by Rony Meyer (see t/616vnds_epp_namestore.t) Use Protocol/EPP/Extensions/VeriSign as protocol class to have needed extensions loaded automatically + .MOBI full support : Domain extension for maintainer url (see t/615mobi_epp.t) + .US full support : Contact extension for NEXUS handling (see t/609vnds_epp_us.t) + .AERO full support : Domain & Contact extensions for ENS (see t/614aero_epp.t) + .CAT full support : Domain & Contact extensions, and all operations on Defensive Registrations (see t/613cat_epp.t and eg/cat_epp.pl) thanks to Klaus Malorny & the .CAT registry + Infrastructure ENUM.AT (contributed by Michael Braunoeder from ENUM.AT) + Protocol/EPP/Extensions/SecDNS updated to RFC4310 + .PL updated to latest draft + new_profile / new_current_profile : additional API with only 3 parameters (profile name + 2 ref arrays for parameters, both can be empty) using registry default transport & protocol classes (see transport_protocol_default) + ResultStatus->trid() can also be called in list context to get back for EPP the svTRID along with the clTRID (suggestion by Elias Sidenbladh) = DRD : for transfers, like for creations, the duration is in the duration attribute not period = Protocol/EPP/Extensions/EURid/Domain : multiple nsgroup can be given (patch from Christian Kratzer) = DRD/ICANN : taking care of some lifted restrictions for newest gTLDs (starting with .TRAVEL) = Protocol/EPP/Core/Domain : for domain_info, hosts=all is the default, but you can pass another value (sub, del or none) in the hosts attribute (bugfix from Rony Meyer) = Protocol/EPP/Extensions/E164 : small update to work with IENUMAT relaxed rules from RFC4114 = Util : update in list of country codes, add JE GG IM per http://www.iso.org/iso/en/prods-services/iso3166ma/03updates-on-iso-3166/nlv11-div.html = Transport/Socket : you can optionnally set the local hostname when connecting (suggestion from Brian Drysdale) = Protocol/Gandi : currently deactivated since change of website - Protocol/EPP/Core/Domain : domain:pw may be empty after domain:info for an object we do not own (bugfix from Rony Meyer) - Protocol/EPP : better handling of registries various XML namespaces 0.22 2006-05-12 + EPP Poll from prototype by Elias Sidenbladh (Protocol/EPP/Core/RegistryMessage) : new methods message_retrieve() (=poll request) message_delete() (=poll ack) and message_waiting() in Net::DRI Please see examples at the end of t/601vnds_epp.t on how to retrieve info on a message, and info on all messages (count & first id). + Preliminary support for .FR/.RE by email : only domain creation for now, without parsing of registry emails coming back (Net::DRI::Data::Contact::AFNIC Net::DRI::Protocol::AFNIC::Email Net::DRI::Protocol::AFNIC::Email::Message Net::DRI::Protocol::AFNIC::Email::Domain Net::DRI::Transport::SMTP) For all asynchronous operations, the result status is command successful but pending. + In all result status, new method trid() that stores the (local/client) transaction identifier of the operation that generated this result status, and new method is_pending() to know if the operation has been done or is pending review, which will be the case for all asynchronous registries (Protocol/ResultStatus) = EPP + RRP : we use the nameserver list provided in domain operations only if it is not empty = Data/Contact/EURid : lower limits for name/org length than in EPP - Transport/Socket : correctly shut down alarms in end() (thanks to Sten Spans) - Protocol/EPP/Extensions/EURid/Domain : bugfix for transfer/transferq/trade requests when specifying nameservers, from bug report by Andreas Wittkemper - Protocol/EPP/Connection : bugfix when there is no svcExtension (found by Michael Braunoeder) - Protocol/EPP/Core/Contact : correctly handle all cases of empty fax (and tel for that matter), bug report from Brian 0.21 2006-03-04 + Support for .SE (based on EPP) thanks to Elias Sidenbladh and the NIC SE team + Support for .PL (based on EPP) except the Future object (interoperability with registry not tested) + Data/Contact,Protocol/EPP/Core/Contact : we now handle both internationalized and localized data, for registries handling both. Changes are backwards compatible with previous version, but make sure to test on your systems before installing in production. + Protocol/ResultStatus : new print_full() method to have all details from registry + Data/Hosts : new set() method + Transport : we keep time of last use (idea from Brian), with method time_used() = Transport/Socket : if sending fails, and retry > 1, we try to reconnect ; this is a crude way to handle registry timeouts = local_object() enables you to create any kind of local objects, including hosts, contacts, contactsets, changes, etc... without having to load and directly call Net::DRI::Data::Hosts,Contact,ContactSet,Changes Please see the modified t/606eurid_epp.t for examples = better error debugging in new_profile() when loading Transport and Protocol classes = Transport/Socket : do not use IO::Socket::SSL::context_init anymore, it is marked as deprecated in module - Protocol/EPP/Message : correct creation of commands (bug found by Elias Sidenbladh) - Protocol/{EPP,RRP}/Message : correct encoding of outgoing messages with Encode::encode() - eg/eurid_epp.pl : the filehandle used for logging must be closed after $dri->end() not before 0.20 2005-12-02 + EURid/Sunrise : we automatically reconnect after each apply command (successful or not), when needed, since the connection is dropped by registry (bug reported by Lucas Vossberg) + Transport/Socket : a client certificate is no more mandatory, the default verification level is lowered, better error message for SSL problems (suggested by Peter van Dijk) - Protocol/EPP/Extensions/EURid/Sunrise : various bugfixes for documentaryevidence=thirdparty (found by Yves Cartenstadt) = EURid : the sample provided (eurid_epp.pl) dumps all exchanges to a file 0.19 2005-11-14 + Updates for conformity with latest EURid specifications : # extra information in result of apply during Sunrise (reference, code, crDate) # new action apply_info during Sunrise to get back information on previously submitted applications (reference, code, crDate, application_status, contact, ns, docsReceivedDate, adr) + Protocol/Resultatus : extra information from registry (error messages) is available with info() + EPP/Extensions/EURid : we parse eurid:msg for extra information, especially useful if errors - EPP/Extensions/EURid/Sunrise : invalid call for nsgroup (bug found & fixed by Jørgen Thomsen) = Data/Hosts has 2 significative changes : you can use get_details with a name and you can add a nameserver already in the list, in which case the new IP addresses are added with existing ones (without duplicates) 0.18 2005-11-06 + Many improvements for .EU support : no need to specify empty useless values needed for EPP but not used by EURid (domain/contact auth), no status handling for domains, example for test systems (eg/eurid_epp.pl) - EPP/Message : use bytes is necessary for correct length calculation = Transport : if a server closes the connection on us (at protocol level, not socket one), we note the fact and will try to reconnect later if needed = RRP : take into account PENDINGRESTORE PENDINGDELETE PENDINGTRANSFER status 0.17 2005-10-24 + Full support for EURid (.EU) with Net::DRI::DRD::EURid, Net::DRI::Data::Contact::EURid, Net::DRI::Protocol::EPP::Extensions::EURid and Net::DRI::Protocol::EPP::Extensions::EURid::* + Query list of object types managed by registry (ex: domain, contact, etc...) with $dri->has_object() + A copy of all exchanges can be sent to the filehandle of your choice (see log_fh in Net::DRI::Transport) - BUGFIX in handling of dates in EPP : we switch to UTC before printing - BUGFIX in Net::DRI::Protocol::EPP::Connection : data may come in multiple chunks - BUGFIX in Net::DRI::Protocol::EPP::Core::Domain : handling of hosts as attributes = Net::DRI::Data::Hosts::add() returns the object itself (useful for chains) = Net::DRI::Data::Contact::validate() verifies the country code against the list in Util = No more hardcoding of various xml namespaces names in various modules, the list is set during protocol object creation. = domain_create() : a duration is not mandatory 0.16 2005-10-04 + Three new EPP extensions : SecDNS (for DNSSEC), E164 (for ENUM) and NSgroup (for .BE & .EU) + New registry : .WS + New API in addition to the existing one, with Net::DRI::Data::RegistryObject : needed for extensions that handle new types of objects, such as NSgroup + Take into account new error codes for AFNIC Web Services (technical note RP-20050913/DT-01) + Add a name() and loid() accessor in Net::DRI::Data::Hosts - In EPP, we load host commands only if hosts are handled as an object by the registry - For domain_info(), host_info() and contact_info() we use data from cache, if we really did an *_info() before. - Various bugfixes in DRD and RRP protocol. = Rework of Net:DRI::Protocol::ResultStatus & associated classes to handle more cases by directly passing the EPP code = Simpler in-memory XML nodes representation in Net::DRI::Protocol::EPP::Message = Rework of Net::DRI::Protocol::{EPP,RRP}::Connection & Net::DRI::Transport::Socket (send_login) to die with a Net::DRI::Protocol::ResultStatus in case of problems + Changes in Net::DRI::Registry::new{,_current}_profile to return a ResultStatus object = Change in EPP domain_update as RFC3731 is ambigous (text & XML schema do not agree) With this change, we now conform to the XML schema, which seems normative per provreg mailing-list consensus. This will break with any server implementing the text part 0.15 2005-07-20 + New protocol: EPP, with Grace Period extension (other can easily be added) + Better way to create statuses (no() function in StatusList), see README for domain_update_status_add and statuses name are not put in uppercase automatically + Handling of contacts : modules Contact & ContactSet + new functions in DRD (contact_*) + New functions: domain_check_multi, host_check_multi (if registry supports, check multiple objects at once) - BUGFIX in Net::DRI::Util::is_ipv6 - BUGFIX : better checks of references with UNIVERSAL::isa instead of pure ref() = Rework of Net::DRI::Transport::Socket & associated connection classes 0.12 2005-05-31 + New ``registries'': 1) AFNIC (through web services, domain check only) 2) Gandi (through web site, domain nameservers update only) + New transport: SOAP (HTTP/HTTPS only) + New transport: Web (Web Scraping) + New protocol: Gandi Web Site (domain update only) + New protocol: AFNIC web services (domain check only) + New way of using profiles in Net::DRI::Registry : an auto switch functionnality is provided so that the calling app does not have to call target() explicitely over and over (see README for details) - BUGFIX for RRP : order of elements is now exactly as specified by standard - BUGFIX for Net::DRI::DRD in host_is_mine: parameters (warning not triggered in some perls) - BUGFIX for Net::DRI::DRD in err_invalid_domain_name/err_invalid_host_name: correct message & really raise an exception if a problem is found ! - BUGFIX for Net::DRI::DRD in check_name: correct count of dots + Net::DRI::Transport::Socket : require on the protocol connection class to make sure it works - DOCFIX for Net::DRI::Data::Hosts (a ] was missing for the ref array of IPs) + New tests for Net::DRI::Protocol::RRP::Connection, Net::DRI::Protocol::AFNIC::WS::Message, Net::DRI::Protocol::Gandi::Web::Message, Net::DRI::Protocol::Gandi::Web::Connection - BUGFIX : no more warnings in tests, we use the TODO block of Test::More 0.11 2005-04-25 + POD NAME section for each file with a short description - BUGFIX for VERSION (. missing) + New files: Changes, TODO = No changes in code 0.10 2005-04-24 = First version on CPAN