add CTY-3304
[spider.git] / cmd / disconnect.pl
index 9207d73b930c5833725821538524e1ac51c242c2..7dad27bb31b3703e303782b66e04fbcdada61830 100644 (file)
@@ -10,21 +10,35 @@ if ($self->priv < 5) {
        return (1, $self->msg('e5'));
 }
 
+if ($calls[0] =~ /^user/i ) {
+       @calls = grep {$_ ne $self->call} DXChannel::get_all_user_calls();
+} elsif ($calls[0] =~ /^node/i) {
+       @calls = grep {$_ ne $main::mycall} DXChannel::get_all_node_calls();
+} elsif (lc $calls[0] eq 'all') {
+       @calls = grep {$_ ne $main::mycall && $_ ne $self->call} DXChannel::get_all_node_calls(), DXChannel::get_all_user_calls();
+}
 foreach $call (@calls) {
        $call = uc $call;
        next if $call eq $main::mycall;
-       my $dxchan = DXChannel->get($call);
+       my $dxchan = DXChannel::get($call);
        if ($dxchan) {
                if ($dxchan->is_node) {
-#                      $dxchan->send_now("D", DXProt::pc39($main::mycall, $self->msg('disc1', $self->call)));
+#                      $dxchan->send_pc39($self->msg('disc1', $self->call));
                } else {
                        return (1, $self->msg('e5')) if $self->priv < 8;
                        $dxchan->send_now('D', $self->msg('disc1', $self->call));
                } 
                $dxchan->disconnect;
                push @out, $self->msg('disc2', $call);
-       } elsif (my $conn = Msg->call($call)) {
+       } elsif (my $conn = Msg->conns($call)) {
                $conn->disconnect;
+               push @out, $self->msg('disc3', $call);
+#      } elsif (my $ref = DXCluster->get_exact($call)) {
+#              my $dxchancall = $ref->dxchancall;
+#              if ($dxchancall eq $main::mycall || !DXChannel::get($dxchancall)) {
+#                      $ref->del;
+#                      push @out, $self->msg('disc4', $call);
+#              }
        } else {
                push @out, $self->msg('e10', $call);
        }