headline: RBN set/seeme
[spider.git] / perl / DXChannel.pm
index a0bc6ab9d9e7c3e1400709e9473037e745fd890e..29919c7ebcf4eb7df53c97dbe0ebc495d30819cb 100644 (file)
@@ -41,95 +41,98 @@ use vars qw(%channels %valid @ISA $count $maxerrors);
 $count = 0;
 
 %valid = (
-                 call => '0,Callsign',
-                 conn => '9,Msg Conn ref',
-                 user => '9,DXUser ref',
-                 startt => '0,Start Time,atime',
-                 t => '9,Time,atime',
-                 pc50_t => '5,Last PC50 Time,atime',
-                 priv => '9,Privilege',
-                 state => '0,Current State',
-                 oldstate => '5,Last State',
-                 list => '9,Dep Chan List',
-                 name => '0,User Name',
-                 consort => '5,Connection Type',
                  'sort' => '5,Type of Channel',
-                 wwv => '0,Want WWV,yesno',
-                 wcy => '0,Want WCY,yesno',
-                 wx => '0,Want WX,yesno',
-                 talk => '0,Want Talk,yesno',
                  ann => '0,Want Announce,yesno',
-                 here => '0,Here?,yesno',
+                 ann_talk => '0,Suppress Talk Anns,yesno',
+                 annfilter => '5,Ann Filt-out',
+                 badcount => '1,Bad Word Count',
+                 badip => '9,BAD IP address',
+                 beep => '0,Want Beeps,yesno',
+                 build => '1,Node Build',
+                 call => '0,Callsign',
+                 cluster => '5,Cluster data',
                  conf => '0,In Conference?,yesno',
+                 conn => '9,Msg Conn ref',
+                 consort => '5,Connection Type',
+                 cq => '0,CQ Zone',
+                 delayed => '5,Delayed messages,parray',
+                 disconnecting => '9,Disconnecting,yesno',
+                 do_pc9x => '9,Handles PC9x,yesno',
                  dx => '0,DX Spots,yesno',
-                 redirect => '0,Redirect messages to',
-                 lang => '0,Language',
+                 dxcc => '0,Country Code',
+                 edit => '7,Edit Function',
+                 enhanced => '5,Enhanced Client,yesno',
+                 errors => '9,Errors',
                  func => '5,Function',
-                 loc => '9,Local Vars', # used by func to store local variables in
-                 beep => '0,Want Beeps,yesno',
+                 group => '0,Access Group,parray',     # used to create a group of users/nodes for some purpose or other.
+                 gtk => '5,Using GTK,yesno',
+                 handle_xml => '9,Handles XML,yesno',
+                 here => '0,Here?,yesno',
+                 hostname => '0,Hostname',
+                 inannfilter => '5,Ann Filt-inp',
+                 inpc92filter => '5,PC92 Route Filt-inp',
+                 inqueue => '9,Input Queue,parray',
+                 inrbnfilter => '5,RBN Filt-inp',
+                 inroutefilter => '5,Route Filt-inp',
+                 inscript => '9,In a script,yesno',
+                 inspotsfilter => '5,Spot Filt-inp',
+                 inwcyfilter => '5,WCY Filt-inp',
+                 inwwvfilter => '5,WWV Filt-inp',
+                 isbasic => '9,Internal Connection', 
+                 isolate => '5,Isolate network,yesno',
+                 isslugged => '9,Still Slugged,yesno',
+                 itu => '0,ITU Zone',
+                 K => '9,Seen on PC92 K,yesno',
+                 lang => '0,Language',
+                 lastmsgpoll => '0,Last Msg Poll,atime',
+                 lastping => '5,Ping last sent,atime',
                  lastread => '5,Last Msg Read',
+                 list => '9,Dep Chan List',
+                 loc => '9,Local Vars', # used by func to store local variables in
+                 logininfo => '9,Login info req,yesno',
+                 metric => '1,Route metric',
+                 name => '0,User Name',
+                 newroute => '1,New Style Routing,yesno',
+                 next_pc92_keepalive => '9,Next PC92 KeepAlive,atime',
+                 next_pc92_update => '9,Next PC92 Update,atime',
+                 nopings => '5,Ping Obs Count',
+                 oldstate => '5,Last State',
                  outbound => '5,outbound?,yesno',
-                 remotecmd => '9,doing rcmd,yesno',
-                 pagelth => '0,Page Length',
                  pagedata => '9,Page Data Store',
-                 group => '0,Access Group,parray',     # used to create a group of users/nodes for some purpose or other
-                 isolate => '5,Isolate network,yesno',
-                 delayed => '5,Delayed messages,parray',
-                 annfilter => '5,Ann Filt-out',
-                 wwvfilter => '5,WWV Filt-out',
-                 wcyfilter => '5,WCY Filt-out',
-                 spotsfilter => '5,Spot Filt-out',
-                 routefilter => '5,Route Filt-out',
-                 rbnfilter => '5,RBN Filt-out',
-                 pc92filter => '5,PC92 Route Filt-out',
-                 inannfilter => '5,Ann Filt-inp',
-                 inwwvfilter => '5,WWV Filt-inp',
-                 inwcyfilter => '5,WCY Filt-inp',
-                 inspotsfilter => '5,Spot Filt-inp',
-                 inroutefilter => '5,Route Filt-inp',
-                 inrbnfilter => '5,RBN Filt-inp',
-                 inpc92filter => '5,PC92 Route Filt-inp',
+                 pagelth => '0,Page Length',
                  passwd => '9,Passwd List,yesno',
+                 pc50_t => '5,Last PC50 Time,atime',
+                 pc92filter => '5,PC92 Route Filt-out',
+                 pingave => '0,Ping ave time',
                  pingint => '5,Ping Interval ',
-                 nopings => '5,Ping Obs Count',
-                 lastping => '5,Ping last sent,atime',
                  pingtime => '5,Ping totaltime,parray',
-                 pingave => '0,Ping ave time',
-                 logininfo => '9,Login info req,yesno',
-                 talklist => '0,Talk List,parray',
-                 cluster => '5,Cluster data',
-                 isbasic => '9,Internal Connection', 
-                 errors => '9,Errors',
+                 priv => '9,Privilege',
+                 prompt => '0,Required Prompt',
+                 rbnfilter => '5,RBN Filt-out',
+                 rbnseeme => '0,RBN See Me,yesno',
+                 redirect => '0,Redirect messages to',
+                 registered => '9,Registered?,yesno',
+                 remotecmd => '9,doing rcmd,yesno',
                  route => '9,Route Data',
-                 dxcc => '0,Country Code',
-                 itu => '0,ITU Zone',
-                 cq => '0,CQ Zone',
-                 enhanced => '5,Enhanced Client,yesno',
-                 gtk => '5,Using GTK,yesno',
+                 routefilter => '5,Route Filt-out',
                  senddbg => '8,Sending Debug,yesno',
-                 width => '0,Column Width',
-                 disconnecting => '9,Disconnecting,yesno',
-                 ann_talk => '0,Suppress Talk Anns,yesno',
-                 metric => '1,Route metric',
-                 badcount => '1,Bad Word Count',
-                 edit => '7,Edit Function',
-                 registered => '9,Registered?,yesno',
-                 prompt => '0,Required Prompt',
-                 version => '1,Node Version',
-                 build => '1,Node Build',
-                 verified => '9,Verified?,yesno',
-                 newroute => '1,New Style Routing,yesno',
-                 ve7cc => '0,VE7CC program special,yesno',
-                 lastmsgpoll => '0,Last Msg Poll,atime',
-                 inscript => '9,In a script,yesno',
-                 handle_xml => '9,Handles XML,yesno',
-                 do_pc9x => '9,Handles PC9x,yesno',
-                 inqueue => '9,Input Queue,parray',
-                 next_pc92_update => '9,Next PC92 Update,atime',
-                 next_pc92_keepalive => '9,Next PC92 KeepAlive,atime',
-                 hostname => '0,Hostname',
-                 isslugged => '9,Still Slugged,yesno',
                  sluggedpcs => '9,Slugged PCxx Queue,parray',
+                 spotsfilter => '5,Spot Filt-out',
+                 startt => '0,Start Time,atime',
+                 state => '0,Current State',
+                 t => '9,Time,atime',
+                 talk => '0,Want Talk,yesno',
+                 talklist => '0,Talk List,parray',
+                 user => '9,DXUser ref',
+                 ve7cc => '0,VE7CC program special,yesno',
+                 verified => '9,Verified?,yesno',
+                 version => '1,Node Version',
+                 wcy => '0,Want WCY,yesno',
+                 wcyfilter => '5,WCY Filt-out',
+                 width => '0,Column Width',
+                 wwv => '0,Want WWV,yesno',
+                 wwvfilter => '5,WWV Filt-out',
+                 wx => '0,Want WX,yesno',                
                 );
 
 $maxerrors = 20;                               # the maximum number of concurrent errors allowed before disconnection
