mirror of
https://git.proxmox.com/git/proxmox-spamassassin
synced 2025-04-28 16:01:29 +00:00
152 lines
7.1 KiB
Perl
Executable File
152 lines
7.1 KiB
Perl
Executable File
#!/usr/bin/perl -T
|
|
|
|
use lib '.'; use lib 't';
|
|
use SATest; sa_t_init("ip_addrs");
|
|
|
|
use strict;
|
|
use Test::More tests => 105;
|
|
use Mail::SpamAssassin;
|
|
|
|
use Mail::SpamAssassin::NetSet;
|
|
|
|
my $sa = Mail::SpamAssassin->new({
|
|
require_rules => 1,
|
|
site_rules_filename => $siterules,
|
|
rules_filename => $localrules,
|
|
local_tests_only => 1,
|
|
dont_copy_prefs => 1,
|
|
});
|
|
$sa->init(0);
|
|
|
|
sub tryone ($$) {
|
|
my ($pat, $testip) = @_;
|
|
#warn "matching $testip gainst $pat\n";
|
|
if ($testip =~ /^$pat$/) {
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
use Mail::SpamAssassin::Constants qw(:all);
|
|
|
|
sub tryipv4s ($) {
|
|
my $pat = shift;
|
|
ok tryone $pat, "127.0.0.1";
|
|
ok tryone $pat, "255.255.255.255";
|
|
ok tryone $pat, "1.0.0.1";
|
|
ok tryone $pat, "0.0.0.1";
|
|
ok tryone $pat, "255.5.4.128";
|
|
ok !tryone $pat, "255.5.n.128";
|
|
ok !tryone $pat, "-1.0.0.1";
|
|
ok !tryone $pat, "256.0.0.1";
|
|
ok !tryone $pat, "10.0.0.256";
|
|
ok !tryone $pat, "10.0.0.999999";
|
|
ok !tryone $pat, "255.5.-1.128";
|
|
ok !tryone $pat, "255.5.-1.128.";
|
|
ok !tryone $pat, "100.1.2";
|
|
ok !tryone $pat, "100.1";
|
|
}
|
|
|
|
tryipv4s Mail::SpamAssassin::Constants::IPV4_ADDRESS;
|
|
tryipv4s Mail::SpamAssassin::Constants::IP_ADDRESS;
|
|
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "::ffff:64.142.3.173";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "fec0::1";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "1080:0:0:0:8:800:200C:417A";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "1080::8:800:200C:417A";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "0:0:0:0:0:0:0:0";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "::";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "fec0:02::0060:1dff:fff7:2109";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "fec0:02::0060:1dff:ff1e:26ee";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "3ffe:ffff:0100:f101:0210:a4ff:fee3:9566";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "3ffe:ffff:100:f101:210:a4ff:fee3:9566";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "3ffe:ffff:100:f101::1";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "::1";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "::192.168.0.1";
|
|
ok !tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210:";
|
|
ok !tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "FEDC:BA98:7654:3210:FEDC:BA98:7654:3210:9348";
|
|
ok !tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "3ffe:fffff:100:f101:210:a4ff:fee3:9566";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "ff02:0:0:0:0:0:0:1";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "ff02:0:0:0:0:0:0:2";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "IPv6:::1";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_ADDRESS, "IPv6:3ffe:2500:310:3:20a:95ff:fef5:246e";
|
|
|
|
ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "localhost";
|
|
ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "localhost.localdomain";
|
|
ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "127.0.0.1";
|
|
ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "::ffff:127.0.0.1";
|
|
ok !tryone Mail::SpamAssassin::Constants::LOCALHOST, ":::ffff:127.0.0.1";
|
|
ok !tryone Mail::SpamAssassin::Constants::LOCALHOST, "0000:0000:0000:ffff:127.0.0.1";
|
|
ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "0000:0000:0000:0000:0000:ffff:127.0.0.1";
|
|
ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "::1";
|
|
ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "0:0:0:0:0:0:0:1";
|
|
ok !tryone Mail::SpamAssassin::Constants::LOCALHOST, "3ffe:fffff:100:f101:210:a4ff:fee3:9566";
|
|
ok !tryone Mail::SpamAssassin::Constants::LOCALHOST, "::192.168.0.1";
|
|
ok !tryone Mail::SpamAssassin::Constants::LOCALHOST, "notlocalhost";
|
|
ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "IPv6:::1";
|
|
ok !tryone Mail::SpamAssassin::Constants::LOCALHOST, "IPv6:3ffe:2500:310:3:20a:95ff:fef5:246e";
|
|
|
|
ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "::0:0:0:0:0:0:1";
|
|
ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "::0:0:0:0:1";
|
|
ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "0::0:0:0:0:0:1";
|
|
ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "0:0::0:0:0:0:1";
|
|
ok tryone Mail::SpamAssassin::Constants::LOCALHOST, "0:0:0::0:0:1";
|
|
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "127.0.0.1";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "::ffff:127.0.0.1";
|
|
ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, ":::ffff:127.0.0.1";
|
|
ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0000:0000:0000:ffff:127.0.0.1";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0000:0000:0000:0000:0000:ffff:127.0.0.1";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "192.168.12.3";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "::ffff:192.168.12.3";
|
|
ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, ":::ffff:192.168.12.3";
|
|
ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0000:0000:0000:ffff:192.168.12.3";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0000:0000:0000:0000:0000:ffff:192.168.12.3";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "::1";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0:0:0:0:0:0:0:1";
|
|
ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "3ffe:fffff:100:f101:210:a4ff:fee3:9566";
|
|
ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "::192.168.0.1";
|
|
ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "notlocalhost";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "IPv6:::1";
|
|
ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "IPv6:3ffe:2500:310:3:20a:95ff:fef5:246e";
|
|
|
|
# fe80::/10 link-local
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "IPv6:fe80:2500:310:3:20a:95ff:fef5:246e";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "IPv6:fe93:2500:310:3:20a:95ff:fef5:246e";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "fea9:2500:310:3:20a:95ff:fef5:246e";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "feb0::310:3:20a:95ff:fef5:246e";
|
|
ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "fec0:2500:310:3:20a:95ff:fef5:246e";
|
|
ok !tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "fe7f:2500:310:3:20a:95ff:fef5:246e";
|
|
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "::0:0:0:0:0:0:1";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "::0:0:0:0:1";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0::0:0:0:0:0:1";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0:0::0:0:0:0:1";
|
|
ok tryone Mail::SpamAssassin::Constants::IP_PRIVATE, "0:0:0::0:0:1";
|
|
|
|
|
|
sub tsttrim ($$) {
|
|
my $dom = shift;
|
|
my $want = shift;
|
|
my $got = $sa->{registryboundaries}->trim_domain ($dom);
|
|
if ($got eq $want) {
|
|
return 1;
|
|
} else {
|
|
warn "trimmed $dom, wanted $want, got $got\n";
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
ok tsttrim "foo.demon.co.uk", "foo.demon.co.uk";
|
|
ok tsttrim "bar.foo.demon.co.uk", "foo.demon.co.uk";
|
|
ok tsttrim "a.b.c.d.e.f.g.g.h.bar.foo.demon.co.uk", "foo.demon.co.uk";
|
|
ok tsttrim "de", "de";
|
|
ok tsttrim "jmason.org", "jmason.org";
|
|
ok tsttrim "localhost.jmason.org", "jmason.org";
|
|
ok tsttrim "localhost.jmason.edu.au", "jmason.edu.au";
|
|
ok tsttrim "localhost.jmason.hacked.au", "hacked.au";
|
|
ok tsttrim "localhost.jmason.edu.net", "edu.net";
|
|
|