SRS-EPP-Proxy
view release on metacpan or search on metacpan
lib/SRS/EPP/Proxy.pm view on Meta::CPAN
is => "rw",
traits => [qw[Getopt]],
isa => "Bool",
;
use Net::SSLeay::OO;
use Net::SSLeay::OO::Error qw(die_if_ssl_error);
use Net::SSLeay::OO::Constants
qw(MODE_ENABLE_PARTIAL_WRITE MODE_ACCEPT_MOVING_WRITE_BUFFER
OP_ALL OP_NO_SSLv2 VERIFY_PEER VERIFY_FAIL_IF_NO_PEER_CERT
FILETYPE_PEM);
sub init_ssl {
my ($self) = @_;
my $ctx = Net::SSLeay::OO::Context->new(
use_default_verify_paths => 0,
);
$ctx->set_options(&OP_ALL | OP_NO_SSLv2);
my $options = VERIFY_PEER;
if ( $self->rfc_compliant_ssl) {
$self->log_info(
"Strict RFC5734-compliant SSL enabled (client certificates required)"
);
$options |= VERIFY_FAIL_IF_NO_PEER_CERT;
}
$ctx->set_verify($options);
$self->log_info("SSL Certificates from ".$self->ssl_cert_dir);
$ctx->load_verify_locations("", $self->ssl_cert_dir);
$self->log_info(
"SSL private key: ".$self->ssl_key_file
.", public certificate chain: ".$self->ssl_cert_file
);
$ctx->use_PrivateKey_file($self->ssl_key_file, FILETYPE_PEM);
$ctx->use_certificate_chain_file($self->ssl_cert_file);
die_if_ssl_error; # one last check...
$self->ssl_engine($ctx);
}
sub init {
my ($self) = @_;
$self->log_info("Initializing PGP");
$self->init_pgp;
$self->log_info("Initializing SSL");
$self->init_ssl;
$self->log_info("Initializing URIs");
$self->init_uris;
$self->log_info("Initializing Listener");
$self->init_listener;
}
has 'openpgp' =>
is => "ro",
isa => "SRS::EPP::OpenPGP",
lazy => 1,
default => sub {
my $self = shift;
require SRS::EPP::OpenPGP;
my $pgp_dir = $self->pgp_dir;
my $secring_file = "$pgp_dir/secring.gpg";
my $pubring_file = "$pgp_dir/pubring.gpg";
my $pgp = SRS::EPP::OpenPGP->new(
public_keyring => $pubring_file,
secret_keyring => $secring_file,
);
$pgp->uid($self->pgp_keyid) if $self->pgp_keyid;
my $key = $pgp->default_signing_key;
$pgp;
},
handles => ["pgp"],
;
has 'pgp_keyid' =>
metaclass => "Getopt",
is => "ro",
isa => "Str",
;
has 'pgp_dir' =>
is => "ro",
isa => "Str",
default => sub {
$ENV{GNUPGHOME} || "$ENV{HOME}/.gnupg";
},
;
sub init_pgp {
my ($self) = @_;
$self->pgp;
}
has 'extensions' =>
metaclass => "Getopt",
is => "ro",
isa => "HashRef",
required => 0,
;
has 'services' =>
metaclass => "Getopt",
is => "ro",
isa => "ArrayRef",
required => 1,
;
sub init_uris {
my ($self) = @_;
# Register namespaces to be returned by greeting
use XML::EPP;
XML::EPP::register_obj_uri(
@{ $self->services },
);
if ($self->extensions) {
XML::EPP::register_ext_uri(
%{ $self->extensions },
);
}
}
( run in 0.719 second using v1.01-cache-2.11-cpan-df04353d9ac )