my $filter;
my @keys = sort $self->getfilkeys;
my $key;
+ my $type = 'Dunno';
+ my $asc = '?';
+
my $r = @keys > 0 ? 0 : 1;
foreach $key (@keys) {
$filter = $self->{$key};
if ($filter->{reject} && exists $filter->{reject}->{code}) {
+ $type = 'reject';
+ $asc = $filter->{reject}->{user};
if (&{$filter->{reject}->{code}}(\@_)) {
$r = 0;
last;
}
}
if ($filter->{accept} && exists $filter->{accept}->{code}) {
+ $type = 'accept';
+ $asc = $filter->{accept}->{user};
if (&{$filter->{accept}->{code}}(\@_)) {
$r = 1;
last;
# hops are done differently (simply)
my $hops = $self->{hops} if exists $self->{hops};
+ if (isdbg('filter')) {
+ my $args = join '\',\'', @_;
+ my $true = $r ? "OK" : "REJ";
+ my $sort = $self->{sort};
+ $hops ||= "none";
+ dbg('filter', "Filter: $type/$sort with $asc on '$args': $true hops: $hops");
+ }
return ($r, $hops);
}
my $remove = shift;
my $name = uc $self->{name};
my $sort = $self->{sort};
- my ($in) = $name =~ s/^IN_//;
+ my $in = "";
+ $in = "in" if $name =~ s/^IN_//;
$name =~ s/.PL$//;
my $dxchan = DXChannel->get($name);
if ($dxchan) {
- $in = lc $in if $in;
my $n = "$in$sort" . "filter";
$dxchan->$n($remove ? undef : $self);
}
push @t, "(\$r->[$fref->[2]]>=$1 && \$r->[$fref->[2]]<=$2)";
}
$s .= "(" . join(' || ', @t) . ")";
+ } elsif ($fref->[1] eq 't') {
+ my @t;
+ for (@val) {
+ s/\*//g;
+ push @t, "\$r->[$fref->[2]]=~/$_/i";
+ }
+ $s .= "(" . join(' || ', @t) . ")";
} else {
confess("invalid letter $fref->[1]");
}