#!/bin/csh -f

# $Header: /tmp_mnt/am/cm9/cm-stub/cparis/cmds/nqs/RCS/build-nqs-dbase,v 1.4 91/11/14 15:36:56 sharon Exp $
# This script builds the directories needed for the nqs database and
# daemon executable files.  It asks whether the user wishes to
# remove the current database first.  Be careful with this, it will
# wipe out all queue definitions and parameter settings.  But it is
# required if the database structures have changed between releases.
#
# This script requires the additional presence of the qmkdir script (from
# nqs/tools, or /cm/cparis/tools).
#
# This script takes an optional argument: in which directory to look
# for the qmkdir, nqsmkdirs, and nqsmktrans utilities.  Without this
# argument, the script uses NQS-LIB-DIR as provided by the cm file finder.
# The argument is useful when testing nqs (using this script independently,
# instead of calling it from the base-system installation script).

# NQS_SPOOL MUST be /usr/spool/nqs
set NQS_SPOOL = /usr/spool/nqs
# The nqsmkdirs and nqsmktrans programs set NQS_GROUP to 0 ("wheel" on sun,
# now "system" on vaxen as of ultrix 4.x), and NQS_OWNER to 0 ("root").  So
# don't change these definitions without changing these programs.  The
# programs could easily be modified to take owner and/or group as args, if
# need be.
#set NQS_OWNER = root
#set NQS_GROUP = wheel
set NQS_OWNER = 0
set NQS_GROUP = 0

set whoiam = `whoami`
if ($whoiam != "root") then
	echo 'Sorry, you must run as root to build the NQS database; su root and try again.'
	exit 1
endif

# read optional args
set util_dir = $1

# use file finder if no arg to tell us where to look for utilities.
if ("$util_dir" == "") then
	set util_dir = `cm-base-system-config NQS-LIB-DIR`
	if ("$util_dir" == "") then
		echo 'I don't know where to look for the nqsmkdirs and nqsmktrans utilities.'
		echo 'Either pass the directory to me as an argument, or'
		echo 'set NQS-LIB-DIR in cm-base-system-config, and rerun this script.'
		exit 1
	endif
endif

set qmkdir = $util_dir/qmkdir

# ask the user if s/he wants to wipe out the old database.
ask:
echo -n "Do you want to remove the old database [y/N]? "
set a = $<
if (("$a" == "Y") || ("$a" == "YES") || ("$a" == "Yes") || ("$a" == "y") || ("$a" == "yes")) set remove_old = 1
if (("$a" == "N") || ("$a" == "NO") || ("$a" == "No") || ("$a" == "n") || ("$a" == "no")) set remove_old = 0
if (! $?remove_old) then
	echo 'Sorry, I didn't understand your answer.  Try again please.'
	goto ask
endif
if ($remove_old == 1) then
	echo 'Removing any previous database...'
	rm -rf $NQS_SPOOL/*
endif

echo 'Building database...'

$qmkdir $NQS_SPOOL
chmod 711 $NQS_SPOOL/.
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/.
$qmkdir $NQS_SPOOL/new
chmod 700 $NQS_SPOOL/new
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/new
$qmkdir $NQS_SPOOL/new/requests
chmod 777 $NQS_SPOOL/new/requests
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/new/requests
$qmkdir $NQS_SPOOL/private
chmod 700 $NQS_SPOOL/private
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/private
$qmkdir $NQS_SPOOL/private/root
chmod 777 $NQS_SPOOL/private/root
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/private/root
$qmkdir $NQS_SPOOL/private/root/control
chmod 777 $NQS_SPOOL/private/root/control
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/private/root/control
$qmkdir $NQS_SPOOL/private/root/data
chmod 777 $NQS_SPOOL/private/root/data
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/private/root/data
$qmkdir $NQS_SPOOL/private/root/database
chmod 777 $NQS_SPOOL/private/root/database
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/private/root/database
$qmkdir $NQS_SPOOL/private/root/database_qa
chmod 777 $NQS_SPOOL/private/root/database_qa
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/private/root/database_qa
$qmkdir $NQS_SPOOL/private/root/database_qo
chmod 777 $NQS_SPOOL/private/root/database_qo
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/private/root/database_qo
$qmkdir $NQS_SPOOL/private/root/failed
chmod 777 $NQS_SPOOL/private/root/failed
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/private/root/failed
$qmkdir $NQS_SPOOL/private/root/interproc
chmod 777 $NQS_SPOOL/private/root/interproc
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/private/root/interproc
$qmkdir $NQS_SPOOL/private/root/output
chmod 777 $NQS_SPOOL/private/root/output
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/private/root/output
$qmkdir $NQS_SPOOL/private/root/transact
chmod 777 $NQS_SPOOL/private/root/transact
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/private/root/transact
$qmkdir $NQS_SPOOL/scripts
chmod 711 $NQS_SPOOL/scripts
/etc/chown $NQS_OWNER.$NQS_GROUP $NQS_SPOOL/scripts

$qmkdir /etc/nmap
/etc/chown root.$NQS_GROUP /etc/nmap
chmod 755 /etc/nmap

# Run NQS utilities to build the rest.
#
# Construct the requisite subdirectories for the control, data,
# output, and transaction parent directories (that were created above).
#
$util_dir/nqsmkdirs
#
# Construct all of the transaction descriptors.
#
$util_dir/nqsmktrans

# Finito.
echo 'Finished building NQS database.'
exit 0

