X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fcluster.pl;h=1eb8207806716033fbb16e9014b7e4fa9fd68d21;hb=9d2de4abba1085fd8f5e2d89d96d6f6af7d1b3b9;hp=8e88884214b0b3b239d003d31f2982cbb7b14265;hpb=b060a0a3ee72530aa3f10d453186a662b66d7efe;p=spider.git diff --git a/perl/cluster.pl b/perl/cluster.pl index 8e888842..1eb82078 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -27,6 +27,7 @@ use Msg; use DXVars; use DXDebug; use DXLog; +use DXLogPrint; use DXUtil; use DXChannel; use DXUser; @@ -47,8 +48,9 @@ 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.9; # the version no of the software +$starttime = 0; # the starting time of the cluster + # handle disconnections sub disconnect { @@ -83,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"); @@ -94,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); @@ -148,7 +155,7 @@ sub process_inqueue my $data = $self->{data}; my $dxchan = $self->{dxchan}; - my ($sort, $call, $line) = $data =~ /^(\w)(\w+)\|(.*)$/; + 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"); @@ -171,13 +178,23 @@ sub process_inqueue } } +sub uptime +{ + my $t = $systime - $starttime; + my $days = int $t / 86400; + $t -= $days * 86400; + my $hours = int $t / 3600; + $t -= $hours * 3600; + my $mins = int $t / 60; + return sprintf "%d %02d:%02d", $days, $hours, $mins; +} ############################################################# # # The start of the main line of code # ############################################################# -$systime = time; +$starttime = $systime = time; # open the debug file, set various FHs to be unbuffered foreach (@debug) {