From 23b2ab58ea94340749b9e409619ea9dd04ff9f28 Mon Sep 17 00:00:00 2001 From: Paulo Jorge Date: Tue, 26 Apr 2022 10:02:19 +0100 Subject: [PATCH 1/4] move .hiphop from unireg to unireg_nonshared profile --- lib/Net/DRI/DRD/NGTLD.pm | 8 ++++---- lib/Net/DRI/DRD/UniRegistry/NonShared.pm | 2 +- lib/Net/DRI/DRD/UniRegistry/UniRegistry.pm | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/Net/DRI/DRD/NGTLD.pm b/lib/Net/DRI/DRD/NGTLD.pm index a6c55a77..fdfd9338 100644 --- a/lib/Net/DRI/DRD/NGTLD.pm +++ b/lib/Net/DRI/DRD/NGTLD.pm @@ -1067,7 +1067,7 @@ xn--3ds443g xn--fiq228c5hs xn--nyqy26a xn--rhqv96g xn--vuq861b =head3 TLDs -audio blackfriday christmas click country diet flowers game gift guitars help hiphop hiv hosting juegos link lol mom photo pics property sexy tattoo trust +audio blackfriday christmas click country diet flowers game gift guitars help hiv hosting juegos link lol mom photo pics property sexy tattoo trust Contended TLD's not included @@ -1098,7 +1098,7 @@ L http://www.verisign.com/e return { bep_type => 2, # shared registry - tlds => ['audio','blackfriday','christmas','click','country','diet','flowers','game','gift','guitars','help','hiphop','hiv','home','hosting','juegos','link','lol','mom','photo','pics','property','sexy','tattoo','trust'], + tlds => ['audio','blackfriday','christmas','click','country','diet','flowers','game','gift','guitars','help','hiv','home','hosting','juegos','link','lol','mom','photo','pics','property','sexy','tattoo','trust'], transport_protocol_default => ['Net::DRI::Transport::Socket',{},'Net::DRI::Protocol::EPP::Extensions::UniRegistry',{'brown_fee_version' => '0.7'}], factories => [ {'object'=>'contact','factory' => sub { return Net::DRI::Data::Contact::UniRegistry->new(@_); } } ], requires => [ 'Net::DRI::Data::Contact::UniRegistry'], @@ -1109,7 +1109,7 @@ L http://www.verisign.com/e =head3 TLDs -creditunion love +creditunion hiphop love UNR no longer own any TLDs so from now on they plan to use a distinct server for some TLDs: .coop (epp.registry.coop:700), .love (epp.registry.love:700) @@ -1131,7 +1131,7 @@ UNR no longer own any TLDs so from now on they plan to use a distinct server for return { bep_type => 1, # dedicated (Since UNR no longer own any TLDs from now on and for some TLDs: "... most of our TLDs will be operated separately by their respective registry operators") - tlds => ['creditunion','love'], + tlds => ['creditunion','hiphop','love'], transport_protocol_default => ['Net::DRI::Transport::Socket',{},'Net::DRI::Protocol::EPP::Extensions::UniRegistry',{'brown_fee_version' => '0.7'}], factories => [ {'object'=>'contact','factory' => sub { return Net::DRI::Data::Contact::UniRegistry->new(@_); } } ], requires => [ 'Net::DRI::Data::Contact::UniRegistry'], diff --git a/lib/Net/DRI/DRD/UniRegistry/NonShared.pm b/lib/Net/DRI/DRD/UniRegistry/NonShared.pm index 696a97f9..0edb3c68 100644 --- a/lib/Net/DRI/DRD/UniRegistry/NonShared.pm +++ b/lib/Net/DRI/DRD/UniRegistry/NonShared.pm @@ -97,7 +97,7 @@ sub new sub periods { return map { DateTime::Duration->new(years => $_) } (1..10); } sub name { return 'UniRegistry::NonShared'; } -sub tlds { return ('creditunion', 'love'); } +sub tlds { return ('creditunion', 'hiphop', 'love'); } sub object_types { return ('domain','contact','ns'); } sub profile_types { return qw/epp/; } diff --git a/lib/Net/DRI/DRD/UniRegistry/UniRegistry.pm b/lib/Net/DRI/DRD/UniRegistry/UniRegistry.pm index 44aaed10..a2abaafa 100644 --- a/lib/Net/DRI/DRD/UniRegistry/UniRegistry.pm +++ b/lib/Net/DRI/DRD/UniRegistry/UniRegistry.pm @@ -104,7 +104,7 @@ sub new sub periods { return map { DateTime::Duration->new(years => $_) } (1..10); } sub name { return 'UniRegistry::UniRegistry'; } -sub tlds { return ('audio', 'blackfriday', 'christmas', 'click', 'country', 'diet', 'flowers', 'game', 'gift', 'guitars', 'help', 'hiphop', 'hiv', 'hosting', 'juegos', 'link', 'lol', 'mom', 'photo', 'pics', 'property', 'sexy', 'tattoo', 'trust'); } +sub tlds { return ('audio', 'blackfriday', 'christmas', 'click', 'country', 'diet', 'flowers', 'game', 'gift', 'guitars', 'help', 'hiv', 'hosting', 'juegos', 'link', 'lol', 'mom', 'photo', 'pics', 'property', 'sexy', 'tattoo', 'trust'); } sub object_types { return ('domain','contact','ns'); } sub profile_types { return qw/epp/; } From f83a8aeb1816b37fb650af89cb06b68cb1e87797 Mon Sep 17 00:00:00 2001 From: Paulo Jorge Date: Tue, 26 Apr 2022 10:34:27 +0100 Subject: [PATCH 2/4] UniRegistry NonShared doesnt use URC --- lib/Net/DRI/DRD/NGTLD.pm | 1 - lib/Net/DRI/DRD/UniRegistry/NonShared.pm | 9 --------- 2 files changed, 10 deletions(-) diff --git a/lib/Net/DRI/DRD/NGTLD.pm b/lib/Net/DRI/DRD/NGTLD.pm index fdfd9338..63e0ae9c 100644 --- a/lib/Net/DRI/DRD/NGTLD.pm +++ b/lib/Net/DRI/DRD/NGTLD.pm @@ -1134,7 +1134,6 @@ UNR no longer own any TLDs so from now on they plan to use a distinct server for tlds => ['creditunion','hiphop','love'], transport_protocol_default => ['Net::DRI::Transport::Socket',{},'Net::DRI::Protocol::EPP::Extensions::UniRegistry',{'brown_fee_version' => '0.7'}], factories => [ {'object'=>'contact','factory' => sub { return Net::DRI::Data::Contact::UniRegistry->new(@_); } } ], - requires => [ 'Net::DRI::Data::Contact::UniRegistry'], whois_server => (defined $tld && $tld =~ m/\w+/ ? 'whois.nic.' . $tld : undef), } if $bep eq 'unireg_nonshared'; diff --git a/lib/Net/DRI/DRD/UniRegistry/NonShared.pm b/lib/Net/DRI/DRD/UniRegistry/NonShared.pm index 0edb3c68..1e2bf8c5 100644 --- a/lib/Net/DRI/DRD/UniRegistry/NonShared.pm +++ b/lib/Net/DRI/DRD/UniRegistry/NonShared.pm @@ -20,8 +20,6 @@ use strict; use warnings; use base qw/Net::DRI::DRD::UniRegistry::UniRegistry/; -use Net::DRI::Data::Contact::UniRegistry; - use DateTime::Duration; =pod @@ -109,12 +107,5 @@ sub transport_protocol_default return; } -sub set_factories -{ - my ($self,$po)=@_; - $po->factories('contact',sub { return Net::DRI::Data::Contact::UniRegistry->new(@_); }); - return; -} - #################################################################################################### 1; From 773457829b75d0cf134904f47cf409f8867edf82 Mon Sep 17 00:00:00 2001 From: Paulo Jorge Date: Tue, 26 Apr 2022 16:03:12 +0100 Subject: [PATCH 3/4] rewrite default uniregistry extensions + introduce unireg product + add tests --- lib/Net/DRI/DRD/NGTLD.pm | 2 +- lib/Net/DRI/DRD/UniRegistry/UniRegistry.pm | 2 +- .../Protocol/EPP/Extensions/UniRegistry.pm | 4 +- .../DRI/Protocol/EPP/Extensions/UniRegistry.t | 61 ++++++++++++++++++- 4 files changed, 65 insertions(+), 4 deletions(-) diff --git a/lib/Net/DRI/DRD/NGTLD.pm b/lib/Net/DRI/DRD/NGTLD.pm index 63e0ae9c..12f5fed2 100644 --- a/lib/Net/DRI/DRD/NGTLD.pm +++ b/lib/Net/DRI/DRD/NGTLD.pm @@ -1099,7 +1099,7 @@ L http://www.verisign.com/e return { bep_type => 2, # shared registry tlds => ['audio','blackfriday','christmas','click','country','diet','flowers','game','gift','guitars','help','hiv','home','hosting','juegos','link','lol','mom','photo','pics','property','sexy','tattoo','trust'], - transport_protocol_default => ['Net::DRI::Transport::Socket',{},'Net::DRI::Protocol::EPP::Extensions::UniRegistry',{'brown_fee_version' => '0.7'}], + transport_protocol_default => ['Net::DRI::Transport::Socket',{},'Net::DRI::Protocol::EPP::Extensions::UniRegistry',{'brown_fee_version' => '0.7', 'default_product'=>'UNIREG'}], factories => [ {'object'=>'contact','factory' => sub { return Net::DRI::Data::Contact::UniRegistry->new(@_); } } ], requires => [ 'Net::DRI::Data::Contact::UniRegistry'], whois_server => 'whois.uniregistry.net', diff --git a/lib/Net/DRI/DRD/UniRegistry/UniRegistry.pm b/lib/Net/DRI/DRD/UniRegistry/UniRegistry.pm index a2abaafa..d5d39934 100644 --- a/lib/Net/DRI/DRD/UniRegistry/UniRegistry.pm +++ b/lib/Net/DRI/DRD/UniRegistry/UniRegistry.pm @@ -112,7 +112,7 @@ sub transport_protocol_default { my ($self,$type)=@_; - return ('Net::DRI::Transport::Socket',{},'Net::DRI::Protocol::EPP::Extensions::UniRegistry',{ 'brown_fee_version' => '0.7' }) if $type eq 'epp'; + return ('Net::DRI::Transport::Socket',{},'Net::DRI::Protocol::EPP::Extensions::UniRegistry',{ 'brown_fee_version' => '0.7', 'default_product'=>'UNIREG' }) if $type eq 'epp'; return; } diff --git a/lib/Net/DRI/Protocol/EPP/Extensions/UniRegistry.pm b/lib/Net/DRI/Protocol/EPP/Extensions/UniRegistry.pm index c7cbacbd..ebebd320 100644 --- a/lib/Net/DRI/Protocol/EPP/Extensions/UniRegistry.pm +++ b/lib/Net/DRI/Protocol/EPP/Extensions/UniRegistry.pm @@ -39,11 +39,13 @@ sub core_modules return @c; } +## tucows purchased uniregistry and now they're in the process of moving from shared epp server => one server perl tld (they don't use Centric/Market and Sync extensions, only UNIREG AND ICM products) ## icm profile use 2x extra extensions - afilias association and ipr - related with migration from Afilias to Uniregistry::ICM platform sub default_extensions { my ($self,$rp)=@_; - my @c=qw/GracePeriod SecDNS IDN LaunchPhase UniRegistry::Centric UniRegistry::RegistryMessage UniRegistry::Market VeriSign::Sync CentralNic::Fee/; + my @c=qw/GracePeriod SecDNS IDN LaunchPhase UniRegistry::RegistryMessage CentralNic::Fee/; + push @c,qw/UniRegistry::Centric UniRegistry::Market VeriSign::Sync/ if exists $rp->{default_product} && defined $rp->{default_product} && $rp->{default_product} =~ m/^(ICM|UNIREG)$/; push @c,qw/Afilias::Association Afilias::IPR/ if exists $rp->{default_product} && defined $rp->{default_product} && $rp->{default_product} eq 'ICM'; return @c; diff --git a/t/Net/DRI/Protocol/EPP/Extensions/UniRegistry.t b/t/Net/DRI/Protocol/EPP/Extensions/UniRegistry.t index 047ee1d9..48391433 100644 --- a/t/Net/DRI/Protocol/EPP/Extensions/UniRegistry.t +++ b/t/Net/DRI/Protocol/EPP/Extensions/UniRegistry.t @@ -8,7 +8,7 @@ use Net::DRI::Data::Raw; use DateTime; use DateTime::Duration; -use Test::More tests => 60; +use Test::More tests => 75; use Test::Exception; eval { no warnings; require Test::LongString; Test::LongString->import(max => 100); $Test::LongString::Context=50; }; if ( $@ ) { no strict 'refs'; *{'main::is_string'}=\&main::is; } @@ -109,6 +109,65 @@ is($dri->get_info('exist','domain','example22.love'),0,'domain_check .love multi is($dri->get_info('exist','domain','examexample2.love'),1,'domain_check .love multi get_info(exist) 2/2'); is($dri->get_info('exist_reason','domain','examexample2.love'),'In use','domain_check .love multi get_info(exist_reason)'); +$R2=$E1.''.r().'example22.hiphopexamexample2.hiphopIn use'.$TRID.''.$E2; +$rc=$dri->domain_check('example22.hiphop','examexample2.hiphop'); +is($R1,$E1.'example22.hiphopexamexample2.hiphopABC-12345'.$E2,'domain_check .hiphop multi build'); +is($rc->is_success(),1,'domain_check .hiphop multi is_success'); +is($dri->get_info('exist','domain','example22.hiphop'),0,'domain_check .hiphop multi get_info(exist) 1/2'); +is($dri->get_info('exist','domain','examexample2.hiphop'),1,'domain_check .hiphop multi get_info(exist) 2/2'); +is($dri->get_info('exist_reason','domain','examexample2.hiphop'),'In use','domain_check .hiphop multi get_info(exist_reason)'); + +$R2=$E1.' + hiphop EPP Server + 2022-04-26T14:55:00.310Z + + 1.0 + en + es + fr + urn:ietf:params:xml:ns:domain-1.0 + urn:ietf:params:xml:ns:host-1.0 + urn:ietf:params:xml:ns:contact-1.0 + http://ns.uniregistry.net/eps-1.0 + + urn:ietf:params:xml:ns:secDNS-1.1 + urn:ietf:params:xml:ns:rgp-1.0 + urn:ietf:params:xml:ns:idn-1.0 + urn:ietf:params:xml:ns:launch-1.0 + urn:ietf:params:xml:ns:fee-0.7 + + + + + + + + + + + + + + + + + + + + + '.$E2; +$rc=$dri->process('session','noop',[]); +is($R1,$E1.''.$E2,'session noop build (hello command)'); +is($rc->is_success(),1,'session noop is_success'); +is($rc->get_data('session','server','server_id'),'hiphop EPP Server','session noop get_data(session,server,server_id)'); +is($rc->get_data('session','server','date'),'2022-04-26T14:55:00','session noop get_data(session,server,date)'); +is_deeply($rc->get_data('session','server','version'),['1.0'],'session noop get_data(session,server,version)'); +is_deeply($rc->get_data('session','server','lang'),['en','es','fr'],'session noop get_data(session,server,lang)'); +is_deeply($rc->get_data('session','server','objects'),['urn:ietf:params:xml:ns:domain-1.0','urn:ietf:params:xml:ns:host-1.0','urn:ietf:params:xml:ns:contact-1.0','http://ns.uniregistry.net/eps-1.0'],'session noop get_data(session,server,objects)'); +is_deeply($rc->get_data('session','server','extensions_announced'),['urn:ietf:params:xml:ns:secDNS-1.1','urn:ietf:params:xml:ns:rgp-1.0','urn:ietf:params:xml:ns:idn-1.0','urn:ietf:params:xml:ns:launch-1.0','urn:ietf:params:xml:ns:fee-0.7'],'session noop get_data(session,server,extensions_announced)'); +is_deeply($rc->get_data('session','server','extensions_selected'),['urn:ietf:params:xml:ns:secDNS-1.1','urn:ietf:params:xml:ns:rgp-1.0','urn:ietf:params:xml:ns:idn-1.0','urn:ietf:params:xml:ns:launch-1.0','urn:ietf:params:xml:ns:fee-0.7'],'session noop get_data(session,server,extensions_selected)'); +is($rc->get_data('session','server','dcp_string'),'','session noop get_data(session,server,dcp_string)'); + ##################### From bef1f1532060c22a49d10a99212ed7249ef6785c Mon Sep 17 00:00:00 2001 From: Paulo Jorge Date: Tue, 26 Apr 2022 16:19:50 +0100 Subject: [PATCH 4/4] updates comments --- lib/Net/DRI/Protocol/EPP/Extensions/UniRegistry.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Net/DRI/Protocol/EPP/Extensions/UniRegistry.pm b/lib/Net/DRI/Protocol/EPP/Extensions/UniRegistry.pm index ebebd320..0b5a956f 100644 --- a/lib/Net/DRI/Protocol/EPP/Extensions/UniRegistry.pm +++ b/lib/Net/DRI/Protocol/EPP/Extensions/UniRegistry.pm @@ -39,8 +39,9 @@ sub core_modules return @c; } -## tucows purchased uniregistry and now they're in the process of moving from shared epp server => one server perl tld (they don't use Centric/Market and Sync extensions, only UNIREG AND ICM products) +## tucows purchased uniregistry and now they're in the process of moving from shared epp server => one server perl tld (they don't use Centric, Market and Sync extensions, only UNIREG AND ICM products) ## icm profile use 2x extra extensions - afilias association and ipr - related with migration from Afilias to Uniregistry::ICM platform +## TODO: we should review and clean all this mess. Example, Extensions::DM => Extensions::TUCOWS or something similar (NonShared would be part of that, we could even rename NonShared=>TUCOWS as well) sub default_extensions { my ($self,$rp)=@_;