X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fshow%2Fdx.pl;h=4458768062b9898dff36b615a19b1aa10eaa12f2;hb=65f4d068c56ddb6e25d1f62b7ca6fd43741386b3;hp=19396a70eff5366dbd57b945d992d9985451802b;hpb=7378e3c43c4448328c2e7a1842244ef7a48f0fdd;p=spider.git diff --git a/cmd/show/dx.pl b/cmd/show/dx.pl index 19396a70..44587680 100644 --- a/cmd/show/dx.pl +++ b/cmd/show/dx.pl @@ -31,6 +31,8 @@ my $itu; my $byitu; my $fromdxcc = 0; my $exact; +my $origin; +my $ip; my ($doqsl, $doiota, $doqra, $dofilter); my $usesql = $main::dbh && $Spot::use_db_for_search; @@ -87,6 +89,17 @@ while ($f = shift @list) { # next field dbg "got info $info" if isdbg('shdx'); next; } + if (lc $f eq 'origin' && $list[0]) { + $origin = uc shift @list; + dbg "got origin $origin" if isdbg('shdx'); + next; + } + if (lc $f eq 'ip' && $list[0]) { + $ip = shift @list; + dbg "got ip $ip" if isdbg('shdx'); + next; + } + if ((lc $f eq 'spotter' || lc $f eq 'by') && $list[0]) { $spotter = uc shift @list; if ($list[0] && lc $list[0] eq 'dxcc') { @@ -152,7 +165,24 @@ while ($f = shift @list) { # next field #$DB::single = 1; -# first deal with the prefix +# check origin +if ($origin) { + $expr .= ' && ' if $expr; + $expr .= "\$f7 eq '$origin'"; + $hint .= ' && ' if $hint; + $hint .= "m{$origin}"; +} + +# check (any) ip address +if ($ip) { + $expr .= ' && ' if $expr; + $expr .= "\$f14 && \$f14 =~ m{^$ip}"; + $hint .= ' && ' if $hint; + $ip =~ s/\./\\./g; # IPV4 + $hint .= "m{$ip}"; +} + +# deal with the prefix if ($pre) { my @ans; @@ -220,7 +250,7 @@ if (@freq) { # any info if ($info) { $expr .= ' && ' if $expr; - $info =~ s{(.)}{"\Q$1"}ge; +# $info =~ s{(.)}{"\Q$1"}ge; $expr .= "\$f3 =~ m{$info}i"; $hint .= ' && ' if $hint; $hint .= "m{$info}i"; @@ -384,7 +414,13 @@ if ($doqra) { $hint .= "m{$doqra}io"; } -dbg "expr: $expr from: $from to: $to fromday: $fromday today: $today" if isdbg('shdx'); + +$from ||= ''; +$to ||= ''; +$fromday ||= ''; +$today ||= ''; + +dbg "expr: $expr from: $from to: $to fromday: $fromday today: $today" if isdbg('sh/dx'); # now do the search