Monitoring-Livestatus

 view release on metacpan or  search on metacpan

lib/Monitoring/Livestatus/INET.pm  view on Meta::CPAN

    unshift(@args, "peer") if scalar @args == 1;
    my(%options) = @args;
    $options{'name'} = $options{'peer'} unless defined $options{'name'};

    $options{'backend'} = $class;
    my $self = Monitoring::Livestatus->new(%options);
    bless $self, $class;
    confess('not a scalar') if ref $self->{'peer'} ne '';

    if(($self->{'peer'}//$self->{'server'}) =~ m|^tls://|mx) {
        require IO::Socket::SSL;
    }

    return $self;
}


########################################

=head1 METHODS

lib/Monitoring/Livestatus/INET.pm  view on Meta::CPAN


    my $options = {
        PeerAddr => $self->{'peer'},
        Type     => IO::Socket::IP::SOCK_STREAM,
        Timeout  => $self->{'connect_timeout'},
    };

    my $tls = 0;
    my $peer_addr = $self->{'peer'};
    if($peer_addr =~ s|tls://||mx) {
        #$IO::Socket::SSL::DEBUG = 2 if $ENV{'THRUK_VERBOSE'} && $ENV{'THRUK_VERBOSE'} >= 2;
        #$IO::Socket::SSL::DEBUG = 3 if $ENV{'THRUK_VERBOSE'} && $ENV{'THRUK_VERBOSE'} >= 3;
        $options->{'PeerAddr'} = $peer_addr;
        $options->{'SSL_cert_file'}   = $self->{'cert'};
        $options->{'SSL_key_file'}    = $self->{'key'};
        $options->{'SSL_ca_file'}     = $self->{'ca_file'};
        $options->{'SSL_verify_mode'} = 0 if(defined $self->{'verify'} && $self->{'verify'} == 0);
        $options->{'SSL_verifycn_name'} = $self->{'verifycn_name'};
        $tls = 1;
    }

    eval {
        if($tls) {
            $sock = IO::Socket::SSL->new(%{$options});
        } else {
            $sock = IO::Socket::IP->new(%{$options});
        }
        if(!defined $sock || !$sock->connected()) {
            my $msg = "failed to connect to $peer_addr: ".($tls ? IO::Socket::SSL::errstr() : $!);
            if($self->{'errors_are_fatal'}) {
                confess($msg);
            }
            $Monitoring::Livestatus::ErrorCode    = 500;
            $Monitoring::Livestatus::ErrorMessage = $msg;
            return;
        }

        setsockopt($sock, IPPROTO_TCP, TCP_NODELAY, 1);



( run in 0.743 second using v1.01-cache-2.11-cpan-4d50c553e7e )