IO-EPP
view release on metacpan or search on metacpan
lib/IO/EPP/HosterKZ.pm view on Meta::CPAN
return $in_data;
}
sub new {
my ( $package, $params ) = @_;
my ( $self, $code, $msg );
my $sock_params = delete $params->{sock_params};
my $test = delete $params->{test_mode};
$self = bless {
sock => 'https', # no session
user => delete $params->{user},
pass => delete $params->{pass}, # !!! Send login and password with each request
url => $sock_params->{PeerHost},
local_ip => $sock_params->{LocalAddr},
timeout => $sock_params->{Timeout},
tld => $params->{tld} || '',
server => delete $params->{server},
log_name => delete $params->{log_name},
log_fn => delete $params->{log_fn},
no_log => delete $params->{no_log} || 0,
test => $test,
critical_error => undef,
}, $package;
$self->set_urn();
$self->set_log_vars( $params );
$self->epp_log( "Connect to $$sock_params{PeerHost}\n" );
return wantarray ? ( $self, '1000', 'ok' ) : $self;
}
sub set_urn {
$_[0]->{urn} = {
head => '', # !!!
cont => $IO::EPP::Base::epp_cont_urn,
host => $IO::EPP::Base::epp_host_urn,
dom => $IO::EPP::Base::epp_dom_urn,
};
}
sub create_contact {
my ( $self, $params ) = @_;
$params->{cont_id} = IO::EPP::Base::gen_id( 16 );
$params->{authinfo} = IO::EPP::Base::gen_pw( 16 );
return $self->SUPER::create_contact( $params );
}
sub update_contact {
my ( $self, $params ) = @_;
$params->{company} =~ s/&/&/g
if $params->{company};
$params->{need_name} = 1;
return $self->SUPER::update_contact( $params );
}
=head2 create_domain
Since September 7, 2010, for Kazakhstan domains, you need to fill in data on the location of the server equipment
on which the site is located, accessible by this domain name.
The server equipment should be located on the territory of Kazakhstan.
C<server_loc> -- hashref with parameters:
C<srvloc_state> -- server location area or region;
C<srvloc_city> -- city;
C<srvloc_street> -- address in the city.
=cut
sub create_domain {
my ( $self, $params ) = @_;
$params->{authinfo} ||= IO::EPP::Base::gen_pw( 16 );
if ( $params->{server_loc} ) {
my $server_loc = delete $params->{server_loc};
$params->{extension} =
' <srvloc:create xmlns:srvloc="urn:kaznic:params:xml:ns:srvloc-1.0" xsi:schemaLocation="urn:kaznic:params:xml:ns:srvloc-1.0 srvloc-1.0.xsd">
<srvloc:street>'.$server_loc->{srvloc_street}.'</srvloc:street>
<srvloc:city>'.$server_loc->{srvloc_city}.'</srvloc:city>
<srvloc:sp>'.$server_loc->{srvloc_state}.'</srvloc:sp>
</srvloc:create>';
}
return $self->SUPER::create_domain( $params );
}
sub transfer {
my ( $self, $params ) = @_;
$params->{authinfo} =~ s/&/&/g;
$params->{authinfo} =~ s/</</g;
$params->{authinfo} =~ s/>/>/g;
return $self->SUPER::request_transfer( $params );
}
=head2 update_domain
See L</create_domain> for C<server_loc> parameters.
=cut
sub update_domain {
my ( $self, $params ) = @_;
if ( $params->{server_loc} ) {
my $server_loc = delete $params->{server_loc};
$params->{extension} =
' <srvloc:create xmlns:srvloc="urn:kaznic:params:xml:ns:srvloc-1.0" xsi:schemaLocation="urn:kaznic:params:xml:ns:srvloc-1.0 srvloc-1.0.xsd">
<srvloc:street>'.$server_loc->{srvloc_street}.'</srvloc:street>
<srvloc:city>'.$server_loc->{srvloc_city}.'</srvloc:city>
<srvloc:sp>'.$server_loc->{srvloc_state}.'</srvloc:sp>
</srvloc:create>';
}
return $self->SUPER::update_domain( $params );
}
=head2 logout
For replace IO::EPP::Base::logout.
Do nothing.
=cut
sub logout {
my ( $self ) = @_;
$self->epp_log( "</logout>" );
delete $self->{sock};
delete $self->{user};
delete $self->{pass};
return ( undef, '1500', 'ok' );
}
sub DESTROY {
my ( $self ) = @_;
local ($!, $@, $^E, $?); # Protection against action-at-distance
$self->logout();
if ( $self->{log_fh} ) {
close $self->{log_fh};
delete $self->{log_fh};
}
}
1;
__END__
=pod
=head1 AUTHORS
Vadim Likhota <vadiml@cpan.org>
( run in 0.406 second using v1.01-cache-2.11-cpan-7f9471e7e0a )