- $spotted = uc $f[2];
- $line =~ s/^$f[0]\s+$f[1]\s+$f[2]\s*//;
-} elsif (defined @f && @f >= 2) {
- $freq = $f[0];
- $spotted = uc $f[1];
- $line =~ s/^$f[0]\s+$f[1]\s*//;
-} elsif (!defined @f || @f < 2) {
- return (1, $self->msg('dx2'));
+} elsif (is_freq($f[0]) && $f[1] =~ m{^[\w\d]+(?:/[\w\d]+){0,2}$}) {
+ $freq = $f[0];
+ $spotted = uc $f[1];
+} else {
+ return (1, $self->msg('dx3'));
+}
+
+
+my $ipaddr;
+my $addr = $self->hostname;
+
+if ($self->conn && $self->conn->peerhost) {
+ $ipaddr = $addr unless !is_ipaddr($addr) || $addr =~ /^127\./ || $addr =~ /^::[0-9a-f]+$/;
+} elsif ($self->inscript) {
+ $ipaddr = "script";
+}
+
+# check some other things
+# remove ssid from calls
+my $spotternoid = basecall($spotter);
+my $callnoid = basecall($self->{call});
+
+#$DB::single = 1;
+
+if ($DXProt::baddx->in($spotted)) {
+ $localonly++;
+}
+if ($DXProt::badspotter->in($spotternoid)) {
+ LogDbg('DXCommand', "badspotter $spotternoid as $spotter ($oline) from $addr");
+ $localonly++;