projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add various stats commands
[spider.git]
/
perl
/
Filter.pm
diff --git
a/perl/Filter.pm
b/perl/Filter.pm
index 59ace8af8edb2986827d2258760644eac290ee02..abdcaba7363d8dbb2c8e682ed52a23cf644bfbeb 100644
(file)
--- a/
perl/Filter.pm
+++ b/
perl/Filter.pm
@@
-33,6
+33,12
@@
use Data::Dumper;
use strict;
use strict;
+use vars qw($VERSION $BRANCH);
+$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
+$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ ) || 0;
+$main::build += $VERSION;
+$main::branch += $BRANCH;
+
use vars qw ($filterbasefn $in);
$filterbasefn = "$main::root/filter";
use vars qw ($filterbasefn $in);
$filterbasefn = "$main::root/filter";
@@
-89,7
+95,7
@@
sub compile
if ($@) {
my $sort = $ref->{sort};
my $name = $ref->{name};
if ($@) {
my $sort = $ref->{sort};
my $name = $ref->{name};
- dbg(
'err',
"Error compiling $ar $sort $name: $@");
+ dbg("Error compiling $ar $sort $name: $@");
Log('err', "Error compiling $ar $sort $name: $@");
}
$rr = $@;
Log('err', "Error compiling $ar $sort $name: $@");
}
$rr = $@;
@@
-107,7
+113,7
@@
sub read_in
$in = undef;
my $s = readfilestr($fn);
my $newin = eval $s;
$in = undef;
my $s = readfilestr($fn);
my $newin = eval $s;
- dbg(
'conn', "$@"
) if $@;
+ dbg(
$@
) if $@;
if ($in) {
$newin = new('Filter::Old', $sort, $call, $flag);
$newin->{filter} = $in;
if ($in) {
$newin = new('Filter::Old', $sort, $call, $flag);
$newin->{filter} = $in;
@@
-187,10
+193,15
@@
sub it
my $filter;
my @keys = sort $self->getfilkeys;
my $key;
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}) {
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->{reject}->{code}}(\@_)) {
$r = 0;
last;
@@
-199,6
+210,8
@@
sub it
}
}
if ($filter->{accept} && exists $filter->{accept}->{code}) {
}
}
if ($filter->{accept} && exists $filter->{accept}->{code}) {
+ $type = 'accept';
+ $asc = $filter->{accept}->{user};
if (&{$filter->{accept}->{code}}(\@_)) {
$r = 1;
last;
if (&{$filter->{accept}->{code}}(\@_)) {
$r = 1;
last;
@@
-211,6
+224,15
@@
sub it
# hops are done differently (simply)
my $hops = $self->{hops} if exists $self->{hops};
# 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};
+ my $dir = $self->{name} =~ /^in_/i ? "IN " : "OUT";
+
+ my $h = $hops || '';
+ dbg("$true $dir: $type/$sort with $asc on '$args' $h") if isdbg('filter');
+ }
return ($r, $hops);
}
return ($r, $hops);
}
@@
-271,12
+293,12
@@
sub install
my $remove = shift;
my $name = uc $self->{name};
my $sort = $self->{sort};
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) {
$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);
}
my $n = "$in$sort" . "filter";
$dxchan->$n($remove ? undef : $self);
}
@@
-456,6
+478,13
@@
sub parse
push @t, "(\$r->[$fref->[2]]>=$1 && \$r->[$fref->[2]]<=$2)";
}
$s .= "(" . join(' || ', @t) . ")";
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]");
}
} else {
confess("invalid letter $fref->[1]");
}
@@
-488,7
+517,9
@@
sub cmd
return $dxchan->msg('filter5') unless $line;
my ($r, $filter, $fno, $user, $s) = $self->parse($dxchan, $sort, $line);
return $dxchan->msg('filter5') unless $line;
my ($r, $filter, $fno, $user, $s) = $self->parse($dxchan, $sort, $line);
- return (1,$filter) if $r;
+ my $u = DXUser->get_current($user);
+ return (1, $dxchan->msg('isow', $user)) if $u && $u->isolate;
+ return (1, $filter) if $r;
my $fn = "filter$fno";
my $fn = "filter$fno";