#!/usr/bin/env perl
# vim:ts=4:sw=4:expandtab

use lib qw(lib);
use Kanla::Plugin;
use Kanla::Plugin::Banner;

my @hosts;
if (!$conf->is_array('host')) {
    @hosts = ($conf->value('host'));
} else {
    @hosts = $conf->array('host');
}
my $interval = 60;

sub run {
    for my $host (@hosts) {
        banner_connect(
            host            => $host,
            default_service => 'smtp',
            cb              => sub {
                my ($handle, $timeout, $ip, $service) = @_;
                $handle->push_read(
                    line => sub {
                        my ($handle, $line) = @_;

                        # cancel timeout
                        undef $timeout;

                        if ($line =~ /^220 /) {

                            # SMTP greeting received,
                            # everything fine.
                            # Close the connection.
                            $handle->push_write("QUIT\r\n");
                            banner_disconnect($handle);
                            return;
                        }

                        # Wrong greeting received.
                        my $ellipsized = substr($line, 0, 5);
                        $ellipsized .= "…" if length($line) > 5;
                        signal_error(
                            'critical',
"Protocol error on [$ip]:$service: Wrong greeting received. Expected '220 …', got '$ellipsized'"
                        );
                    });
            });
    }
}
