NAME
IO::EPP::RIPN
SYNOPSIS
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;
DESCRIPTION
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"
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.
METHODS
new
If the alien_conn
parameter is received, it loads cookies from the file specified by load_cook_from
login
Ext params for login,
INPUT: new password for change
save_cookies
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
hello
For details, see "hello" in IO::EPP::Base
cont_to_xml
Overrides the base class converter, since the contacts are very different here.
create_contact
Parameter names are maximally unified with other providers.
INPUT:
for individual:
name
— full name, need for int
and loc
types;
birthday
— date of birth;
passport
— identification card number, place and date of issue;
for legal entity:
org
— organization name
addr
— string or array with full legal address of the organization, need for legal
type data
common fields:
addr
— string or array with full address;
TIN
- taxpayer numbers;
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;
fax
– string or array with faxes, usually only required for legal entities;
email
;
verified
– the full name or name of the organization was confirmed by documents.
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'
};
cont_from_xml
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'
};
transfer
Addition parameter for .SU, .NET.RU, .ORG.RU, .PP.RU: sent_to
- registrar name which will receive the domain (here all on the contrary)
get_registrar_info
Get Registrar data: white IP, email, whois data
update_registrar
Changing Registrar data: white IP, email, whois data
INPUT:
key of params:
add
or rem
:
ips
-- arrayref of ipv4 or ipv6 address,
emails
- hashref where keys - email type, values - email
chg
:
www
- new web url
whois
- new whois url
get_billing_info
INPUT:
keys of params:
date
,
period
: in days,
currency
: RUB.
get_limits_info
How many requests are left in this hour
get_stat_info
Show domain statistics by metric
key of params: metric
-- varians: domain
, domain_pending_transfer
, domain_pending_delete
, contact
, host
, all
Now not work:
code="2400", msg="Command failed", reason="Internal server error"
logout
Close session, disconnect
AUTHORS
Vadim Likhota <vadiml@cpan.org>
COPYRIGHT
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.