Change DXUser->get* to DXUser::get*
[spider.git] / perl / create_sysop.pl
index 3b1196fee93b9205c3babed34d0ddeb2a9967187..c0ac9e3afc7d8557803a71fc146e65a72fc09349 100755 (executable)
 #
 # 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 delete_it
+{
+       DXUser->del_file($userfn);
+}
+
 sub create_it
 {
-  system("rm -f $userfn*");
-  DXUser->init($userfn);
-  my $self = DXUser->new($mycall);
-  $self->{alias} = $myalias;
-  $self->{name} = $myname;
-  $self->{qth} = $myqth;
-  $self->{qra} = $mylocator;
-  $self->{lat} = $mylatitude;
-  $self->{long} = $mylongtitude;
-  $self->{email} = $myemail;
-  $self->{bbsaddr} = $mybbsaddr;
-  $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;
+       my $ref = DXUser::get(uc $mycall);
+       $ref->del() if $ref;
+       
+       my $self = DXUser->new(uc $mycall);
+       $self->{alias} = uc $myalias;
+       $self->{name} = $myname;
+       $self->{qth} = $myqth;
+       $self->{qra} = uc $mylocator;
+       $self->{lat} = $mylatitude;
+       $self->{long} = $mylongitude;
+       $self->{email} = $myemail;
+       $self->{bbsaddr} = $mybbsaddr;
+       $self->{homenode} = uc $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();
+       # write it away
+       $self->close();
 
-  # now do one for the alias
-  $self = DXUser->new($myalias);
-  $self->{name} = $myname;
-  $self->{qth} = $myqth;
-  $self->{qra} = $mylocator;
-  $self->{lat} = $mylatitude;
-  $self->{long} = $mylongtitude;
-  $self->{email} = $myemail;
-  $self->{bbsaddr} = $mybbsaddr;
-  $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;
+       # now do one for the alias
+       $ref = DXUser::get(uc $myalias);
+       $ref->del() if $ref;
 
-  # write it away
-  $self->close();
+       $self = DXUser->new(uc $myalias);
+       $self->{name} = $myname;
+       $self->{qth} = $myqth;
+       $self->{qra} = uc $mylocator;
+       $self->{lat} = $mylatitude;
+       $self->{long} = $mylongitude;
+       $self->{email} = $myemail;
+       $self->{bbsaddr} = $mybbsaddr;
+       $self->{homenode} = uc $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';
+       $self->{group} = [qw(local #9000)];
+  
+       # write it away
+       $self->close();
 
-  DXUser->finish();
-  print "New user database created as $userfn\n";
 }
 
-if (-e "$userfn") {
-  print "This program will destroy your user database!!!!\n\nDo you wish to continue [y/N]: ";
-  $ans = <STDIN>;
-  create_it() if ($ans =~ /^[Yy]/);
+$lockfn = "$root/local/cluster.lck";       # 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::v3 = 1;
+
+if (-e "$userfn.v2" || -e "$userfn.v3") {
+       print "Do you wish to destroy your user database (THINK!!!) [y/N]: ";
+       $ans = <STDIN>;
+       if ($ans =~ /^[Yy]/) {
+               delete_it();
+               DXUser->init($userfn, 1);
+               create_it();
+       } else {
+               print "Do you wish to reset your cluster and sysop information? [y/N]: ";
+               $ans = <STDIN>;
+               if ($ans =~ /^[Yy]/) {
+                       DXUser->init($userfn, 1);
+                       create_it();
+               }
+       }
+  
 } else {
-  create_it();
+       DXUser->init($userfn, 1);
+       create_it();
 }
+DXUser->finish();
 exit(0);