1. clear/* node_default and user_default now work.
authorminima <minima>
Mon, 10 Sep 2001 00:38:32 +0000 (00:38 +0000)
committerminima <minima>
Mon, 10 Sep 2001 00:38:32 +0000 (00:38 +0000)
2. in acc or rej/* you can now use (comma separated) prefixes as well as lists
of numbers for things like *_dxcc, *_itu and *_cq (eg: by_dxcc ve,w); just
remember that countries like ve and w have lots of zones and itus!
3. Added all the clear/* commands to help and added some comments about 2.
4. All filters (including *_default ones) are now reinstalled on channels in
realtime, so changing a filter does NOT require a disconnect and reconnect
cycle anymore.

14 files changed:
Changes
cmd/Commands_en.hlp
cmd/clear/announce.pl
cmd/clear/route.pl
cmd/clear/spots.pl
cmd/clear/wcy.pl
cmd/clear/wwv.pl
perl/AnnTalk.pm
perl/Filter.pm
perl/Geomag.pm
perl/Messages
perl/Route.pm
perl/Spot.pm
perl/WCY.pm

diff --git a/Changes b/Changes
index 79858fa31471e41ad89e17a29c779c258669205b..a34ac3041be78126213d868ee380520ef14f6b6b 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,12 @@
+10Sep01=======================================================================
+1. clear/* node_default and user_default now work.
+2. in acc or rej/* you can now use (comma separated) prefixes as well as lists
+of numbers for things like *_dxcc, *_itu and *_cq (eg: by_dxcc ve,w); just
+remember that countries like ve and w have lots of zones and itus!
+3. Added all the clear/* commands to help and added some comments about 2.
+4. All filters (including *_default ones) are now reinstalled on channels in
+realtime, so changing a filter does NOT require a disconnect and reconnect
+cycle anymore. 
 09Sep01=======================================================================
 1. Add show/dxstats command
 2. Add show/hfstats command
index 3098cc296418a545e0c0208b01cf4f8e90a44fa3..bf86e53552b422b52d3268e22ba324851bb25401 100644 (file)
@@ -23,12 +23,12 @@ You can use any of the following things in this line:-
   info <string>            eg: iota or qsl
   by <prefixes>            eg: G,M,2         
   origin <prefixes>
-  origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
-  origin_itu <numbers>
-  origin_zone <numbers>
-  by_dxcc <numbers>
-  by_itu <numbers>
-  by_zone <numbers>
+  origin_dxcc <prefixes or numbers>    eg: 61,62 (from eg: sh/pre G)
+  origin_itu <prefixes or numbers>     or: G,GM,GW
+  origin_zone <prefixes or numbers>
+  by_dxcc <prefixes or numbers>
+  by_itu <prefixes or numbers>
+  by_zone <prefixes or numbers>
   channel <prefixes>
   wx 1                     filter WX announces
   dest <prefixes>          eg: 6MUK,WDX      (distros)
@@ -65,13 +65,13 @@ to understand how filters work - it will save a lot of grief later on.
 You can use any of the following things in this line:-
 
   call <prefixes>        the callsign of the thingy
-  call_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
-  call_itu <numbers>
-  call_zone <numbers>
+  call_dxcc <prefixes or numbers>    eg: 61,62 (from eg: sh/pre G)
+  call_itu <prefixes or numbers>     or: G,GM,GW
+  call_zone <prefixes or numbers>
   origin <prefixes>      really the interface it came in on
-  origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
-  origin_itu <numbers>
-  origin_zone <numbers>
+  origin_dxcc <prefixes or numbers>    eg: 61,62 (from eg: sh/pre G)
+  origin_itu <prefixes or numbers>     or: G,GM,GW
+  origin_zone <prefixes or numbers>
 
 some examples:-
 
@@ -97,12 +97,12 @@ You can use any of the following things in this line:-
   call <prefixes>        eg: G,PA,HB9
   info <string>          eg: iota or qsl
   by <prefixes>            
-  call_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
-  call_itu <numbers>
-  call_zone <numbers>
-  by_dxcc <numbers>
-  by_itu <numbers>
-  by_zone <numbers>
+  call_dxcc <prefixes or numbers>    eg: 61,62 (from eg: sh/pre G)
+  call_itu <prefixes or numbers>     or: G,GM,GW
+  call_zone <prefixes or numbers>
+  by_dxcc <prefixes or numbers>
+  by_itu <prefixes or numbers>
+  by_zone <prefixes or numbers>
   origin <prefixes>
   channel <prefixes>
 
@@ -140,12 +140,12 @@ filter on the following fields:-
 
   by <prefixes>            eg: G,M,2         
   origin <prefixes>
-  origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
-  origin_itu <numbers>
-  origin_zone <numbers>
-  by_dxcc <numbers>
-  by_itu <numbers>
-  by_zone <numbers>
+  origin_dxcc <prefixes or numbers>    eg: 61,62 (from eg: sh/pre G)
+  origin_itu <prefixes or numbers>     or: G,GM,GW
+  origin_zone <prefixes or numbers>
+  by_dxcc <prefixes or numbers>
+  by_itu <prefixes or numbers>
+  by_zone <prefixes or numbers>
   channel <prefixes>
 
 There are no examples because WCY Broadcasts only come from one place and
@@ -168,12 +168,12 @@ filter on the following fields:-
 
   by <prefixes>            eg: G,M,2         
   origin <prefixes>
-  origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
-  origin_itu <numbers>
-  origin_zone <numbers>
-  by_dxcc <numbers>
-  by_itu <numbers>
-  by_zone <numbers>
+  origin_dxcc <prefixes or numbers>    eg: 61,62 (from eg: sh/pre G)
+  origin_itu <prefixes or numbers>     or: G,GM,GW
+  origin_zone <prefixes or numbers>
+  by_dxcc <prefixes or numbers>
+  by_itu <prefixes or numbers>
+  by_zone <prefixes or numbers>
   channel <prefixes>
 
 for example 
@@ -231,7 +231,27 @@ which will arrange for them to be forward candidates again.
 
 Order is not important.
 
-=== 0^CLEAR/SPOTS [1|all]^Clear a spot filter line
+=== 0^CLEAR/ANNOUNCE [1|all]^Clear a announce filter line
+This command allows you to clear (remove) a line in a annouce filter or to 
+remove the whole filter.
+
+see CLEAR/SPOTS for a more detailed explanation.
+
+=== 8^CLEAR/ANNOUNCE [input] <callsign> [0-9|all]^Clear a announce filter line
+A sysop can clear an input or normal output filter for a user or the
+node_default or user_default. 
+
+=== 0^CLEAR/ROUTE [1|all]^Clear a route filter line
+This command allows you to clear (remove) a line in a route filter or to 
+remove the whole filter.
+
+see CLEAR/SPOTS for a more detailed explanation.
+
+=== 8^CLEAR/ROUTE [input] <callsign> [0-9|all]^Clear a route filter line
+A sysop can clear an input or normal output filter for a user or the
+node_default or user_default. 
+
+=== 0^CLEAR/SPOTS [0-9|all]^Clear a spot filter line
 This command allows you to clear (remove) a line in a spot filter or to 
 remove the whole filter.
 
@@ -254,14 +274,41 @@ If you do:
 
 the filter will be completely removed.
 
+=== 8^CLEAR/SPOTS [input] <callsign> [0-9|all]^Clear a spot filter line
+A sysop can clear an input or normal output filter for a user or the
+node_default or user_default. 
+
+=== 0^CLEAR/WCY [1|all]^Clear a WCY filter line
+This command allows you to clear (remove) a line in a WCY filter or to 
+remove the whole filter.
+
+see CLEAR/SPOTS for a more detailed explanation.
+
+=== 8^CLEAR/WCY [input] <callsign> [0-9|all]^Clear a WCY filter line
+A sysop can clear an input or normal output filter for a user or the
+node_default or user_default. 
+
+=== 0^CLEAR/WWV [1|all]^Clear a WWV filter line
+This command allows you to clear (remove) a line in a WWV filter or to 
+remove the whole filter.
+
+see CLEAR/SPOTS for a more detailed explanation.
+
+=== 8^CLEAR/WWV [input] <callsign> [0-9|all]^Clear a WWV filter line
+A sysop can clear an input or normal output filter for a user or the
+node_default or user_default. 
+
 === 5^CONNECT <callsign>^Start a connection to another DX Cluster
 Start a connection process that will culminate in a new connection to the
 DX cluster <callsign>. This process creates a new 'client' process which will
 use the script in /spider/connect/<callsign> to effect the 'chat' exchange
 necessary to traverse the network(s) to logon to the cluster <callsign>.
 
-=== 9^DELELE/USER <callsign> ...^Delete this user from the User Database
+=== 9^DELETE/USER <callsign> ...^Delete this user from the User Database
 This command will completely remove a one or more users from the database.
+
+There is NO SECOND CHANCE.
+
 It goes without saying that you should use this command CAREFULLY!
 
 === 0^DBAVAIL^Show a list of all the Databases in the system
@@ -559,6 +606,12 @@ To remove the filter in its entirty:-
 
   clear/spots all
 
+There are similar CLEAR commands for the other filters:-
+
+  clear/announce
+  clear/wcy
+  clear/wwv
+
 ADVANCED USERS:-
 
 Once you are happy with the results you get, you may like to experiment. 
@@ -780,12 +833,12 @@ You can use any of the following things in this line:-
   info <string>            eg: iota or qsl
   by <prefixes>            eg: G,M,2         
   origin <prefixes>
-  origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
-  origin_itu <numbers>
-  origin_zone <numbers>
-  by_dxcc <numbers>
-  by_itu <numbers>
-  by_zone <numbers>
+  origin_dxcc <prefixes or numbers>    eg: 61,62 (from eg: sh/pre G)
+  origin_itu <prefixes or numbers>     or: G,GM,GW
+  origin_zone <prefixes or numbers>
+  by_dxcc <prefixes or numbers>
+  by_itu <prefixes or numbers>
+  by_zone <prefixes or numbers>
   channel <prefixes>
   wx 1                     filter WX announces
   dest <prefixes>          eg: 6MUK,WDX      (distros)
@@ -822,12 +875,12 @@ You can use any of the following things in this line:-
   call <prefixes>        eg: G,PA,HB9
   info <string>          eg: iota or qsl
   by <prefixes>            
-  call_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
-  call_itu <numbers>
-  call_zone <numbers>
-  by_dxcc <numbers>
-  by_itu <numbers>
-  by_zone <numbers>
+  call_dxcc <prefixes or numbers>    eg: 61,62 (from eg: sh/pre G)
+  call_itu <prefixes or numbers>     or: G,GM,GW
+  call_zone <prefixes or numbers>
+  by_dxcc <prefixes or numbers>
+  by_itu <prefixes or numbers>
+  by_zone <prefixes or numbers>
   origin <prefixes>
   channel <prefixes>
 
@@ -858,13 +911,13 @@ read this to understand how filters work - it will save a lot of grief later on.
 You can use any of the following things in this line:-
 
   call <prefixes>        the callsign of the thingy
-  call_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
-  call_itu <numbers>
-  call_zone <numbers>
+  call_dxcc <prefixes or numbers>    eg: 61,62 (from eg: sh/pre G)
+  call_itu <prefixes or numbers>     or: G,GM,GW
+  call_zone <prefixes or numbers>
   origin <prefixes>      really the interface it came in on
-  origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
-  origin_itu <numbers>
-  origin_zone <numbers>
+  origin_dxcc <prefixes or numbers>    eg: 61,62 (from eg: sh/pre G)
+  origin_itu <prefixes or numbers>     or: G,GM,GW
+  origin_zone <prefixes or numbers>
 
 some examples:-
 
@@ -890,12 +943,12 @@ filter on the following fields:-
 
   by <prefixes>            eg: G,M,2         
   origin <prefixes>
-  origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
-  origin_itu <numbers>
-  origin_zone <numbers>
-  by_dxcc <numbers>
-  by_itu <numbers>
-  by_zone <numbers>
+  origin_dxcc <prefixes or numbers>    eg: 61,62 (from eg: sh/pre G)
+  origin_itu <prefixes or numbers>     or: G,GM,GW
+  origin_zone <prefixes or numbers>
+  by_dxcc <prefixes or numbers>
+  by_itu <prefixes or numbers>
+  by_zone <prefixes or numbers>
   channel <prefixes>
 
 There are no examples because WCY Broadcasts only come from one place and
@@ -917,12 +970,12 @@ filter on the following fields:-
 
   by <prefixes>            eg: G,M,2         
   origin <prefixes>
-  origin_dxcc <numbers>    eg: 61,62 (from eg: sh/pre G)
-  origin_itu <numbers>
-  origin_zone <numbers>
-  by_dxcc <numbers>
-  by_itu <numbers>
-  by_zone <numbers>
+  origin_dxcc <prefixes or numbers>    eg: 61,62 (from eg: sh/pre G)
+  origin_itu <prefixes or numbers>     or: G,GM,GW
+  origin_zone <prefixes or numbers>
+  by_dxcc <prefixes or numbers>
+  by_itu <prefixes or numbers>
+  by_zone <prefixes or numbers>
   channel <prefixes>
 
 for example 
index 41b29b42b7e4c52d7021fe4677e6733118cfecd6..5ee0b4247f91fb6996b601043feb687fc29974db 100644 (file)
@@ -13,23 +13,24 @@ my $sort = 'ann';
 my $flag;
 my $fno = 1;
 my $call = $dxchan->call;
+my $f;
 
-my $f = lc shift @f if @f;
 if ($self->priv >= 8) {
-       if (is_callsign(uc $f)) {
-               my $uref = DXUser->get(uc $f);
+       if (@f && is_callsign(uc $f[0])) {
+               $f = uc shift @f;
+               my $uref = DXUser->get($f);
                $call = $uref->call if $uref;
+       } elsif (@f && lc $f[0] eq 'node_default' || lc $f[0] eq 'user_default') {
+               $call = lc shift @f;
        }
-       if (@f) {
-               $f = lc shift @f;
-               if ($f eq 'input') {
-                       $flag = 'in';
-                       $f = shift @f if @f;
-               }
+       if (@f && $f[0] eq 'input') {
+               shift @f;
+               $flag = 'in';
        }
 }
 
-$fno = $f if $f;
+$fno = shift @f if @f && $f[0] =~ /^\d|all$/;
+
 my $filter = Filter::read_in($sort, $call, $flag);
 Filter::delete($sort, $call, $flag, $fno);
 $flag = $flag ? "input " : "";
index 9cc3705a2bf1639cf7fc1a5608a899b96e50ce26..d5a3dfd23af8d54508a03d118ba6bac722df8500 100644 (file)
@@ -13,23 +13,24 @@ my $sort = 'route';
 my $flag;
 my $fno = 1;
 my $call = $dxchan->call;
+my $f;
 
-my $f = lc shift @f if @f;
 if ($self->priv >= 8) {
-       if (is_callsign(uc $f)) {
-               my $uref = DXUser->get(uc $f);
+       if (@f && is_callsign(uc $f[0])) {
+               $f = uc shift @f;
+               my $uref = DXUser->get($f);
                $call = $uref->call if $uref;
+       } elsif (@f && lc $f[0] eq 'node_default' || lc $f[0] eq 'user_default') {
+               $call = lc shift @f;
        }
-       if (@f) {
-               $f = lc shift @f;
-               if ($f eq 'input') {
-                       $flag = 'in';
-                       $f = shift @f if @f;
-               }
+       if (@f && $f[0] eq 'input') {
+               shift @f;
+               $flag = 'in';
        }
 }
 
-$fno = $f if $f;
+$fno = shift @f if @f && $f[0] =~ /^\d|all$/;
+
 my $filter = Filter::read_in($sort, $call, $flag);
 Filter::delete($sort, $call, $flag, $fno);
 $flag = $flag ? "input " : "";
index d2a59bc07131195176775adb74fe693d045efe98..e2c8a76191e10cb7dbd43d952da546134ea1b5f8 100644 (file)
@@ -6,7 +6,7 @@
 # $Id$
 #
 my ($self, $line) = @_;
-my @f = split(/\s+/, $line);
+my @f = split /\s+/, $line;
 my @out;
 my $dxchan = $self;
 my $sort = 'spots';
@@ -16,18 +16,20 @@ my $call = $dxchan->call;
 my $f;
 
 if ($self->priv >= 8) {
-       if (is_callsign(uc $f[0])) {
+       if (@f && is_callsign(uc $f[0])) {
                $f = uc shift @f;
                my $uref = DXUser->get($f);
                $call = $uref->call if $uref;
+       } elsif (@f && lc $f[0] eq 'node_default' || lc $f[0] eq 'user_default') {
+               $call = lc shift @f;
        }
-       if ($f[0] eq 'input') {
+       if (@f && $f[0] eq 'input') {
                shift @f;
                $flag = 'in';
        }
 }
 
-$fno = shift @f if @f && $f[0] =~ /^\d$/;
+$fno = shift @f if @f && $f[0] =~ /^\d|all$/;
 
 my $filter = Filter::read_in($sort, $call, $flag);
 Filter::delete($sort, $call, $flag, $fno);
index dfcc8da42cafc244ea3e48b5195f1c4f011f30be..cb0dd076e486d3ff5fcaf1f582d958aea33753d4 100644 (file)
@@ -13,23 +13,24 @@ my $sort = 'wcy';
 my $flag;
 my $fno = 1;
 my $call = $dxchan->call;
+my $f;
 
-my $f = lc shift @f if @f;
 if ($self->priv >= 8) {
-       if (is_callsign(uc $f)) {
-               my $uref = DXUser->get(uc $f);
+       if (@f && is_callsign(uc $f[0])) {
+               $f = uc shift @f;
+               my $uref = DXUser->get($f);
                $call = $uref->call if $uref;
+       } elsif (@f && lc $f[0] eq 'node_default' || lc $f[0] eq 'user_default') {
+               $call = lc shift @f;
        }
-       if (@f) {
-               $f = lc shift @f;
-               if ($f eq 'input') {
-                       $flag = 'in';
-                       $f = shift @f if @f;
-               }
+       if (@f && $f[0] eq 'input') {
+               shift @f;
+               $flag = 'in';
        }
 }
 
-$fno = $f if $f;
+$fno = shift @f if @f && $f[0] =~ /^\d|all$/;
+
 my $filter = Filter::read_in($sort, $call, $flag);
 Filter::delete($sort, $call, $flag, $fno);
 $flag = $flag ? "input " : "";
index 01f1390f790b3a6da571b3ffca5106e1e9b3b0a5..870710ce578658de81b804d4dd1eb1b983b98014 100644 (file)
@@ -13,23 +13,24 @@ my $sort = 'wwv';
 my $flag;
 my $fno = 1;
 my $call = $dxchan->call;
+my $f;
 
-my $f = lc shift @f if @f;
 if ($self->priv >= 8) {
-       if (is_callsign(uc $f)) {
-               my $uref = DXUser->get(uc $f);
+       if (@f && is_callsign(uc $f[0])) {
+               $f = uc shift @f;
+               my $uref = DXUser->get($f);
                $call = $uref->call if $uref;
+       } elsif (@f && lc $f[0] eq 'node_default' || lc $f[0] eq 'user_default') {
+               $call = lc shift @f;
        }
-       if (@f) {
-               $f = lc shift @f;
-               if ($f eq 'input') {
-                       $flag = 'in';
-                       $f = shift @f if @f;
-               }
+       if (@f && $f[0] eq 'input') {
+               shift @f;
+               $flag = 'in';
        }
 }
 
-$fno = $f if $f;
+$fno = shift @f if @f && $f[0] =~ /^\d|all$/;
+
 my $filter = Filter::read_in($sort, $call, $flag);
 Filter::delete($sort, $call, $flag, $fno);
 $flag = $flag ? "input " : "";
index 982e9c49afc9eb99b679ac180ecbdab8a48af0a4..b48dc7e0ca56f58a1bc8ed5693541cf89d6bbc93 100644 (file)
@@ -27,13 +27,13 @@ $filterdef = bless ([
                          ['group', 't', 3],
                          ['origin', 'c', 4],
                          ['wx', 't', 5],
-                         ['channel', 'n', 6],
-                         ['by_dxcc', 'n', 7],
-                         ['by_itu', 'n', 8],
-                         ['by_zone', 'n', 9],
-                         ['origin_dxcc', 'n', 10],
-                         ['origin_itu', 'n', 11],
-                         ['origin_itu', 'n', 12],
+                         ['channel', 'c', 6],
+                         ['by_dxcc', 'nc', 7],
+                         ['by_itu', 'ni', 8],
+                         ['by_zone', 'nz', 9],
+                         ['origin_dxcc', 'nc', 10],
+                         ['origin_itu', 'ni', 11],
+                         ['origin_zone', 'nz', 12],
                         ], 'Filter::Cmd');
 
 use vars qw($VERSION $BRANCH);
index abdcaba7363d8dbb2c8e682ed52a23cf644bfbeb..b027041c8c664711a0faaf511259bbcb147653c8 100644 (file)
@@ -30,6 +30,7 @@ use DXVars;
 use DXUtil;
 use DXDebug;
 use Data::Dumper;
+use Prefix;
 
 use strict;
 
@@ -297,10 +298,22 @@ sub install
        $in = "in" if $name =~ s/^IN_//;
        $name =~ s/.PL$//;
                
-       my $dxchan = DXChannel->get($name);
-       if ($dxchan) {
+       my $dxchan;
+       my @dxchan;
+       if ($name eq 'NODE_DEFAULT') {
+               @dxchan = DXChannel::get_all_nodes();
+       } elsif ($name eq 'USER_DEFAULT') {
+               @dxchan = DXChannel::get_all_users();
+       } else {
+               $dxchan = DXChannel->get($name);
+               push @dxchan, $dxchan if $dxchan;
+       }
+       foreach $dxchan (@dxchan) {
                my $n = "$in$sort" . "filter";
-               $dxchan->$n($remove ? undef : $self);
+               my $ref = $dxchan->$n;
+               if (!$ref || ($ref && uc $ref->{name} eq "$name.PL")) {
+                       $dxchan->$n($remove ? undef : $self);
+               }
        }
 }
 
@@ -471,6 +484,25 @@ sub parse
                                                                push @t, "\$r->[$fref->[2]]==$_";
                                                        }
                                                        $s .= "(" . join(' || ', @t) . ")";
+                                               } elsif ($fref->[1] =~ /^n[ciz]$/ ) {    # for DXCC, ITU, CQ Zone    
+                                                       my @n;
+                                                       my $cmd = $fref->[1];
+                                                       foreach my $v (@val) {
+                                                               if ($v =~ /^\d+$/) {    
+                                                                       push @n, $v unless grep $_ eq $v, @n;
+                                                               } else {
+                                                                       my @pre = Prefix::extract($v);
+                                                                       return ('numpre', $dxchan->msg('e27', $_)) unless @pre;
+                                                                       shift @pre;
+                                                                       foreach my $p (@pre) {
+                                                                               my $n = $p->dxcc if $cmd eq 'nc' ;
+                                                                               $n = $p->itu if $cmd eq 'ni' ;
+                                                                               $n = $p->cq if $cmd eq 'nz' ;
+                                                                               push @n, $n unless grep $_ eq $n, @n;
+                                                                       }
+                                                               }
+                                                       }
+                                                       $s .= "(" . join(' || ', map {"\$r->[$fref->[2]]==$_"} @n) . ")";
                                                } elsif ($fref->[1] eq 'r') {
                                                        my @t;
                                                        for (@val) {
index dc003638209c70b3095875e63042c40f27bc8633..8f17eaf32000442462ca1bd1bbbf840e4e942dd9 100644 (file)
@@ -51,13 +51,13 @@ $filterdef = bless ([
                          # tag, sort, field, priv, special parser 
                          ['by', 'c', 7],
                          ['origin', 'c', 8],
-                         ['channel', 'n', 9],
-                         ['by_dxcc', 'n', 10],
-                         ['by_itu', 'n', 11],
-                         ['by_zone', 'n', 12],
-                         ['origin_dxcc', 'c', 13],
-                         ['origin_itu', 'c', 14],
-                         ['origin_itu', 'c', 15],
+                         ['channel', 'c', 9],
+                         ['by_dxcc', 'nc', 10],
+                         ['by_itu', 'ni', 11],
+                         ['by_zone', 'nz', 12],
+                         ['origin_dxcc', 'nc', 13],
+                         ['origin_itu', 'ni', 14],
+                         ['origin_zone', 'nz', 15],
                         ], 'Filter::Cmd');
 
 sub init
index c6c5d8a6edaf0fff6c63292a74f0d68fb9eb9330..69db53864cfc465bffaf0658e31d7f4d0e91aa08 100644 (file)
@@ -77,6 +77,7 @@ package DXM;
                                e24 => 'Sorry, Internet access is not enabled',
                                e25 => 'Sorry the value must be between $_[0] and $_[1]',
                                e26 => 'Too many concurrent errors, you are being disconnected',
+                               e27 => '$_[0] not a numeric or a callsign prefix', 
 
                                echoon => 'Echoing enabled',
                                echooff => 'Echoing disabled',
index ee84c1508b3bdd47e07edad8597845760a34ac19..a1b9f00476228ac03e99b89480050c68c1741f60 100644 (file)
@@ -40,13 +40,13 @@ use vars qw(%list %valid $filterdef);
 $filterdef = bless ([
                          # tag, sort, field, priv, special parser 
                          ['channel', 'c', 0],
-                         ['channel_dxcc', 'n', 1],
-                         ['channel_itu', 'n', 2],
-                         ['channel_zone', 'n', 3],
+                         ['channel_dxcc', 'nc', 1],
+                         ['channel_itu', 'ni', 2],
+                         ['channel_zone', 'nz', 3],
                          ['call', 'c', 4],
-                         ['call_dxcc', 'n', 5],
-                         ['call_itu', 'n', 6],
-                         ['call_zone', 'n', 7],
+                         ['call_dxcc', 'nc', 5],
+                         ['call_itu', 'ni', 6],
+                         ['call_zone', 'nz', 7],
                         ], 'Filter::Cmd');
 
 
index be8be669c8d9e8899210163112c805551cb10d7b..06bf86557b5763d4637a4f93302190897c51a1af 100644 (file)
@@ -43,14 +43,14 @@ $filterdef = bless ([
                          ['call', 'c', 1],
                          ['info', 't', 3],
                          ['by', 'c', 4],
-                         ['call_dxcc', 'n', 5],
-                         ['by_dxcc', 'n', 6],
+                         ['call_dxcc', 'nc', 5],
+                         ['by_dxcc', 'nc', 6],
                          ['origin', 'c', 7, 9],
-                         ['call_itu', 'n', 8],
-                         ['call_zone', 'n', 9],
-                         ['by_itu', 'n', 10],
-                         ['by_zone', 'n', 11],
-                         ['channel', 'n', 12, 9],
+                         ['call_itu', 'ni', 8],
+                         ['call_zone', 'nz', 9],
+                         ['by_itu', 'ni', 10],
+                         ['by_zone', 'nz', 11],
+                         ['channel', 'c', 12],
                         ], 'Filter::Cmd');
 
 
index bccf815b92f82556e07873471754a138d73c9039..85f2b8178bd8aad882cf8e976b2251d948bac1ce 100644 (file)
@@ -52,13 +52,13 @@ $filterdef = bless ([
                          # tag, sort, field, priv, special parser 
                          ['by', 'c', 11],
                          ['origin', 'c', 12],
-                         ['channel', 'n', 13],
-                         ['by_dxcc', 'n', 14],
-                         ['by_itu', 'n', 15],
-                         ['by_zone', 'n', 16],
-                         ['origin_dxcc', 'c', 17],
-                         ['origin_itu', 'c', 18],
-                         ['origin_itu', 'c', 19],
+                         ['channel', 'c', 13],
+                         ['by_dxcc', 'nc', 14],
+                         ['by_itu', 'ni', 15],
+                         ['by_zone', 'nz', 16],
+                         ['origin_dxcc', 'nc', 17],
+                         ['origin_itu', 'ni', 18],
+                         ['origin_zone', 'nz', 19],
                         ], 'Filter::Cmd');