X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fshow%2Ffilter.pl;h=ccfbc48583c980a12ee2999e8757775f9230ac1b;hb=1b28f13d136ceecc638e66fa427f226bdca83346;hp=7289eed6f3b95a51cfc0bd266de18f0fd35a5636;hpb=211b54d504170a8c9dad2bf25b9ed686d5eeac11;p=spider.git diff --git a/cmd/show/filter.pl b/cmd/show/filter.pl index 7289eed6..ccfbc485 100644 --- a/cmd/show/filter.pl +++ b/cmd/show/filter.pl @@ -3,29 +3,36 @@ # # Copyright (c) 2000 Dirk Koopman G1TLH # -# $Id$ +# # my ($self, $line) = @_; my @f = split /\s+/, $line; my @out; -my $dxchan = $self; -my $sort = ''; +my $call = $self->call; -my $f = lc shift @f if @f; -if ($self->priv >= 8) { - my $d = DXChannel->get(uc $f); - $dxchan = $d if $d; - $f = lc shift @f if @f; +if (@f) { + if (is_callsign(uc $f[0])) { + return (1, $self->msg('e5')) unless $self->priv >= 1; + $call = uc shift @f; + } elsif ($f[0] eq 'node_default' || $f[0] eq 'user_default') { + return (1, $self->msg('e5')) unless $self->priv >= 1; + $call = shift @f; + } } -$sort = $f if $f; -$sort .= 'filter'; +my @in; +if (@f) { + push @in, @f; +} else { + push @in, qw(route ann spots wcy wwv rbn); +} -my $key; -foreach $key (sort keys %$self) { - if ($key =~ /$sort$/) { - push @out, $self->{$key}->print if $self->{$key}; - } +my $sort; +foreach $sort (@in) { + my $ref = Filter::read_in($sort, $call, 1); + push @out, $ref->print($call, $sort, "input") if $ref; + $ref = Filter::read_in($sort, $call, 0); + push @out, $ref->print($call, $sort, "") if $ref; } -push @out, $self->msg('filter3', $dxchan->call) unless @out; +push @out, $self->msg('filter3', $call) unless @out; return (1, @out);