# remember type of connection
$self->{consort} = $line;
$self->{outbound} = $sort eq 'O';
- $self->{priv} = $user->priv;
- $self->{lang} = $user->lang;
+ $self->{priv} = $user->priv || 1; # other clusters can always be 'normal' users
+ $self->{lang} = $user->lang || 'en';
$self->{isolate} = $user->{isolate};
$self->{consort} = $line; # save the connection type
$self->{here} = 1;
} else {
route(undef, $to, pc34($main::mycall, $to, $cmd));
}
+ if ($to ne $field[7]) {
+ $to = $field[7];
+ $node = DXCluster->get_exact($to);
+ if ($node && $node->dxchan && $node->dxchan->is_clx) {
+ route(undef, $to, pc84($main::mycall, $to, $main::mycall, $cmd));
+ } else {
+ route(undef, $to, pc34($main::mycall, $to, $cmd));
+ }
+ }
$user->lastoper($main::systime);
$user->put;
}
my $dxchan = DXChannel->get($s->{call});
$dxchan->send($field[3]) if $dxchan;
delete $rcmds{$field[2]} if !$dxchan;
+ } else {
+ # send unsolicited ones to the sysop
+ my $dxchan = DXChannel->get($main::myalias);
+ $dxchan->send($field[3]) if $dxchan;
}
} else {
my $ref = DXUser->get_current($field[1]);
my ($lat, $long) = DXBearing::stoll($field[3]);
$user->lat($lat);
$user->long($long);
- my $qra = $user->qra || DXBearing::lltoqra($lat, $long);
- $qra = DXBearing::lltoqra($lat, $long) unless $qra && DXBearing::is_qra($qra);
- $user->qra($qra) if $qra ne $user->qra;
+ $user->qra(DXBearing::lltoqra($lat, $long)) unless $user->qra && DXBearing::is_qra($user->qra);
} elsif ($field[2] == 4) {
$user->homenode($field[3]);
}
$dxchan = DXChannel->get($s->{call});
$dxchan->send($field[4]) if $dxchan;
delete $rcmds{$field[2]} if !$dxchan;
+ } else {
+ # send unsolicited ones to the sysop
+ my $dxchan = DXChannel->get($main::myalias);
+ $dxchan->send($field[4]) if $dxchan;
}
}
} else {