#!/usr/bin/perl -T
use
SATest; sa_t_init(
"ip_addrs"
);
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
) =
@_
;
if
(
$testip
=~ /^
$pat
$/) {
return
1;
}
else
{
return
0;
}
}
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"
;
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"
;