From 19980464653659320e9b143f3da34b38bb908cb9 Mon Sep 17 00:00:00 2001 From: minima Date: Mon, 25 Jun 2001 17:56:11 +0000 Subject: [PATCH] add not here message fix a few things --- perl/DXCommandmode.pm | 9 +++++++++ perl/DXProt.pm | 27 +++++++++++++++------------ perl/DXUser.pm | 3 ++- perl/Messages | 1 + 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index 32b1f86c..c7ce8c3c 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -644,6 +644,15 @@ sub talk $line =~ s/\\5E/\^/g; $self->send("$to de $from: $line") if $self->{talk}; Log('talk', $to, $from, $main::mycall, $line); + # send a 'not here' message if required + unless ($self->{here} && $from ne $to) { + my ($ref, $dxchan); + if (($ref = Route::get($from)) && ($dxchan = $ref->dxchan)) { + my $name = $self->user->name || $to; + my $s = $self->user->nothere || $dxchan->msg('nothere', $name); + $dxchan->talk($to, $from, undef, $s); + } + } } # send an announce diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 152a5fe0..8bfd6c3e 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -275,10 +275,8 @@ sub normal # print join(',', @field), "\n"; - # ignore any lines that don't start with PC - return if !$field[0] =~ /^PC/; - # process PC frames + # process PC frames, this will fail unless the frame starts PCnn my ($pcno) = $field[0] =~ /^PC(\d\d)/; # just get the number return unless $pcno; return if $pcno < 10 || $pcno > 99; @@ -785,16 +783,21 @@ sub normal if ($pcno == 24) { # set here status my $call = uc $field[1]; - my $ref = Route::Node::get($call); - $ref->here($field[2]) if $ref; - $ref = Route::User::get($call); - $ref->here($field[2]) if $ref; - $ref ||= Route->new($call); + my ($nref, $uref); + $nref = Route::Node::get($call) && $nref->here($field[2]); + $uref = Route::User::get($call) && $uref->here($field[2]); + return unless $nref || $uref; # if we don't know where they are, it's pointless sending it on - # input filter if required - return unless $self->in_filter_route($ref); - - $self->route_pc24($ref, $field[3]) if $ref && !eph_dup($line); + unless (eph_dup($line)) { + if ($nref) { + return unless $self->in_filter_route($nref); + $self->route_pc24($nref, $field[3]) + } + if ($uref) { + return unless $self->in_filter_route($uref); + $self->route_pc24($uref, $field[3]); + } + } return; } diff --git a/perl/DXUser.pm b/perl/DXUser.pm index 23996b07..52b7819d 100644 --- a/perl/DXUser.pm +++ b/perl/DXUser.pm @@ -63,8 +63,9 @@ $lasttime = 0; pingint => '9,Node Ping interval', nopings => '9,Ping Obs Count', wantlogininfo => '9,Login info req,yesno', - wantgrid => '0,DX Grid Info,yesno', + wantgrid => '0,DX Grid Info,yesno', lastoper => '9,Last for/oper,cldatetime', + nothere => '0,Not Here Text', ); no strict; diff --git a/perl/Messages b/perl/Messages index a9a1be91..98cf96db 100644 --- a/perl/Messages +++ b/perl/Messages @@ -172,6 +172,7 @@ package DXM; nodeu => '$_[0] set back as a User', nodee1 => 'You cannot use this command whilst your target ($_[0]) is on-line', notdone => 'NOT Done', + nothere => 'Sorry, but $_[0] isn\'t here at the moment, please try later', obscount => 'Ping obsolescence count on $_[0] set to $_[1]', ok => 'Operation successful', outconn => 'Outstanding connect to $_[0]', -- 2.34.1