X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fcluster.pl;h=d82dd2e73bbd8d67aa68538a39dd19e49f6ae00e;hb=7b8a8931b9fe531868777d5168b9a35baf37f0d9;hp=fc530e21c1db11b12f554ab43514f33a8e1f01fa;hpb=16b98fc9cae1d4fb357aad17850a2aa1a601b053;p=spider.git diff --git a/perl/cluster.pl b/perl/cluster.pl index fc530e21..d82dd2e7 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -10,6 +10,8 @@ # # +package main; + require 5.10.1; use warnings; @@ -29,18 +31,22 @@ BEGIN { die "$root/local doesn't exist, please RTFM" unless -d "$root/local"; die "$root/local/DXVars.pm doesn't exist, please RTFM" unless -e "$root/local/DXVars.pm"; - mkdir "$root/local_cmd", 0777 unless -d "$root/local_cmd"; - + # create some directories + mkdir "$root/local_cmd", 02777 unless -d "$root/local_cmd"; + mkdir "$root/local_data", 02777 unless -d "$root/local_data"; # try to create and lock a lockfile (this isn't atomic but # should do for now - $lockfn = "$root/local/cluster.lck"; # lock file name + $lockfn = "$root/local_data/cluster.lck"; # lock file name if (-w $lockfn) { open(CLLOCK, "$lockfn") or die "Can't open Lockfile ($lockfn) $!"; my $pid = ; if ($pid) { chomp $pid; - die "Lockfile ($lockfn) and process $pid exist, another cluster running?" if kill 0, $pid; + if (kill 0, $pid) { + warn "Lockfile ($lockfn) and process $pid exist, another cluster running?\n"; + exit 1; + } } unlink $lockfn; close CLLOCK; @@ -53,9 +59,12 @@ BEGIN { $systime = time; } + use Mojo::IOLoop; use DXVars; +use SysVar; + use Msg; use IntMsg; use Internet; @@ -148,7 +157,6 @@ our $ending; # signal that we are ending; our $broadcast_debug; # allow broadcasting of debug info down "enhanced" user connections - # send a message to call on conn and disconnect sub already_conn { @@ -439,6 +447,7 @@ sub setup_start } STDOUT->autoflush(1); + # try to load the database if (DXSql::init($dsn)) { $dbh = DXSql->new($dsn); @@ -495,7 +504,7 @@ sub setup_start # initialise User file system dbg("loading user file system ..."); - DXUser->init($userfn, 1); + DXUser::init(1); # look for the sysop and the alias user and complain if they aren't there {