add RBN filtering
[spider.git] / perl / DXCommandmode.pm
index 9d9f60b45e90b199fda5f5c4246d064d8ef1e412..898a639720013e9c1e54d563f8ebf14f3bce2b04 100644 (file)
@@ -13,7 +13,7 @@ package DXCommandmode;
 
 @ISA = qw(DXChannel);
 
-require 5.10.1;
+use 5.10.1;
 
 use POSIX qw(:math_h);
 use DXUtil;
@@ -43,7 +43,7 @@ use JSON;
 use Time::HiRes qw(gettimeofday tv_interval);
 
 use Mojo::IOLoop;
-use Mojo::IOLoop::Subprocess;
+use DXSubprocess;
 use Mojo::UserAgent;
 
 use strict;
@@ -176,6 +176,9 @@ sub start
        $self->{annfilter} = Filter::read_in('ann', $call, 0) 
                || Filter::read_in('ann', $nossid, 0) 
                        || Filter::read_in('ann', 'user_default', 0) ;
+       $self->{rbnfilter} = Filter::read_in('rbn', $call, 0) 
+               || Filter::read_in('rbn', $nossid, 0)
+                       || Filter::read_in('rbn', 'user_default', 0);
 
        # clean up qra locators
        my $qra = $user->qra;
@@ -835,7 +838,7 @@ sub find_cmd_name {
                };
                
                #wrap the code into a subroutine inside our unique package
-               my $eval = qq(package DXCommandmode::$package; use POSIX qw{:math_h}; use DXLog; use DXDebug; use DXUser; use DXUtil; our \@ISA = qw{DXCommandmode}; );
+               my $eval = qq(package DXCommandmode::$package; use 5.10.1; use POSIX qw{:math_h}; use DXLog; use DXDebug; use DXUser; use DXUtil; our \@ISA = qw{DXCommandmode}; );
 
 
                if ($sub =~ m|\s*sub\s+handle\n|) {
@@ -994,12 +997,21 @@ sub format_dx_spot
        my $loc = '';
        my $clth = $self->{consort} eq 'local' ? 29 : 30;
        my $comment = substr (($_[3] || ''), 0, $clth);
-       $comment .= ' ' x ($clth - length($comment));
+       $comment .= ' ' x ($clth - (length($comment)));
+       if ($self->{user}->wantgrid) {
+               my $ref = DXUser::get_current($_[1]);
+               if ($ref && $ref->qra) {
+                       $loc = ' ' . substr($ref->qra, 0, 4);
+                       $comment = substr $comment, 0,  ($clth - (length($comment)+length($loc)));
+                       $comment .= $loc;
+                       $loc = '';
+               }
+       }
+       
        if ($self->{user}->wantgrid) {
                my $ref = DXUser::get_current($_[4]);
-               if ($ref) {
-                       $loc = $ref->qra || '';
-                       $loc = ' ' . substr($loc, 0, 4) if $loc;
+               if ($ref && $ref->qra) {
+                       $loc = ' ' . substr($ref->qra, 0, 4);
                }
        }
 
@@ -1316,7 +1328,7 @@ sub spawn_cmd
                return @out;
        }
        
-       my $fc = Mojo::IOLoop::Subprocess->new;
+       my $fc = DXSubprocess->new;
 #      $fc->serializer(\&encode_json);
 #      $fc->deserializer(\&decode_json);
        $fc->run(