#!/usr/local/sysmansw/runtime/perl/bin/perl -w

#
## -_- $Name: Uptimetrics-1_4b $ % $Id: umadmin,v 1.8 2001/01/29 18:29:33 sietse Exp $
#

my $UMDIR;
$UMDIR = $ENV{'UMDIR'};
$UMDIR = $ENV{'HOME'} . "/uptimetrics" if not defined($UMDIR);

##########################################################################
# Main
##########################################################################

my $license = 0;
my $start = 0;

if (scalar(@ARGV))
{
    if    ($ARGV[0] eq "-license")   { $license = 1; }
    elsif ($ARGV[0] eq "-s")         { $start = 1; }
    else  { die "Unknown option $ARGV[0]\n"; }
}

# Check for upgrade or fresh installation
if (! -d "$UMDIR/data")
{
    # Fresh installation
    rename("$UMDIR/.data.new", "$UMDIR/data");
}

if (-d "$UMDIR/.data.new")
{
    # Upgrade
    system("cp $UMDIR/.data.new/checks/umclient.ksh $UMDIR/data/checks");
    system("cp $UMDIR/.data.new/checks/umclient.ksh $UMDIR");
    system("rm -r $UMDIR/.data.new");
    my @dirs = split /\s+/, `echo $UMDIR/data/services/*`;
    chomp @dirs;
    foreach my $dir (@dirs)
    {
        mkdir("$dir/reasons", 0755) if -d $dir && $dir ne "CVS";
    }
}

if ($license)
{
    my $lic = $ARGV[1]; $lic = "" if not $lic;
    my $ret = system("$UMDIR/umstart -s $lic") >> 8;
    exit $ret
}

# Check license
my $ret = system("$UMDIR/umstart -c") >> 8;
exit $ret if $ret == 1;  # Problems with IP address
if ($ret)
{
    print "Enter license number: ";
    chomp(my $lic = <STDIN>);
    $ret = system("$UMDIR/umstart -s $lic") >> 8;
    exit $ret if $ret;
}

if ($start)
{
    my $services_file = "$UMDIR/data/services/services";
    my ($srv_id, $descr, $client, $check, $params) = (@ARGV)[1 .. 5];

    open SRVS, ">>$services_file" or die "Cannot open $services_file: $!\n";
    print SRVS "$srv_id:$descr\n";
    close SRVS;
    mkdir("$UMDIR/data/services/$srv_id", 0755)
         or die "Cannot mkdir $UMDIR/data/services/$srv_id: $!\n";
    mkdir("$UMDIR/data/services/$srv_id/daily", 0755)
         or die "Cannot mkdir $UMDIR/data/services/$srv_id/daily: $!\n";
    mkdir("$UMDIR/data/services/$srv_id/weekly", 0755)
         or die "Cannot mkdir $UMDIR/data/services/$srv_id/weekly: $!\n";
    mkdir("$UMDIR/data/services/$srv_id/monthly", 0755)
         or die "Cannot mkdir $UMDIR/data/services/$srv_id/monthly: $!\n";
    mkdir("$UMDIR/data/services/$srv_id/reasons", 0755)
         or die "Cannot mkdir $UMDIR/data/services/$srv_id/reasons: $!\n";
    mkdir("$UMDIR/data/clients/$client", 0755);
    open CHK, ">$UMDIR/data/services/$srv_id/check"
         or die "Cannot open $UMDIR/data/services/$srv_id/check: $!\n";
    print CHK "$client:$check:$params\n";
    close CHK;
    open SCHED, ">$UMDIR/data/services/$srv_id/schedule"
         or die "Cannot open $UMDIR/data/services/$srv_id/schedule: $!\n";
    print SCHED "s:u:-:-:-:-:0,1,2,3,4,5,6\n";
    close SCHED;
    system("cp $UMDIR/data/checks/umclient.ksh $UMDIR");
    system("$UMDIR/distribute.pl $srv_id");
}
