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
=>
''
,
=>
'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'
,
=> [
'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.