IO::EPP::RIPN
use IO::EPP::RIPN; # Parameters for LWP my %sock_params = ( PeerHost => 'uap.tcinet.ru', PeerPort => 8028, # 8027 for .SU, 8028 for .RU, 8029 for .РФ SSL_key_file => 'key_file.pem', SSL_cert_file => 'cert_file.pem', LocalAddr => '1.2.3.4', Timeout => 30, ); # Create object, get greeting and call login() my $conn = IO::EPP::RIPN->new( { user => 'XXX-RU', pass => 'XXXXXXXX', sock_params => \%sock_params, test_mode => 0, # real connect } ); # Check domain my ( $answ, $code, $msg ) = $conn->check_domains( { domains => [ 'my.ru', 'out.ru' ] } ); # Call logout() and destroy object undef $conn;
RIPN is the first organization the registry in the .ru tld. Then it transferred functions of the registry into TCI, but all special headings in epp remained
Examlpe:
xsi:schemaLocation="http://www.ripn.net/epp/ripn-epp-1.0 ripn-epp-1.0.xsd" instead of xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"
xsi:schemaLocation="http://www.ripn.net/epp/ripn-epp-1.0 ripn-epp-1.0.xsd"
xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"
Module overwrites IO::EPP::Base where there are differences from RFC and work with tcinet epp using http api.
For details see: https://tcinet.ru/documents/RU-RF/TechRules.pdf, https://tcinet.ru/documents/RU-RF/P2_RIPN-EPP.pdf, https://tcinet.ru/documents/SU/SUTechRules.pdf, https://tcinet.ru/documents/SU/SU_P2_RipnEPP.pdf.
All documents -- https://tcinet.ru/documents/.
IO::EPP::RIPN only works with .RU, .SU & .РФ cctlds.
For work with the new gtlds .ДЕТИ, .TATAR need use IO::EPP::TCI.
Features:
Working over https;
Completely other contacts;
Non-standard domain transfer in the .su zone;
The domain:check function has an error: when checking the availability of a blocked domain, it responds that it is available. The list of blocked domains should be downloaded from the Registrar panel.
If the alien_conn parameter is received, it loads cookies from the file specified by load_cook_from
alien_conn
load_cook_from
Ext params for login,
INPUT: new password for change
Save http connection cookies, they can be used to create another connection on this IP address without opening a new session, that is, without a login
For details, see "hello" in IO::EPP::Base
Overrides the base class converter, since the contacts are very different here.
Parameter names are maximally unified with other providers.
INPUT:
for individual:
name — full name, need for int and loc types;
name
int
loc
birthday — date of birth;
birthday
passport — identification card number, place and date of issue;
passport
for legal entity:
org — organization name
org
addr — string or array with full legal address of the organization, need for legal type data
addr
legal
common fields:
addr — string or array with full address;
TIN - taxpayer numbers;
TIN
phone – string or array with phone numbers in international format, you can specify a list of multiple phones, the suffixes (sms) and (transfer) are used to mark phones for confirming transfers;
phone
(sms)
(transfer)
fax – string or array with faxes, usually only required for legal entities;
fax
email;
email
verified – the full name or name of the organization was confirmed by documents.
verified
Examples:
Create person contact
my %pers = ( cont_id => 'MY-123456', 'int' => { name => 'Igor I Igover', addr => 'UA, 12345, Igorevsk, Igoreva str, 13', }, loc => {. name => 'Игорь Игоревич Игорев',. addr => [ 'UA', '85012', 'Игоревск', 'ул. Игорева, д.12, Игореву И.И.' ], }, TIN => '', birthday => '2001-01-01', passport => [ 'II662244', 'выдан Игоревским МВД УДМС', '1.1.2017' ], phone => '+380.501234567', fax => '', email => 'mail@igor.name', ); my ( $answ, $code, $msg ) = $conn->create_contact( \%pers ); # answer { 'cont_id' => 'my-123456', 'cre_date' => '2020-01-11 10:10:10', 'cltrid' => '1710de82a0e9249277ffd713f51c8888', 'svtrid' => '4997598888' };
Create legal entity contact
my %org = ( # cont_id - auto 'int' => {. org => 'Igor Limited Liability Company', addr => [ 'RU', '123456', 'Moscow', 'Igoreva str, 3', 'Igor LLC' ] }, loc => { org => 'ООО «Игорь»', addr => [ 'RU, 123456, г. Москва, ул. Игорева, дом 3, ООО «Игорь»', 'охраннику' ], }, legal => {. addr => [ '125476, г.Москва, ул. Игорева, д.3' ], }, TIN => '7777777777', phone => [ '+7.4951111111', '+7.4951111111(transfer)' ], fax => '+7.4951111111', email => [ 'mail@igor.ru' ], ); my ( $answ, $code, $msg ) = $conn->create_contact( \%org ); # answer { 'cont_id' => 'e88c1fngsz1e', 'cre_date' => '2020-01-01 10:10:10', 'cltrid' => '6194b816dd3f5d3f417fd2cfe0c88888', 'svtrid' => '4997633333' };
Overrides the base class contact parser.
As a result, the get_contact_info function displays the request response in the registry as follows:
Individual
my ( $a, $m, $o ) = make_request( 'get_contact_info', { cont_id => 'my-123456' } ); # answer { 'msg' => 'Command completed successfully', 'owner' => 'XXX-RU', 'int' => { 'name' => 'Igor I Igover', 'addr' => [ 'UA, 12345, Igorevsk, Igoreva str, 13' ] }, 'cre_date' => '2020-01-10 10:10:10', 'phone' => [ '+380.501234567' ], 'email' => [ 'mail@igor.name' ], 'loc' => { 'name' => 'Игорь Игоревич Игорев', 'addr' => [ 'UA', '85012', 'Игоревск', 'ул. Игорева, д.12, Игореву И.И.' ] }, 'fax' => [], 'creater' => 'XXX-RU', 'verified' => 0, 'statuses' => { 'ok' => '+' }, 'birthday' => '2001-01-01', 'passport' => [ 'II662244', 'выдан Игоревским МВД УДМС', '1.1.2017' ], 'code' => '1000' };
Legal entity
my ( $a, $m, $o ) = make_request( 'get_contact_info', { cont_id => 'e88c1fngsz1e' } ); # answer { 'msg' => 'Command completed successfully', 'owner' => 'XXX-RU', 'int' => { 'org' => 'Igor Limited Liability Company', 'addr' => [ 'RU', '123456', 'Moscow', 'Igoreva str, 3', 'Igor LLC' ] }, 'cre_date' => '2020-01-10 10:10:10', 'phone' => [ '+7.4951111111', '+7.4951111111(transfer)' ], 'email' => [ 'mail@igor.ru' ], 'loc' => { 'org' => 'ООО «Игорь»', 'addr' => [ 'RU, 123456, г. Москва, ул. Игорева, дом 3, ООО «Игорь»', 'охраннику' ] }, 'fax' => [ '+7.4951111111' ], 'legal' => { 'addr' => [ '125476, г.Москва, ул. Игорева, д.3' ] }, 'creater' => 'XXX-RU', 'verified' => 0, 'statuses' => { 'ok' => '+' }, 'code' => '1000' };
Addition parameter for .SU, .NET.RU, .ORG.RU, .PP.RU: sent_to - registrar name which will receive the domain (here all on the contrary)
sent_to
Get Registrar data: white IP, email, whois data
Changing Registrar data: white IP, email, whois data
key of params:
add or rem:
add
rem
ips -- arrayref of ipv4 or ipv6 address,
ips
emails - hashref where keys - email type, values - email
emails
chg:
chg
www - new web url
www
whois - new whois url
whois
keys of params:
date,
date
period: in days,
period
currency: RUB.
currency
How many requests are left in this hour
Show domain statistics by metric
key of params: metric -- varians: domain, domain_pending_transfer, domain_pending_delete, contact, host, all
metric
domain
domain_pending_transfer
domain_pending_delete
contact
host
all
Now not work:
code="2400", msg="Command failed", reason="Internal server error"
Close session, disconnect
Vadim Likhota <vadiml@cpan.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install IO::EPP::TCI, copy and paste the appropriate command in to your terminal.
cpanm
cpanm IO::EPP::TCI
CPAN shell
perl -MCPAN -e shell install IO::EPP::TCI
For more information on module installation, please visit the detailed CPAN module installation guide.