NAME
Net::EPP::MITMProxy - A generic EPP proxy server framework.
VERSION
version 0.02
SYNOPSIS
package My::Proxy::Server;
use base qw(Net::EPP::MITMProxy);
sub rewrite_command {
my ($self, $xml) = @_;
# do something to $xml here
return $xml;
}
#
# note: $command_xml contains the original unmodified command from the
# client, not the rewritten command
#
sub rewrite_response {
my ($self, $response_xml, $command_xml) = @_;
# do something to $response_xml here
return $response_xml;
}
__PACKAGE__->new->run(%OPTIONS);
INTRODUCTION
This module implements an EPP proxy server that acts as a machine-in-the-middle between client and server, and allows EPP command and response frames to be modified in-flight.
OPTIONS
This module inherits from Net::Server::Prefork and so supports all of that module's options, in addition to the following:
remote_server
- the remote EPP server name.remote_port
- the remote EPP server port (default 700).remote_key
- (OPTIONAL) the private key to use to connect to the remote server.remote_cert
- (OPTIONAL) the certificate to use to connect to the remote server.
Note that a limitation of the current approach is that it is not possible to connect to the remote server using a client certificate determined by the identity of the client.
REWRITING COMMANDS
To rewrite EPP commands before they're sent to the remote server, you must implement your own rewrite_command()
method.
sub rewrite_command {
my ($self, $xml) = @_;
# do something to $xml here
return $xml;
}
The rewrite_command()
method is passed a scalar containing the XML received from the client, and should return the modified command XML.
REWRITING RESPONSES
To rewrite EPP commands before they're sent to the remote server, you must implement your own rewrite_response()
method.
sub rewrite_response {
my ($self, $response_xml, $command_xml) = @_;
# do something to $response_xml here
return $response_xml;
}
The rewrite_response()
method is passed both the original command XML from the client, and the response XML from the remote server, and should return the modified response XML.
AUTHOR
Gavin Brown <gavin.brown@icann.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2024 by Internet Corporation for Assigned Names and Numbers (ICANN).
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.