X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fcreate_sysop.pl;h=7cc0335fb03bf694219f0cce76ee879cd5c90dd1;hb=refs%2Fheads%2Fnewusers;hp=1e553209d9045dacc65d7b2712cc0e83e2182428;hpb=3f145290a93b39bf15b50269dd8be585d7b4bc9c;p=spider.git diff --git a/perl/create_sysop.pl b/perl/create_sysop.pl index 1e553209..7cc0335f 100755 --- a/perl/create_sysop.pl +++ b/perl/create_sysop.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/env perl # # create a NEW user database and the sysop record # @@ -6,72 +6,112 @@ # # 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'}; + # root of directory tree for this system + $root = "/spider"; + $root = $ENV{'DXSPIDER_ROOT'} if $ENV{'DXSPIDER_ROOT'}; - unshift @INC, "$root/perl"; # this IS the right way round! - unshift @INC, "$root/local"; + unshift @INC, "$root/perl"; # this IS the right way round! + unshift @INC, "$root/local"; } use DXVars; +use SysVar; use DXUser; +use DXUtil; + +sub delete_it +{ + DXUser::del_file(); +} 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->put(); - # 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->put(); - 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 = ; - create_it() if ($ans =~ /^[Yy]/); +die "\$myalias \& \$mycall are the same ($mycall)!, they must be different (hint: make \$mycall = '${mycall}-2';).\n" if $mycall eq $myalias; + +$lockfn = "$main::local_data/cluster.lck"; # lock file name (now in local data) +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::v4 = 1; + +if (-e localdata("users.v4")) { + print "Do you wish to destroy your user database (THINK!!!) [y/N]: "; + $ans = ; + if ($ans =~ /^[Yy]/) { + delete_it(); + DXUser::init(4); + create_it(); + } else { + print "Do you wish to reset your cluster and sysop information? [y/N]: "; + $ans = ; + if ($ans =~ /^[Yy]/) { + DXUser::init(4); + create_it(); + } + } + } else { - create_it(); + DXUser::init(4); + create_it(); } +DXUser::finish(); exit(0);