--- /dev/null
+#
+# set the pc90 flag
+#
+# Copyright (c) 1998 - Dirk Koopman
+#
+# $Id$
+#
+
+my ($self, $line) = @_;
+my @args = split /\s+/, $line;
+my $call;
+my @out;
+
+@args = $self->call if (!@args || $self->priv < 9);
+
+foreach $call (@args) {
+ $call = uc $call;
+ my $user = DXUser->get_current($call);
+ if ($user) {
+ $user->wantpc90(1);
+ $user->put;
+ push @out, $self->msg('pc90s', $call);
+ } else {
+ push @out, $self->msg('e3', "Set PC90", $call);
+ }
+}
+return (1, @out);
@args = $self->call if (!@args || $self->priv < 9);
foreach $call (@args) {
- $call = uc $call;
- my $chan = DXChannel->get($call);
- if ($chan) {
- DXChannel::wwv($chan, 1);
- $chan->user->wantwwv(1);
- push @out, $self->msg('wwvs', $call);
- } else {
- push @out, $self->msg('e3', "Set WWV", $call);
- }
+ $call = uc $call;
+ my $chan = DXChannel->get($call);
+ if ($chan) {
+ DXChannel::wwv($chan, 1);
+ $chan->user->wantwwv(1);
+ push @out, $self->msg('wwvs', $call);
+ } else {
+ push @out, $self->msg('e3', "Set WWV", $call);
+ }
}
return (1, @out);
--- /dev/null
+#
+# unset the pc90 flag
+#
+# Copyright (c) 1998 - Dirk Koopman
+#
+# $Id$
+#
+
+my ($self, $line) = @_;
+my @args = split /\s+/, $line;
+my $call;
+my @out;
+
+@args = $self->call if (!@args || $self->priv < 9);
+
+foreach $call (@args) {
+ $call = uc $call;
+ my $user = DXUser->get_current($call);
+ if ($user) {
+ $user->wantpc90(0);
+ push @out, $self->msg('pc90u', $call);
+ } else {
+ push @out, $self->msg('e3', "Unset PC90", $call);
+ }
+}
+return (1, @out);
Reunion: 39: 53: AF: -21.10: -55.60: -4.0: FR:\r
FR,TO0R,TO3R;\r
Glorioso: 39: 53: AF: -11.50: -47.30: -3.0: FR/g:\r
- FR/G,FR5AI,FR5ZQ/G,FR5ZU/G,FR7GL;\r
+ FR/G,FR5AI,FR5ZQ/G,FR5ZU/G,FR7GL,FR5HG/G;\r
Juan de Nova & Europa: 39: 53: AF: -19.60: -41.60: -3.0: FR/j:\r
E,FR4FA,J;\r
Tromelin: 39: 53: AF: -15.90: -54.40: -4.0: FR/t:\r
return;
}
if ($pcno == 90) { # new style PC16,17,19,21
+ my $node = $field[1];
+
+ # mark this node as wanting PC90s
+ my $parent = Route::Node::get($node);
+ if ($parent) {
+ my $t = hex $field[2];
+ my $last = $parent->lastpc90 || 0;
+ if ($last < $t) {
+ $parent->pc90(1);
+ $parent->lastpc90($t);
+ my ($updsort, $n) = unpack "AA*", $field[3];
+ for (my $i = 4; $i < $#field; $i++) {
+ my ($sort, $flag, $node, $ping) = $field[$i] =~ m{(\w)(\d)([-\w+])(,\d+)?};
+ $ping /= 10 if (defined $ping);
+ }
+ }
+ }
+
return;
}
}
next if $dxchan == $main::me;
# send the pc50 or PC90
- if ($pc50s && $dxchan->is_spider) {
-# $dxchan->send_route(\&pc90, 1, $main::me, 'T', @dxchan);
+ if ($pc50s && $dxchan->user->wantpc90) {
+ $dxchan->send_route(\&pc90, 1, $main::me, 'T', @dxchan);
} else {
$dxchan->send($pc50s) if $pc50s;
}
# and are not themselves isolated, this to make sure that isolated nodes
# don't appear outside of this node
my @dxchan = grep { $_->call ne $main::mycall && $_ != $self && !$_->{isolate} } DXChannel::get_all_nodes();
- @localnodes = map { my $r = Route::Node::get($_->{call}); $r ? $r : () } @dxchan if @dxchan;
+ @localnodes = map { my $r = Route::Node::get($_->{call}); $r ? $r : () } @dxchan if @dxchan && !$self->user->wantpc90;
my @intcalls = map { $_->nodes } @localnodes if @localnodes;
my $ref = Route::Node::get($self->{call});
my @rnodes = $ref->nodes;
unshift @localnodes, $main::routeroot;
}
+
send_route($self, \&pc19, scalar(@localnodes)+scalar(@remotenodes), @localnodes, @remotenodes);
# get all the users connected on the above nodes and send them out
dbg("sent a null value") if isdbg('chanerr');
}
}
-# $self->send_route(\&pc90, 1, $main::me, 'T', DXChannel::get_all());
+ $self->send_route(\&pc90, 1, $main::me, 'T', DXChannel::get_all()) if $self->user->wantpc90;
}
#
hmsgno => '0,Highest Msgno',
group => '0,Access Group,parray', # used to create a group of users/nodes for some purpose or other
isolate => '9,Isolate network,yesno',
- wantbeep => '0,Rec Beep,yesno',
- wantann => '0,Rec Announce,yesno',
- wantwwv => '0,Rec WWV,yesno',
- wantwcy => '0,Rec WCY,yesno',
- wantecho => '0,Rec Echo,yesno',
- wanttalk => '0,Rec Talk,yesno',
- wantwx => '0,Rec WX,yesno',
- wantdx => '0,Rec DX Spots,yesno',
- wantemail => '0,Rec Msgs as Email,yesno',
+ wantbeep => '0,Req Beep,yesno',
+ wantann => '0,Req Announce,yesno',
+ wantwwv => '0,Req WWV,yesno',
+ wantwcy => '0,Req WCY,yesno',
+ wantecho => '0,Req Echo,yesno',
+ wanttalk => '0,Req Talk,yesno',
+ wantwx => '0,Req WX,yesno',
+ wantdx => '0,Req DX Spots,yesno',
+ wantemail => '0,Req Msgs as Email,yesno',
pagelth => '0,Current Pagelth',
pingint => '9,Node Ping interval',
nopings => '9,Ping Obs Count',
wantlogininfo => '9,Login info req,yesno',
wantgrid => '0,DX Grid Info,yesno',
wantann_talk => '0,Talklike Anns,yesno',
+ wantpc90 => '1,Req PC90,yesno',
lastoper => '9,Last for/oper,cldatetime',
nothere => '0,Not Here Text',
registered => '9,Registered?,yesno',
passerr => 'Please use: SET/PASS <password> <callsign>',
password => 'Password set or changed for $_[0]',
passwordu => 'Password removed for $_[0]',
+ pc90s => 'PC90 enabled for $_[0]',
+ pc90u => 'PC90 disabled $_[0]',
pingo => 'Ping Started to $_[0]',
pingi => 'Ping Returned from $_[0] $_[1] (Ave $_[2]) secs',
pinge1 => 'Cannot ping yourself!',
users => '0,Users,parray',
usercount => '0,User Count',
version => '0,Version',
+ pc90 => '0,Using PC90,yesno',
+ lastpc90 => '0,Last PC90 time,cldatetime',
);
$filterdef = $Route::filterdef;