added update_sysop.pl to clean out multiple versions of cluster calls
authordjk <djk>
Sat, 17 Jun 2000 22:10:21 +0000 (22:10 +0000)
committerdjk <djk>
Sat, 17 Jun 2000 22:10:21 +0000 (22:10 +0000)
Changes
perl/update_sysop.pl [new file with mode: 0755]

diff --git a/Changes b/Changes
index 76380d4ef30945508d3c56949e89254332ae9860..795bc107d17dc022cde6b2fccfa2fad51bfcb2e1 100644 (file)
--- 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 (executable)
index 0000000..a4450ca
--- /dev/null
@@ -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 = <CLLOCK>;
+       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);
+