1. fix set/lockout so that it is possible to lock out all SSIDs except those
[spider.git] / cmd / set / qra.pl
index 1bdc1cecce5adfe3cf535129f41982a032e50750..4bae21c3c5f396ba582be37e62a56f6423a68237 100644 (file)
@@ -15,18 +15,28 @@ $line =~ s/^\s+//;
 $line =~ s/\s+$//;
 
 return (1, $self->msg('qrae1')) if !$line;
-return (1, $self->msg('qrae2', $line)) unless DXBearing::is_qra($line);
+return (1, $self->msg('qrae2', $line)) unless is_qra($line);
 
 $user = DXUser->get_current($call);
 if ($user) {
-       $line = uc $line;
-       $user->qra($line);
-       if (!$user->lat && !$user->long) {
-               my ($lat, $long) = DXBearing::qratoll($line);
+       my $qra = uc $line;
+       my $oldqra = $user->qra || "";
+       if ($oldqra ne $qra) {
+               $user->qra($qra);
+               my $s = DXProt::pc41($call, 5, $qra);
+               DXProt::eph_dup($s);
+               DXChannel::broadcast_all_nodes($s, $main::me);
+       }
+       my ($lat, $long) = DXBearing::qratoll($qra);
+       my $oldlat = $user->lat || 0;
+       my $oldlong = $user->long || 0;
+       if ($oldlat != $lat || $oldlong != $long) {
                $user->lat($lat);
                $user->long($long);
-               my $s = DXBearing::lltos($lat, $long);
-               DXProt::broadcast_all_ak1a(DXProt::pc41($call, 3, $s), $DXProt::me);
+               my $l = DXBearing::lltos($lat, $long);
+               my $s = DXProt::pc41($call, 3, $l);
+               DXProt::eph_dup($s);
+               DXChannel::broadcast_all_nodes($s, $main::me) ;
        }
        
        $user->put();