changed frames from client to be I frames to distinguish echos from telnet
[spider.git] / perl / cluster.pl
index 9c7e3e72a36070f77db12e3a28a63bdc0f996780..b4cb11c0a898700d842a072e0c0d218e40ee1eac 100755 (executable)
@@ -48,7 +48,7 @@ package main;
 
 @inqueue = ();                                 # the main input queue, an array of hashes
 $systime = 0;                                  # the time now (in seconds)
-$version = 1.7;                                        # the version no of the software
+$version = "1.11";                             # the version no of the software
 $starttime = 0;                 # the starting time of the cluster   
  
 # handle disconnections
@@ -108,7 +108,13 @@ sub rec
                        $user->{lang} = $main::lang if !$user->{lang}; # to autoupdate old systems
                }
                
-               
+               # is he locked out ?
+               if ($user->lockout) {
+                       Log('DXCommand', "$call is locked out, disconnected");
+                       $conn->send_now("Z$call|bye"); # this will cause 'client' to disconnect
+                       return;
+               }
+
                # create the channel
                $dxchan = DXCommandmode->new($call, $conn, $user) if ($user->sort eq 'U');
                $dxchan = DXProt->new($call, $conn, $user) if ($user->sort eq 'A');
@@ -158,13 +164,13 @@ sub process_inqueue
        my ($sort, $call, $line) = $data =~ /^(\w)(\S+)\|(.*)$/;
        
        # do the really sexy console interface bit! (Who is going to do the TK interface then?)
-       dbg('chan', "<- $sort $call $line\n");
+       dbg('chan', "<- $sort $call $line\n") unless $sort eq 'D';
        
        # handle A records
        my $user = $dxchan->user;
        if ($sort eq 'A' || $sort eq 'O') {
                $dxchan->start($line, $sort);  
-       } elsif ($sort eq 'D') {
+       } elsif ($sort eq 'I') {
                die "\$user not defined for $call" if !defined $user;
                
                # normal input
@@ -173,6 +179,8 @@ sub process_inqueue
                disconnect($dxchan) if ($dxchan->{state} eq 'bye');
        } elsif ($sort eq 'Z') {
                disconnect($dxchan);
+       } elsif ($sort eq 'D') {
+               ;                       # ignored (an echo)
        } else {
                print STDERR atime, " Unknown command letter ($sort) received from $call\n";
        }