test 5.38, delete geoip 1 tests, disable geoip & dspam config (#325)
- ci: add testing on perl 5.38 - config: disable geoip & dspam - test: remove Geo::IP (deprecated module) tests
This commit is contained in:
parent
da5f60b962
commit
dfe319b82b
9
.github/workflows/ci.yml
vendored
9
.github/workflows/ci.yml
vendored
@ -5,18 +5,23 @@ on:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
|
||||
test:
|
||||
strategy:
|
||||
matrix:
|
||||
os: ["ubuntu-latest"]
|
||||
perl: ["5.16", "5.32"]
|
||||
perl-version:
|
||||
- "5.16"
|
||||
- "5.26"
|
||||
- "5.38"
|
||||
fail-fast: false
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
services:
|
||||
redis:
|
||||
image: redis
|
||||
ports:
|
||||
- 6379:6379
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
|
@ -37,4 +37,4 @@ packaging
|
||||
^supervise/
|
||||
^ssl/
|
||||
^t/config/greylist
|
||||
^.github
|
||||
^.github/
|
||||
|
10
META.yml
10
META.yml
@ -18,16 +18,24 @@ no_index:
|
||||
- t
|
||||
- inc
|
||||
requires:
|
||||
CDB_File: 0
|
||||
Data::Dumper: 0
|
||||
Date::Parse: 0
|
||||
File::NFSLock: 0
|
||||
File::Tail: 0
|
||||
File::Temp: 0
|
||||
GeoIP2: 0
|
||||
IO::Socket::SSL: 0
|
||||
MIME::Base64: 0
|
||||
Mail::DKIM: 0
|
||||
Mail::DMARC: 0
|
||||
Mail::Header: 0
|
||||
Mail::SPF: 0
|
||||
Net::DNS: 0.39
|
||||
Net::IP: 0
|
||||
Redis: 0
|
||||
Time::HiRes: 0
|
||||
Time::TAI64: 0
|
||||
version: 0.91
|
||||
Test::More: 0
|
||||
Test::Output: 0
|
||||
version: 1.00
|
||||
|
@ -31,7 +31,7 @@ WriteMakefile(
|
||||
# 'DBI' => 0, # auth_vpopmail_sql and
|
||||
# 'DBD::mysql' => 0, # log2sql
|
||||
# 'DBIx::Simple' => 0, # log2sql
|
||||
'Geo::IP' => 1,
|
||||
'GeoIP2' => 2,
|
||||
'Mail::SpamAssassin' => 0,
|
||||
'Math::Complex' => 0, # geodesic distance in Geo::IP
|
||||
'PerlIO::gzip' => 0, # gunzip GeoIP databases
|
||||
|
@ -22,7 +22,7 @@ hosts_allow
|
||||
# connection / informational plugins
|
||||
#connection_time
|
||||
#karma penalty_box 1 reject naughty
|
||||
ident/geoip
|
||||
#ident/geoip
|
||||
#ident/p0f /tmp/.p0f_socket version 3
|
||||
fcrdns
|
||||
|
||||
@ -90,7 +90,7 @@ spamassassin reject 12
|
||||
# spamassassin reject 20 munge_subject_threshold 10
|
||||
|
||||
# dspam must run after spamassassin for the learn_from_sa feature to work
|
||||
dspam autolearn spamassassin reject 0.95
|
||||
#dspam autolearn spamassassin reject 0.95
|
||||
|
||||
# run the clamav virus checking plugin (max size in Kb)
|
||||
# virus/clamav
|
||||
|
@ -43,4 +43,4 @@ sub _check_dmarc {
|
||||
cmp_ok($msg, 'eq', 'failed DMARC policy', 'check_dmarc, no SPF');
|
||||
|
||||
#warn $self->qp->connection->notes('authentication_results');
|
||||
}
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ sub test_invalid_localhost {
|
||||
my ($err, $why);
|
||||
foreach my $ip ( undef, '', '192.0.99.5' ) {
|
||||
$self->qp->connection->remote_ip(undef);
|
||||
($err, $why) = $self->invalid_localhost('localhost' );
|
||||
($err, $why) = $self->invalid_localhost('localhost');
|
||||
ok($err, "host: localhost, remote ip ($ip)");
|
||||
|
||||
$self->qp->connection->remote_ip(undef);
|
||||
|
@ -13,19 +13,6 @@ sub register_tests {
|
||||
if ( !$@ ) {
|
||||
$self->register_test('test_geoip2_lookup');
|
||||
}
|
||||
|
||||
eval 'use Geo::IP';
|
||||
if ( !$@ ) {
|
||||
$self->register_test('test_geoip_lookup');
|
||||
$self->register_test('test_geoip_load_db');
|
||||
$self->register_test('test_geoip_init_cc');
|
||||
$self->register_test('test_set_country_code');
|
||||
$self->register_test('test_set_country_name');
|
||||
$self->register_test('test_set_continent');
|
||||
$self->register_test('test_set_distance');
|
||||
$self->register_test('test_set_asn');
|
||||
$self->register_test('test_add_headers');
|
||||
}
|
||||
}
|
||||
|
||||
sub test_geoip2_lookup {
|
||||
@ -41,7 +28,7 @@ sub test_geoip2_lookup {
|
||||
cmp_ok( $self->connection->notes('geoip_country'), 'eq', 'US', "24.24.24.24 is in country US");
|
||||
cmp_ok( $self->connection->notes('geoip_country_name'), 'eq', 'United States', "24.24.24.24 is in country United States");
|
||||
cmp_ok( $self->connection->notes('geoip_continent'), 'eq', 'NA', "24.24.24.24 is in continent NA");
|
||||
cmp_ok( $self->connection->notes('geoip_city'), 'eq', 'Deer Park', "24.24.24.24 is in city of Deer Park");
|
||||
cmp_ok( $self->connection->notes('geoip_city'), 'eq', 'Syracuse', "24.24.24.24 is in city of Syracuse");
|
||||
}
|
||||
|
||||
sub test_add_headers {
|
||||
@ -68,173 +55,3 @@ sub all_headers {
|
||||
return join " | ", map { chomp $_; $_ } $self->transaction->header->get($tag);
|
||||
}
|
||||
|
||||
sub test_geoip_lookup {
|
||||
my $self = shift;
|
||||
|
||||
$self->qp->connection->remote_ip('24.24.24.24');
|
||||
cmp_ok( $self->geoip_lookup(), '==', DECLINED, "exit code");
|
||||
|
||||
cmp_ok( $self->connection->notes('geoip_country'), 'eq', 'US', "24.24.24.24 is in the US");
|
||||
}
|
||||
|
||||
sub test_geoip_load_db {
|
||||
my $self = shift;
|
||||
|
||||
$self->open_geoip_db();
|
||||
|
||||
if ( $self->{_geoip_city} ) {
|
||||
ok( ref $self->{_geoip_city}, "loaded GeoIP city db" );
|
||||
}
|
||||
else {
|
||||
ok( "no GeoIP city db" );
|
||||
}
|
||||
|
||||
if ( $self->{_geoip} ) {
|
||||
ok( ref $self->{_geoip}, "loaded GeoIP db" );
|
||||
}
|
||||
else {
|
||||
ok( "no GeoIP db" );
|
||||
}
|
||||
}
|
||||
|
||||
sub test_geoip_init_cc {
|
||||
my $self = shift;
|
||||
|
||||
$self->{_my_country_code} = undef;
|
||||
ok( ! $self->{_my_country_code}, "undefined");
|
||||
|
||||
my $test_ip = '208.175.177.10';
|
||||
$self->{_args}{distance} = $test_ip;
|
||||
$self->init_my_country_code( $test_ip );
|
||||
cmp_ok( $self->{_my_country_code}, 'eq', 'US', "country set and matches");
|
||||
}
|
||||
|
||||
sub test_set_country_code {
|
||||
my $self = shift;
|
||||
|
||||
$self->qp->connection->remote_ip('');
|
||||
my $cc = $self->set_country_code();
|
||||
ok( ! $cc, "undef");
|
||||
|
||||
$self->qp->connection->remote_ip('24.24.24.24');
|
||||
$self->clear_geoip_data;
|
||||
$cc = $self->set_country_code();
|
||||
ok( ! $cc, "set_country_code() returns nothing for no geoip data");
|
||||
$self->restore_geoip_data;
|
||||
$cc = $self->set_country_code();
|
||||
cmp_ok( $cc, 'eq', 'US', "set_country_code result is $cc");
|
||||
|
||||
my $note = $self->connection->notes('geoip_country');
|
||||
cmp_ok( $note, 'eq', 'US', "set_country_code set note to $cc");
|
||||
}
|
||||
|
||||
sub test_set_country_name {
|
||||
my $self = shift;
|
||||
|
||||
$self->{_geoip_record} = undef;
|
||||
$self->qp->connection->remote_ip('');
|
||||
$self->set_country_code();
|
||||
my $cn = $self->set_country_name();
|
||||
ok( ! $cn, "undef") or warn "$cn\n";
|
||||
|
||||
$self->qp->connection->remote_ip('24.24.24.24');
|
||||
$self->clear_geoip_data;
|
||||
$self->set_country_code();
|
||||
$cn = $self->set_country_name();
|
||||
ok( ! $cn, "set_country_name() returns nothing for no geoip data");
|
||||
$self->restore_geoip_data;
|
||||
$self->set_country_code();
|
||||
$cn = $self->set_country_name();
|
||||
cmp_ok( $cn, 'eq', 'United States', "$cn");
|
||||
|
||||
my $note = $self->connection->notes('geoip_country_name');
|
||||
cmp_ok( $note, 'eq', 'United States', "note has: $cn");
|
||||
}
|
||||
|
||||
sub test_set_continent {
|
||||
my $self = shift;
|
||||
|
||||
$self->{_geoip_record} = undef;
|
||||
$self->qp->connection->remote_ip('');
|
||||
$self->set_country_code();
|
||||
my $cn = $self->set_continent();
|
||||
ok( ! $cn, "undef") or warn "$cn\n";
|
||||
|
||||
$self->qp->connection->remote_ip('24.24.24.24');
|
||||
$self->clear_geoip_data;
|
||||
$self->set_country_code();
|
||||
$cn = $self->set_continent('US');
|
||||
ok( ! $cn, 'set_continent() returns nothing for no geoip data');
|
||||
$self->restore_geoip_data;
|
||||
$self->set_country_code();
|
||||
$cn = $self->set_continent() || '';
|
||||
my $note = $self->connection->notes('geoip_continent');
|
||||
if ( $cn ) {
|
||||
cmp_ok( $cn, 'eq', 'NA', "$cn");
|
||||
cmp_ok( $note, 'eq', 'NA', "note has: $cn");
|
||||
}
|
||||
else {
|
||||
ok(1, "no continent data" );
|
||||
ok(1, "no continent data" );
|
||||
}
|
||||
}
|
||||
|
||||
sub test_set_distance {
|
||||
my $self = shift;
|
||||
|
||||
$self->{_geoip_record} = undef;
|
||||
$self->qp->connection->remote_ip('');
|
||||
$self->set_country_code();
|
||||
my $cn = $self->set_distance_gc();
|
||||
ok( ! $cn, "undef") or warn "$cn\n";
|
||||
|
||||
$self->qp->connection->remote_ip('24.24.24.24');
|
||||
$self->set_country_code();
|
||||
$cn = $self->set_distance_gc();
|
||||
if ( $cn ) {
|
||||
ok( $cn, "$cn km");
|
||||
|
||||
my $note = $self->connection->notes('geoip_distance');
|
||||
ok( $note, "note has: $cn");
|
||||
}
|
||||
else {
|
||||
ok( 1, "no distance data");
|
||||
ok( 1, "no distance data");
|
||||
}
|
||||
}
|
||||
|
||||
sub test_set_asn {
|
||||
my $self = shift;
|
||||
|
||||
return if !$self->{GeoIPASNum};
|
||||
|
||||
$self->qp->connection->remote_ip('');
|
||||
$self->set_asn();
|
||||
my $asn = $self->set_asn();
|
||||
ok( ! $asn, "undef") or warn "$asn\n";
|
||||
|
||||
$self->qp->connection->remote_ip('24.24.24.24');
|
||||
$self->clear_geoip_data;
|
||||
$asn = $self->set_asn();
|
||||
ok( ! $asn, 'set_asn() returns nothing for no ASN data' );
|
||||
$self->restore_geoip_data;
|
||||
$asn = $self->set_asn();
|
||||
ok( $self->connection->notes('geoip_asn') =~ /^11351/, "note has: $asn");
|
||||
|
||||
$self->qp->connection->remote_ip('66.128.51.163');
|
||||
$asn = $self->set_asn();
|
||||
|
||||
ok( $self->connection->notes('geoip_asn') =~ /^7819/, "note has: $asn");
|
||||
}
|
||||
|
||||
my $geoip_data_bak;
|
||||
my @geoip_keys = qw( _geoip _geoip_city GeoIPASNum );
|
||||
sub clear_geoip_data {
|
||||
my ( $self ) = @_;
|
||||
$geoip_data_bak->{$_} = delete $self->{$_} for @geoip_keys;
|
||||
}
|
||||
|
||||
sub restore_geoip_data {
|
||||
my ( $self ) = @_;
|
||||
$self->{$_} = delete $geoip_data_bak->{$_} for @geoip_keys;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user