X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fcluster.pl;h=e343cc0b4175ad56f83be0abc41acc975f54056b;hb=337f38bfac57a5e5df34c63094fb869b0e2f6bee;hp=666f4f87fd0b59d0b167b297f3ef11cbec3d454c;hpb=099c6b4a10d9f1e7471b0c94273cd992b5814cdc;p=spider.git diff --git a/perl/cluster.pl b/perl/cluster.pl index 666f4f87..e343cc0b 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -48,7 +48,7 @@ package main; @inqueue = (); # the main input queue, an array of hashes $systime = 0; # the time now (in seconds) -$version = 1.5; # the version no of the software +$version = "1.10"; # the version no of the software $starttime = 0; # the starting time of the cluster # handle disconnections @@ -85,8 +85,12 @@ sub rec return; } - # is there one already connected elsewhere in the cluster? - if (DXCluster->get($call)) { + # is there one already connected elsewhere in the cluster (and not a cluster) + my $user = DXUser->get($call); + if ($user && $user->sort eq 'A' && !DXCluster->get_exact($call)) { + ; + } elsif (($call eq $main::myalias && DXCluster->get_exact($call)) || + DXCluster->get($call)) { my $mess = DXM::msg($lang, 'concluster', $call); dbg('chan', "-> D $call $mess\n"); $conn->send_now("D$call|$mess"); @@ -96,6 +100,7 @@ sub rec return; } + # the user MAY have an SSID if local, but otherwise doesn't my $user = DXUser->get($call); if (!defined $user) { $user = DXUser->new($call); @@ -103,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');