Condition Coverage

File:blib/lib/Email/Abuse/Investigator.pm
Coverage:63.8%

line%coveragecondition
595100
Adec
00
11
Params::Get::get_params(undef, \@_) || {}
61933
ABdec
0X0
100
111
$HAS_CHI and not $_cache
75850
Adec
00
11
$text // ""
77167
ABdec
0X0
100
111
defined $text and $text =~ /\S/
857100
ABdec
000
011
1X1
$self->{'_origin'} //= $self->_find_origin
94567
ABdec
000
011
1X1
$self->{'_urls'} //= $self->_extract_and_resolve_urls
102767
ABdec
000
011
1X1
$self->{'_mailto_domains'} //= $self->_extract_and_analyse_domains
109533
ABdec
0X0
100
111
$dom and not $seen{$dom}++
110033
ABdec
000
011
1X1
_registrable($d->{'domain'}) // $d->{'domain'}
110167
ABdec
0X0
100
111
$dom and not $seen{$dom}++
118050
Adec
00
11
$c->{'address'} // ""
118833
ABdec
0X0
100
111
$u->{'abuse'} and $u->{'abuse'} ne "(unknown)"
120850
Adec
00
11
$d->{'source'} // ""
146250
Adec
00
11
$FLAG_WEIGHT{$severity} // 1
1470100
ABdec
0X0
100
111
$orig->{'rdns'} and $orig->{'rdns'} =~ /                    \d+[-_.]\d+[-_.]\d+[-_.]\d+   # dotted-quad in rDNS                    | (?:dsl|adsl|cable|broad|dial|dynamic|dhcp|ppp|                         residential|cust|home|pool|client|user|                         static\d|host\d)            /xi
1481100
ABdec
000
011
1X1
not $orig->{'rdns'} or $orig->{'rdns'} eq "(no reverse DNS)"
1493100
ABdec
0X0
100
111
$orig->{'country'} and $orig->{'country'} =~ /^(?:CN|RU|NG|VN|IN|PK|BD)$/
1514100
ABdec
0X0
100
111
defined $auth->{'dkim'} and not $auth->{'dkim'} =~ /^pass/i
1518100
ABdec
0X0
100
111
defined $auth->{'dmarc'} and not $auth->{'dmarc'} =~ /^pass/i
152450
Adec
00
11
$self->_header_value("from") // ""
152633
ABdec
000
011
1X1
_registrable($auth->{'dkim_domain'}) // $auth->{'dkim_domain'}
152733
ABdec
000
011
1X1
_registrable(lc $from_domain) // lc $from_domain
153067
ABdec
0X0
100
111
$auth->{'dkim'} and $auth->{'dkim'} =~ /^pass/i
154667
ABdec
0X0
100
111
$date_raw && $date_raw =~ /\S/
1554100
ABdec
000
011
1X1
$mm >= 60 || $sign eq '+' && $offset_mins > $TZ_MAX_POS_MINS || $sign eq '-' && $offset_mins > $TZ_MAX_NEG_MINS
1579100
Adec
00
11
$self->_header_value("from") // ""
158850
Adec
00
11
$addr_domain // ""
159125
ABCdec
0XX0
10X0
1100
1111
$reg_disp and $reg_addr and $reg_disp ne $reg_addr
1599100
ABdec
000
011
1X1
$from_raw =~ /\@(gmail|yahoo|hotmail|outlook|live|aol|protonmail|yandex)\./i or $from_raw =~ /\@mail\.ru(?:[\s>]|$)/i
161050
ABCdec
0XX0
10X0
1100
1111
$from_addr and $reply_addr and lc $from_addr ne lc $reply_addr
1617100
Adec
00
11
$self->_header_value("to") // ""
1618100
ABdec
000
011
1X1
$to =~ /undisclosed|:;/ or $to eq ""
1624100
Adec
00
11
$self->_header_value("subject") // ""
164140
ABCdec
00X0
0100
0111
1X00
1X11
$URL_SHORTENERS{$bare} || $self->{'url_shorteners'}{$bare} and not $shortener_seen{$bare}++
164667
ABdec
0X0
100
111
$u->{'url'} =~ m[^http://]i and not $url_host_seen{$u->{'host'}}++
1665100
ABdec
0X0
100
111
$remaining > 0 and $remaining < $EXPIRY_WARN_DAYS * $SECS_PER_DAY
1679100
ABdec
0X0
100
111
$d->{'domain'} =~ /\Q$brand\E/i and not $d->{'domain'} =~ /^\Q$brand\E\.(?:com|co\.uk|net|org)$/
190550
Adec
00
11
$args{'address'} // ""
190667
ABdec
0X0
100
111
$addr and $addr =~ /\@/
191275
ABCdec
0XX0
10X0
1100
1111
$pa and $pa->{'form'} and not $pa->{'email'}
196167
ABdec
0X0
100
111
$orig->{'abuse'} and $orig->{'abuse'} ne "(unknown)"
198967
ABdec
0X0
100
111
$u->{'abuse'} and $u->{'abuse'} ne "(unknown)"
2016100
Adec
00
11
$d->{'web_org'} // "(unknown org)"
50
Adec
00
11
$dom // "(unknown domain)"
100
Adec
00
11
$d->{'web_ip'} // "(unknown IP)"
2029100
Adec
00
11
$d->{'mx_org'} // "(unknown org)"
100
Adec
00
11
$d->{'mx_host'} // "(unknown host)"
100
Adec
00
11
$d->{'mx_ip'} // "(unknown IP)"
2042100
Adec
00
11
$d->{'ns_org'} // "(unknown org)"
100
Adec
00
11
$d->{'ns_host'} // "(unknown host)"
100
Adec
00
11
$d->{'ns_ip'} // "(unknown IP)"
2052100
ABdec
0X0
100
111
$d->{'source'} =~ /^(?:From:|Return-Path:|Sender:) header$/ && !scalar(grep {_registrable($_->{'host'}) eq (_registrable($dom) // $dom) if $_->{'host'};} $self->embedded_urls)
2059100
Adec
00
11
$d->{'registrar'} // "(unknown)"
2068100
Adec
00
11
$self->_header_value($hname) // (next)
213567
ABdec
0X0
100
111
$pa and $pa->{'email'}
213733
ABdec
000
011
1X1
$example_addr //= "\@$addr_dom"
222950
Adec
00
11
$args{'form'} // ""
223967
ABdec
0X0
100
111
$pa and $pa->{'form'}
22450
Adec
00
11
$pa->{'form_upload'} // ""
0
Adec
00
11
$pa->{'note'} // ""
0
Adec
00
11
$pa->{'form_paste'} // ""
225667
ABdec
0X0
100
111
$pa and $pa->{'form'}
22630
Adec
00
11
$pa->{'form_upload'} // ""
0
Adec
00
11
$pa->{'note'} // ""
0
Adec
00
11
$pa->{'form_paste'} // ""
227333
ABdec
0X0
100
111
$pa and $pa->{'form'}
22800
Adec
00
11
$pa->{'form_upload'} // ""
0
Adec
00
11
$pa->{'note'} // ""
0
Adec
00
11
$pa->{'form_paste'} // ""
228667
ABdec
0X0
100
111
$d->{'registrar_abuse'} and $d->{'registrar_abuse'} =~ /\@([\w.-]+)/
2289100
ABdec
0X0
100
111
$rpa and $rpa->{'form'}
229650
Adec
00
11
$rpa->{'form_upload'} // ""
50
Adec
00
11
$rpa->{'note'} // ""
50
Adec
00
11
$rpa->{'form_paste'} // ""
2305100
Adec
00
11
$self->_header_value($hname) // (next)
231267
ABdec
0X0
100
111
$pa and $pa->{'form'}
23200
Adec
00
11
$pa->{'form_upload'} // ""
0
Adec
00
11
$pa->{'note'} // ""
0
Adec
00
11
$pa->{'form_paste'} // ""
233033
ABdec
0X0
100
111
$pa and $pa->{'form'}
23360
Adec
00
11
$pa->{'form_upload'} // ""
0
Adec
00
11
$pa->{'note'} // ""
0
Adec
00
11
$pa->{'form_paste'} // ""
23510
ABdec
0X0
100
111
$pa and $pa->{'form'}
23570
Adec
00
11
$pa->{'form_upload'} // ""
0
Adec
00
11
$pa->{'note'} // ""
0
Adec
00
11
$pa->{'form_paste'} // ""
24980
Adec
00
11
_sanitise_output($hop->{'ip'}) // "(unknown)"
253067
ABdec
000
011
1X1
$URL_SHORTENERS{$bare} || $self->{'url_shorteners'}{$bare}
2626100
ABdec
0X0
100
111
defined $line and length "$line $w" > $ROLE_WRAP_LEN
271233
ABdec
0X0
100
111
defined $header_block and $header_block =~ /\S/
2713100
Adec
00
11
$body_raw //= ""
278150
ABCdec
0000
0011
01X1
1XX1
defined $ip or defined $for_addr or defined $srv_id
281650
Adec
00
11
$depth //= 0
2848100
Adec
00
11
$phdr{'content-type'} // ""
2849100
Adec
00
11
$phdr{'content-transfer-encoding'} // ""
2865100
ABdec
000
011
1X1
$pct =~ /text/i or not $pct
2889100
Adec
00
11
$cte //= ""
2892100
Adec
00
11
$body // ""
2929100
Adec
00
11
$self->_extract_ip_from_received($hdr) // (next)
3009100
ABdec
0X0
100
111
defined $ip and $ip ne ""
307333
ABdec
0X0
100
111
$HAS_ANYEVENT_DNS and scalar keys %hostname_needed > 1
3089100
Adec
00
11
$self->_resolve_host($host) // "(unresolved)"
309633
ABdec
000
011
1X1
_registrable($host) // $host
3106100
Adec
00
11
$whois->{'country'} // undef
100
Adec
00
11
$whois->{'org'} // "(unknown)"
100
Adec
00
11
$whois->{'abuse'} // "(unknown)"
3188100
Adec
00
11
$attrs{$attr} // ""
3245100
Adec
00
11
$self->_header_value($hname) // (next)
324733
ABdec
000
011
1X1
_registrable($dom) // $dom
325533
ABdec
0X0
100
111
$hop->{'for'} and $hop->{'for'} =~ /\@([\w.-]+)/
32570
ABdec
000
011
1X1
_registrable($dom) // $dom
327067
ABdec
000
011
1X1
_registrable($dom) // $dom
3286100
Adec
00
11
$self->_header_value($hname) // (next)
329367
ABdec
0X0
100
111
$mid and $mid =~ /\@([\w.-]+)/
329567
ABdec
000
011
1X1
_registrable($mid_dom) // $mid_dom
329740
ABCDdec
00000
00011
001X1
01XX1
1XXX1
$TRUSTED_DOMAINS{$mid_dom} or $TRUSTED_DOMAINS{$mid_reg} or $self->{'trusted_domains'}{$mid_dom} or $self->{'trusted_domains'}{$mid_reg}
3302100
Adec
00
11
$auth->{'dkim_domains'} // []
3476100
ABdec
0X0
100
111
not $info{'registrar_abuse'} and $domain_whois =~ /$pat/
3488100
ABdec
0X0
100
111
not $info{'registered'} and $domain_whois =~ /$pat/
3499100
ABdec
0X0
100
111
not $info{'expires'} and $domain_whois =~ /$pat/
350767
ABdec
0X0
100
111
$epoch and time - $epoch < $RECENT_REG_DAYS * $SECS_PER_DAY
35820
Adec
00
11
$ip // ""
365833
ABdec
0X0
100
111
$_cache and $result
3677100
Adec
00
11
$self->_raw_whois($domain, "whois.iana.org") // (return undef)
3698100
Adec
00
11
$self->_domain_whois($domain) // (return {})
370967
ABdec
0X0
100
111
not $info{'abuse'} and $raw =~ /$pat/
37530
ABdec
0X0
100
111
$res and $res->is_success
379950
Adec
00
11
$server //= "whois.iana.org"
383050
ABCdec
0000
0011
01X1
1XX1
$@ or not defined $n or $n <= 0
383433
ABdec
0X0
100
111
defined $n and $n > 0
383950
Adec
00
11
$response || undef
3864100
ABdec
0X0
100
111
not $info{'org'} and $text =~ /$pat/
3874100
ABdec
0X0
100
111
not $info{'abuse'} and $text =~ /$pat/
388067
ABdec
000
011
1X1
$info{'abuse'} //= $1
394967
ABdec
000
011
1X1
$preferred // $dkim_domains[0]
4028100
ABdec
0X0
100
111
$host and $host =~ /\./
4042100
ABdec
0X0
100
111
$labels[-1] =~ /^[a-z]{2}$/ and $labels[-2] =~ /^(?:co|com|net|org|gov|edu|ac|me)$/
4077100
Adec
00
11
$whois->{'country'} // undef
100
Adec
00
11
$rdns // "(no reverse DNS)"
100
Adec
00
11
$whois->{'org'} // "(unknown)"
100
Adec
00
11
$whois->{'abuse'} // "(unknown)"
412050
ABCdec
0XX0
10X0
1100
1111
defined $prefix and $prefix =~ /^\d+$/ and $prefix <= 32
412450
Adec
00
11
inet_aton($net_addr) // (return 0)
412550
Adec
00
11
inet_aton($ip) // (return 0)
4210100
Adec
00
11
$Readonly::Values::Months::months{lc $2} // 0
421375
ABCdec
0XX0
10X0
1100
1111
$y and $m and $d
424350
Adec
00
11
$Readonly::Values::Months::months{lc $2} // 0
427267
ABdec
000
011
1X1
$names{$cc} // $cc