deploy a default input route if none present.
[spider.git] / perl / DXProt.pm
index 9a0b2121ff17fc9e0d5f3cc6b11e3c25a8fdc97f..96a51f5dce89703f306e16f7240f54a01359462d 100644 (file)
@@ -37,7 +37,6 @@ use DXProtHandle;
 
 use strict;
 
-use vars qw($VERSION $BRANCH);
 use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restime $eph_pc34_restime
                        $last_hour $last10 %eph  %pings %rcmds $ann_to_talk
                        $pingint $obscount %pc19list $chatdupeage $chatimportfn
@@ -45,10 +44,9 @@ use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restim
                        %nodehops $baddx $badspotter $badnode $censorpc $rspfcheck
                        $allowzero $decode_dk0wcy $send_opernam @checklist
                        $eph_pc15_restime $pc92_update_period $last_pc92_update
+                       %pc92_find $pc92_find_timeout
                   );
 
-($VERSION, $BRANCH) = dxver(q$Revision$);
-
 $pc11_max_age = 1*3600;                        # the maximum age for an incoming 'real-time' pc11
 $pc23_max_age = 1*3600;                        # the maximum age for an incoming 'real-time' pc23
 
@@ -77,6 +75,9 @@ $investigation_int = 12*60*60;        # time between checks to see if we can see this n
 $pc19_version = 5466;                  # the visible version no for outgoing PC19s generated from pc59
 $pc92_update_period = 30*60;   # the period between PC92 C updates
 $last_pc92_update = time + int rand(180);              # the last time a PC92 config update
+%pc92_find = ();                               # outstanding pc92 find operations
+$pc92_find_timeout = 30;               # maximum time to wait for a reply
+
 
 
 @checklist = 
@@ -293,6 +294,12 @@ sub start
        $self->{inwcyfilter} = Filter::read_in('wcy', $call, 1) || Filter::read_in('wcy', 'node_default', 1);
        $self->{inannfilter} = Filter::read_in('ann', $call, 1) || Filter::read_in('ann', 'node_default', 1);
        $self->{inroutefilter} = Filter::read_in('route', $call, 1) || Filter::read_in('route', 'node_default', 1) unless $self->{isolate};
+       # if there is no route input filter then specify a default one.
+       # obviously this can be changed later by the sysop.
+       if (!$self->{inroutefilter}) {
+               my $dxcc = $self->dxcc;
+               $Route::filterdef->cmd($self, 'route', 'accept', "input by_dxcc $dxcc" );
+       }
        
        # set unbuffered and no echo
        $self->send_now('B',"0");
@@ -432,6 +439,7 @@ sub process
        }
 
        Investigate::process();
+       clean_pc92_find();
 
        # every ten seconds
        if ($t - $last10 >= 10) {       
@@ -444,7 +452,7 @@ sub process
                        dbg("ROUTE: sending pc92 update") if isdbg('route');
                        send_pc92_update();
                        time_out_pc92_routes();
-                       $last_pc92_update = $main::systime + int rand(180);
+                       $last_pc92_update = $main::systime + int rand(5*60);
                }
                
                $last10 = $t;
@@ -1168,7 +1176,7 @@ sub talk
        } else {
                $self->send(pc10($from, $to, $via, $line, $origin));
        }
-       Log('talk', $to, $from, $via?$via:$self->call, $line) unless $origin && $origin ne $main::mycall;
+       Log('talk', $to, $from, '>' . ($via || $origin || $self->call), $line) unless $origin && $origin ne $main::mycall;
 }
 
 # send it if it isn't the except list and isn't isolated and still has a hop count
@@ -1497,5 +1505,28 @@ sub import_chat
        }
 }
 
+# start a pc92 find operation
+sub start_pc92_find
+{
+       my $dxchan = shift;
+       my $target = shift;
+       my $key = "$dxchan->{call}|$target";
+       if ($pc92_find{$key}) {
+               
+       }
+}
+
+# function (not method) to handle pc92 find returns
+sub handle_pc92_find_reply
+{
+       my ($dxchan, $node, $from, $target, $flag, $ms) = @_;
+       
+       $dxchan->print_pc92_find_reply($node, $target, $flag, $ms) if $dxchan->can('print_pc92_find_return');
+}
+
+sub clean_pc92_find
+{
+
+}
 1;
 __END__