X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=69eb2228a194f4323638bf0b32cd6b7b005df6b1;hb=ab811a0c902225075a9bd69749f65594079433a9;hp=1288165e33e51187c8c83cc740bf77cd645c48fa;hpb=fdcc6aa6420ef0a5e90a940a8d5fc68513e9257b;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 1288165e..69eb2228 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -74,7 +74,7 @@ $obscount = 2; $chatdupeage = 20 * 60; $chatimportfn = "$main::root/chat_import"; $pc19_version = 5454; # the visible version no for outgoing PC19s generated from pc59 -$pc92_update_period = 2*60*60; # the period between outgoing PC92 C updates +$pc92_update_period = 4*60*60; # the period between outgoing PC92 C updates $pc92_short_update_period = 15*60; # shorten the update period after a connection or start up $pc92_extnode_update_period = 1*60*60; # the update period for external nodes $pc92_keepalive_period = 1*60*60; # frequency of PC92 K (keepalive) records @@ -232,7 +232,7 @@ sub init do "$main::data/hop_table.pl" if -e "$main::data/hop_table.pl"; confess $@ if $@; - my $user = DXUser->get($main::mycall); + my $user = DXUser::get($main::mycall); die "User $main::mycall not setup or disappeared RTFM" unless $user; $myprot_version += $main::version*100; @@ -420,6 +420,12 @@ sub normal } } + if (defined &Local::pcprot) { + my $r; + eval { $r = Local::pcprot($self, $pcno, $line, @field); }; + return if $r; # i.e don't process it + } + # send it out for processing my $origin = $self->{call}; no strict 'subs'; @@ -510,8 +516,8 @@ sub process # do the keepalive for me, if required if ($main::systime >= $main::me->{next_pc92_keepalive}) { - $main::me->broadcast_pc92_keepalive($main::mycall); time_out_pc92_routes(); + $main::me->broadcast_pc92_keepalive($main::mycall); } if ($pc92_slug_changes && $main::systime >= $last_pc92_slug + $pc92_slug_changes) { @@ -548,6 +554,7 @@ sub send_dx_spot foreach $dxchan (@dxchan) { next if $dxchan == $main::me; next if $dxchan == $self && $self->is_node; + next if $line =~ /PC61/ && !$dxchan->is_spider && !$dxchan->is_user; $dxchan->dx_spot($line, $self->{isolate}, @_, $self->{call}); } } @@ -856,8 +863,10 @@ sub send_local_config } elsif ($self->{do_pc9x}) { dbg("send_local_config: doing pc9x"); my $node = Route::Node::get($self->{call}); - $self->send_last_pc92_config($main::routeroot); - $self->send(pc92a($main::routeroot, $node)) unless $main::routeroot->last_PC92C =~ /$self->{call}/; +# $self->send_last_pc92_config($main::routeroot); +# $self->send(pc92a($main::routeroot, $node)) unless $main::routeroot->last_PC92C =~ /$self->{call}/; + $self->send(pc92a($main::routeroot, $node)); + $self->send(pc92k($main::routeroot)); } else { # create a list of all the nodes that are not connected to this connection # and are not themselves isolated, this to make sure that isolated nodes @@ -1113,10 +1122,10 @@ sub process_rcmd { my ($self, $tonode, $fromnode, $user, $cmd) = @_; if ($tonode eq $main::mycall) { - my $ref = DXUser->get_current($fromnode); + my $ref = DXUser::get_current($fromnode); my $cref = Route::Node::get($fromnode); - Log('rcmd', 'in', $ref->{priv}, $fromnode, $cmd); - if ($cmd !~ /^\s*rcmd/i && $cref && $ref && $cref->call eq $ref->homenode) { # not allowed to relay RCMDS! + Log('rcmd', 'in', ($ref->{priv}||0), $fromnode, $cmd); + if ($cmd !~ /^\s*rcmd/i && $cref && $ref && $ref->homenode && $cref->call eq $ref->homenode) { # not allowed to relay RCMDS! if ($ref->{priv}) { # you have to have SOME privilege, the commands have further filtering $self->{remotecmd} = 1; # for the benefit of any command that needs to know my $oldpriv = $self->{priv}; @@ -1132,7 +1141,7 @@ sub process_rcmd $self->send_rcmd_reply($main::mycall, $fromnode, $user, "your attempt is logged, Tut tut tut...!"); } } else { - my $ref = DXUser->get_current($tonode); + my $ref = DXUser::get_current($tonode); if ($ref && $ref->is_clx) { $self->route($tonode, pc84($fromnode, $tonode, $user, $cmd)); } else { @@ -1157,7 +1166,7 @@ sub process_rcmd_reply $dxchan->send($line) if $dxchan; } } else { - my $ref = DXUser->get_current($tonode); + my $ref = DXUser::get_current($tonode); if ($ref && $ref->is_clx) { $self->route($tonode, pc85($fromnode, $tonode, $user, $line)); } else {