From: djk Date: Sat, 17 Jun 2000 22:10:21 +0000 (+0000) Subject: added update_sysop.pl to clean out multiple versions of cluster calls X-Git-Tag: R_1_42~11 X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=6f26002566385d5b50a441f30cc779ee20a67de9;p=spider.git added update_sysop.pl to clean out multiple versions of cluster calls --- diff --git a/Changes b/Changes index 76380d4e..795bc107 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,8 @@ 17Jun00======================================================================= 1. I believe I have fixed all the login/logout 'broken pipe' errors 2. Added G0RDI's 'links' command. +3. added update_sysop.pl which cleans out all previous versions of the sysops +information from the user database and recreates it with that in DXVars.pm 14Jun00======================================================================= 1. fixed sh/node crash 2. fixed RTT in who.pl diff --git a/perl/update_sysop.pl b/perl/update_sysop.pl new file mode 100755 index 00000000..a4450cae --- /dev/null +++ b/perl/update_sysop.pl @@ -0,0 +1,99 @@ +#!/usr/bin/perl +# +# remove all records with the sysop/cluster callsign and recreate +# it from the information contained in DXVars +# +# WARNING - this must be run when the cluster.pl is down! +# +# This WILL NOT delete an old sysop call if you are simply +# changing the callsign. +# +# Copyright (c) 1998 Dirk Koopman G1TLH +# +# $Id$ +# + +# make sure that modules are searched in the order local then perl +BEGIN { + # root of directory tree for this system + $root = "/spider"; + $root = $ENV{'DXSPIDER_ROOT'} if $ENV{'DXSPIDER_ROOT'}; + + unshift @INC, "$root/local"; +} + +use DXVars; +use DXUser; + +sub create_it +{ + my $ref; + + while ($ref = DXUser->get($mycall)) { + print "old call $mycall deleted\n"; + $ref->del(); + } + + my $self = DXUser->new($mycall); + $self->{alias} = $myalias; + $self->{name} = $myname; + $self->{qth} = $myqth; + $self->{qra} = $mylocator; + $self->{lat} = $mylatitude; + $self->{long} = $mylongitude; + $self->{email} = $myemail; + $self->{bbsaddr} = $mybbsaddr; + $self->{homenode} = $mycall; + $self->{sort} = 'S'; # C - Console user, S - Spider cluster, A - AK1A, U - User, B - BBS + $self->{priv} = 9; # 0 - 9 - with 9 being the highest + $self->{lastin} = 0; + $self->{dxok} = 1; + $self->{annok} = 1; + + # write it away + $self->close(); + print "new call $mycall added\n"; + + # now do one for the alias + while ($ref = DXUser->get($myalias)) { + print "old call $mycall deleted\n"; + $ref->del(); + } + + $self = DXUser->new($myalias); + $self->{name} = $myname; + $self->{qth} = $myqth; + $self->{qra} = $mylocator; + $self->{lat} = $mylatitude; + $self->{long} = $mylongitude; + $self->{email} = $myemail; + $self->{bbsaddr} = $mybbsaddr; + $self->{homenode} = $mycall; + $self->{sort} = 'U'; # C - Console user, S - Spider cluster, A - AK1A, U - User, B - BBS + $self->{priv} = 9; # 0 - 9 - with 9 being the highest + $self->{lastin} = 0; + $self->{dxok} = 1; + $self->{annok} = 1; + $self->{lang} = 'en'; + + # write it away + $self->close(); + print "new call $mycall added\n"; + +} + +$lockfn = "$root/perl/cluster.lock"; # lock file name +if (-e $lockfn) { + open(CLLOCK, "$lockfn") or die "Can't open Lockfile ($lockfn) $!"; + my $pid = ; + chomp $pid; + die "Sorry, Lockfile ($lockfn) and process $pid exist, a cluster is running\n" if kill 0, $pid; + close CLLOCK; +} + +DXUser->init($userfn, 1); +create_it(); +DXUser->finish(); +print "Update of $myalias on cluster $mycall successful\n"; +exit(0); +