@@ -360,6 +363,11 @@ sub is_rbn
        return $_[0]->{sort} eq 'N';
 }
 
+sub is_dslink
+{
+       return $_[0]->{sort} eq 'L';
+}
+
 # for perl 5.004's benefit
 sub sort
 {
@@ -707,9 +715,14 @@ sub process_one
        while (my $data = shift @{$self->{inqueue}}) {
                my ($sort, $call, $line) = $self->decode_input($data);
                next unless defined $sort;
-               
-               # do the really sexy console interface bit! (Who is going to do the TK interface then?)
-               dbg("<- $sort $call $line") if $sort ne 'D' && isdbg('chan');
+
+               if ($sort ne 'D') {
+                       if (isdbg('chan')) {
+                               if (($self->is_rbn && isdbg('rbnchan')) || !$self->is_rbn) {
+                                       dbg("<- $sort $call $line") if isdbg('chan');
+                               }
+                       }
+               }
                
                # handle A records
                my $user = $self->user;
@@ -764,6 +777,15 @@ sub error_handler
        $self->disconnect(1);
 }
 
+sub refresh_user
+{
+       my $call = shift;
+       my $user = shift;
+       return unless $call && $user && ref $user;
+       my $self = DXChannel::get($call);
+       $self->{user} = $user;
+       return $user;
+}
 
 sub isregistered
 {