
#----------------------------------------------------------------------------#
#		  Tunable parameters -- alter for your site		     #
#
#	$Revision::   1.0                                              $
#	    $Date::   Tue Apr 24 15:33:30 2007                         $
#
#----------------------------------------------------------------------------#

Owner=0 				# owner of all system files/directories
Group=0					# group of all files/directories

s_ufmode=0660    o_ufmode=0664		# secured/open user file modes
s_udmode=0770    o_udmode=0777		# secured/open Saves directory modes

s_dbfmode=0660   o_dbfmode=0664		# secured/open db file modes
s_dbdmode=0770   o_dbdmode=0777		# secured/open db directory modes

s_mnsmode=0440   o_mnsmode=0444		# secured/open MNS Menu file modes

s_tabmode=0660   o_tabmode=0664		# secured/open config table modes

s_csdmode=0771   o_csdmode=0777		# secured/open Config/Saves directory
s_cfdmode=0771   o_cfdmode=0777		# secured/open Config/Files directory
w_dirmode=0777				# mode for Work dir (* ALWAYS OPEN *)
b_dirmode=0755				# mode for Bin and Filters dirs

libmode=0444				# mode for HLI Libraries
fltrmode=0554				# mode for files in Filters directory

s_othmode=0660   o_othmode=0666		# secured/open mode for all other files
s_dirmode=0770   o_dirmode=0777		# secured/open mode for all other dirs

# Executable modes do not change between secured/open system

x_pub_mode=2551				# public "startup" programs
x_prv_mode=0550				# private "subprocess" programs
x_cmd_mode=0555				# command procedures
na_exe_mode=0555			# NetAns2 .exe files
sh_obj_mode=0555			# Share objects and libs (.so .sl)

UID_Owner=0				# owner of u+s programs
x_uid_mode=4550				# private u+s "root" programs
x_que_mode=6551				# public u+s "queue" programs

#----------------------------------------------------------------------------#
#                       End of user-tunable parameters                       #
#----------------------------------------------------------------------------#

Secured=Dunno				# mode not yet selected
Area=All				# default is all located directories

Serial="NO"				# type of engine being installed

#----------------------------------------------------------------------------#
#                       Get ROOT dir to determine engine type                #
#----------------------------------------------------------------------------#
 
if [ "${BRSConfig}" = "" ] ; then
 	BRSConfig=/usr/lib/brssearch		# meta-config table default
 	fi
 
if [ ! -w ${BRSConfig} ] ; then			# a quick authorization check
 	echo "Sorry.  You must have WRITE access to the meta-configuration"
 	echo "        table (${BRSConfig}) to run this procedure."
 
 	exit 1
 	fi
 
Root=`grep "^ROOT=" ${BRSConfig}`		# get root from table
Root=`expr "${Root}" : 'ROOT=\(.*\)/'`		# extract path

if [ "${Root}" = "" -o ! -d "${Root}" ] ; then
 	echo "Unable to find root directory (${Root})."
 	echo "Check your meta-configuration table, then rerun this procedure."
 	exit 1
 	fi
 
echo "Enter 'Y' to confirm that your BRS/Search ROOT is \"${Root}\":"
read yes
if [ "${yes}" != "y" -a "${yes}" != "Y" ] ; then
 	echo "    Please check the contents of the file ${BRSConfig}"
 	echo "    When you are sure that it is correct, rerun this procedure."
 	echo " "
 	exit 1
 	fi
 
echo " "


# Check to see if Owner and Group have been set up.

if [ "${Owner}" = "" -a "${Group}" = "" ] ; then
 	echo "You must update the variables Owner and Group at the"
 	echo "beginning of this shell script with the user name"
	echo "and group setting of the userid used during this install."
	echo "For example: Owner=brsadm  Group=brs"
	echo "Once the changes have been made to this shell script,"
	echo "then re-run this procedure."
 	exit 1
 	fi

# We have a serial engine if SerialEngineSvr is present
 
if [ -f ${Root}/Bin/SerialEngineSvr ] ; then
 	Serial="YES"
 	fi
 
if [ $# -gt 0 ] ; then
	case "$1" in
	    open)	   Secured=No  ;;
	    secure|closed) Secured=Yes ;;
	    esac
	fi

if [ $# = 2 -a "${Serial}" = "YES" ] ; then
	case "$2" in
	    bin|BIN|Bin)	Area=Bin ;;
	    con*|CON*|Con*)	Area=Config ;;
	    dat*|DAT*|Dat*)	Area=Databases ;;
	    lib*|LIB*|Lib*)	Area=Libs ;;
	    lin*|LIN*|Lin*)	Area=Link ;;
	    ma*|MA*|Ma*)	Area=Mail ;;
	    men*|MEN*|Men*)	Area=Menus ;;
 	    nl*|NL*|Nl*)	Area=NLOL ;;
  	    netansw*|NETANSW*|NetAnsw*)	Area=NetAnswer ;;
  	    netans2*|NETANS2*|NetAns2*)	Area=NetAns2 ;;
	    off*|OFF*|Off*)	Area=Offline ;;
	    th*|TH*|Th*)	Area=Thesaurus ;;
	    wo*|WO*|Wo*)	Area=Work ;;
 	    lo*|LO*|Lo*)	Area=Logs ;;
 	    hi*|HI*|Hi*)	Area=Histories ;;
 	    sp*|SP*|Sp*)	Area=Spider ;;
 	    to*|TO*|To*)	Area=Tomcat ;;
	    *) echo '
Sorry, unrecognized area specified.  If you wish to secure only a
       specific area, you must choose from the following choices:

  	BIN		LIBS		MENUS		OFFLINE
  	CONFIG		LINK		NLOL		SPIDER
  	DATABASES	LOGS		NetAnswer	THESAURUS
  	HISTORIES	MAIL		NetAns2		Tomcat
							WORK'
 		exit 41 ;;			# PARMPROB exit value
 	    esac
 
elif [ $# = 2 -a "${Serial}" = "NO" ] ; then
 	case "$2" in
 	    bin|BIN|Bin)	Area=Bin ;;
 	    con*|CON*|Con*)	Area=Config ;;
 	    dat*|DAT*|Dat*)	Area=Databases ;;
 	    lib*|LIB*|Lib*)	Area=Libs ;;
 	    lin*|LIN*|Lin*)	Area=Link ;;
 	    ma*|MA*|Ma*)	Area=Mail ;;
 	    men*|MEN*|Men*)	Area=Menus ;;
 	    nl*|NL*|Nl*)	Area=NLOL ;;
  	    netansw*|NETANSW*|NetAnsw*)	Area=NetAnswer ;;
  	    netans2*|NETANS2*|NetAns2*)	Area=NetAns2 ;;
 	    off*|OFF*|Off*)	Area=Offline ;;
 	    th*|TH*|Th*)	Area=Thesaurus ;;
 	    wo*|WO*|Wo*)	Area=Work ;;
 	    sp*|SP*|Sp*)	Area=Spider ;;
 	    to*|TO*|To*)	Area=Tomcat ;;
 	    *) echo '
Sorry, unrecognized area specified.  If you wish to secure only a
        specific area, you must choose from the following choices:
 
 	BIN		LINK		NetAns2		THESAURUS
 	CONFIG		MAIL		NLOL		Tomcat
 	DATABASES	MENUS		OFFLINE		WORK
 	LIBS		NetAnswer	SPIDER'
		exit 41 ;;			# PARMPROB exit value
	    esac
	fi

if [ $# -gt 2 -o "${Secured}" = "Dunno" ] ; then
	echo '
The BRSPROTS Procedure -
     Command to adjust file/directory/program permissions.

COMMAND FORMAT:
	brsprots {  open  }  [AREANAME]
		 { secure }
'
echo 'DESCRIPTION:
	This procedure adjusts the protections on files, directories and
	programs  associated   with   Livelink   Discovery  Server.  The 
	adjustments should be tailored to your sites needs  by  manually
	editing a copy of  this procedure.  This procedure only  affects
	files under the default hierarchy of directories as  shipped  by 
	OpenText. As shipped, the user has the option of an  "open" or a        
	"secure" system.  The default owner of  all  Livelink  Discovery
	server files/directories is  "root",  and the  default  group is 
	"120".

        The  optional  argument  AREANAME  can  be  used to restrict the
        adjustments  to  only   one   of   the   following   groups   of
        files/directories: '
 	
 	if [ "${Serial}" = "YES" ] ; then
 		echo '
  	 	BIN		LIBS		MENUS		OFFLINE
  		CONFIG		LINK		NLOL		SPIDER
  		DATABASES	LOGS		NetAnswer	THESAURUS
 	 	HISTORIES	MAIL		NetAns2		Tomcat
								WORK'
 	else 
 		echo '
 		BIN		LINK		NetAns2		THESAURUS
 		CONFIG		MAIL		NLOL		Tomcat
 		DATABASES	MENUS		OFFLINE		WORK
 		LIBS		NetAnswer	SPIDER'
		
		fi
	exit 0
	fi

#----------------------------------------------------------------------------#
#		  	Setup stuff for current system			     #
#----------------------------------------------------------------------------#

if [ "${BRSConfig}" = "" ] ; then
# establish file/directory modes to be used
	BRSConfig=/usr/lib/brssearch		# meta-config table default
	fi


if [ ${Secured} = Yes ] ; then				# secured modes
	ufmode=${s_ufmode}     udmode=${s_udmode}
	dbfmode=${s_dbfmode}   dbdmode=${s_dbdmode}
	mnsmode=${s_mnsmode}   tabmode=${s_tabmode}
	othmode=${s_othmode}   dirmode=${s_dirmode}
 	csdmode=${s_csdmode}   cfdmode=${s_cfdmode}
else							# open system
	ufmode=${o_ufmode}     udmode=${o_udmode}
	dbfmode=${o_dbfmode}   dbdmode=${o_dbdmode}
	mnsmode=${o_mnsmode}   tabmode=${o_tabmode}
	othmode=${o_othmode}   dirmode=${o_dirmode}
 	csdmode=${o_csdmode}   cfdmode=${o_cfdmode} 
	fi

NewMode="chmod"				# command to change file permissions
NewOwner="chown ${Owner}"		# command to change file ownership
NewGroup="chgrp ${Group}"		# command to change file group

if [ ${Area} = "All" ] ; then
	${NewOwner} ${Root} ; ${NewGroup} ${Root}	# adjust root directory
	fi

#-----------------------------------------------------------------------#
#	      			Bin Area				#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "Bin" ] ; then
	echo "brsprots: ${Root}/Bin directory not selected -- skipping"
elif [ ! -d ${Root}/Bin ] ; then
	echo "brsprots: ${Root}/Bin directory not found -- skipping"
else
	cd ${Root}/Bin
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} brs* buq* mt* *filtr ibt* int* mine* dw* .	# reset owner
	${NewGroup} brs* buq* mt* *filtr ibt* int* mine* dw* .	# reset group
	
	${NewOwner} *prof* *import cat* tax* dsta* llc* .	# reset owner
	${NewGroup} *prof* *import cat* tax* dsta* llc* .	# reset group
	
	${NewMode} ${b_dirmode} .		# reset directory mode
	${NewMode} ${x_pub_mode} brs* buq* *filtr ibt* int*  # default mode for everything
	${NewMode} ${x_pub_mode} mine* dw* *prof* *import cat*  # default mode for everything
	${NewMode} ${x_pub_mode} tax* dsta* llc*   # default mode for everything

 	if [ "${Serial}" = "YES" ] ; then
 		# add new programs, shared libraries, and config files
 		${NewOwner} *.ini *.conf *.sl Appl* Start* *Svr *_Service *Admin # reset owner
 		${NewGroup} *.ini *.conf *.sl Appl* Start* *Svr *_Service *Admin # reset group
 		${NewMode} ${sh_obj_mode} *.sl		# reset shared library mode
 		${NewMode} ${x_pub_mode} *Svr *_Service *Client *Admin # reset new exes
 		${NewMode} ${tabmode} *.ini *.conf 		# reset ini files 
 		fi
 
	for fn in brsutil buqsig	# private u+s programs
	do
		if [ -r ${fn} ] ; then
			chown ${UID_Owner} ${fn}
			${NewMode} ${x_uid_mode} ${fn}
			fi
		done

	for fn in buqup				# special queue programs
	do
		if [ -r ${fn} ] ; then
			chown ${UID_Owner} ${fn}
			${NewMode} ${x_que_mode} ${fn}
			fi
		done

	while read fn				# command procedures
	do
		if [ -r ${fn} ] ; then
			${NewMode} ${x_cmd_mode} ${fn}
			fi
		done  << End_of_list
brs
brsbuq
brsconfig
brsdbcomp
brsmaint
brsmate
brsmkhist
brsprots
brsqdown
brsqstat
brsqueue
brsqup
End_of_list

	if [ "${Serial}" = "YES" ] ; then
 		while read fn				# command procedures
 		do
 			if [ -r ${fn} ] ; then
 				${NewMode} ${x_cmd_mode} ${fn}
 				fi
 			done  << End_of_list2
StartNamingService
StartApplSvr
ApplMgrClientStart
ApplMgrClientShutdown
ApplMgrClientStatus
ApplMgrClientStop
End_of_list2
		fi
 
	while read fn				# private (subprocess) programs
	do
		if [ -r ${fn} ] ; then
			${NewMode} ${x_prv_mode} ${fn}
			fi
		done << End_of_list
brscstat
brsctrl
brsdir
brserver
mtserver
brsexec
brsldlim
brsmgdct
brsmgtxt
brstxbld
brsupdmd
buqbat
buqman
buqprt
buqrun
taxsuggest
dstax2llclas
llclas2dstax
End_of_list

	if [ "${Serial}" = "YES" ] ; then
 		while read fn				# private (subprocess) programs
 		do
 			if [ -r ${fn} ] ; then
 				${NewMode} ${x_prv_mode} ${fn}
 				fi
 			done << End_of_list2
SerialEngineSvr
SearchBrokerSvr
BrokerAdmin
End_of_list2
		fi
	fi					# end of Bin settings

#-----------------------------------------------------------------------#
#			     Config Area				#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "Config" ] ; then
	echo "brsprots: ${Root}/Config directory not selected -- skipping"
elif [ ! -d ${Root}/Config ] ; then
	echo "brsprots: ${Root}/Config directory not found -- skipping"
else
	cd ${Root}/Config
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} .				# force owner of dir
	${NewGroup} .				#    and group
 	${NewMode} ${csdmode} .			#      and permissions

	for dir in *
	do
	    case ${dir} in

 		Account)			# contain user files
			cd ${Root}/Config/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} .		# force owner of dir
			${NewGroup} .		#    and group
			${NewMode} ${dirmode} .	#      and permissions

			${NewGroup} *		# change group, not owner
			${NewMode} ${ufmode} *	# set permissions
			;;
		
		Catsets)			# Category set files
			cd ${Root}/Config/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} . 		# force owner of dir
			${NewGroup} . 		#    and group
			${NewMode} ${dirmode} .	#      and permissions

			# set group, not owner
			${NewGroup} *.*

			# set permissions
			${NewMode} ${tabmode} *.*

			cd ${Root}/Config/${dir}/Common
			echo "	      setting ${dir}/Common subdirectory ..."

			${NewOwner} . 		# force owner of dir
			${NewGroup} . 		#    and group
			${NewMode} ${dirmode} .	#      and permissions
			;;

		Databases|Printers|Thesaurus|Users)
						# contain config tables only
			cd ${Root}/Config/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} . 		# force owner of dir
			${NewGroup} . 		#    and group
			${NewMode} ${dirmode} .	#      and permissions

			${NewGroup} *.tbl 	# set group, not owner
			# set permissions
			${NewMode} ${tabmode} *.tbl
			;;
		
		Tables)
			cd ${Root}/Config/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} . 		# force owner of dir
			${NewGroup} . 		#    and group
			${NewMode} ${dirmode} .	#      and permissions

			# set group, not owner
			${NewGroup} *.tbl *.brs *NAMES *FILE *STOP *.dat

			# set permissions
			${NewMode} ${tabmode} *.tbl *.brs *NAMES *FILE *STOP *.dat
			;;
		
		Terminals)
			cd ${Root}/Config/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} . 		# force owner of dir
			${NewGroup} . 		#    and group
			${NewMode} ${dirmode} .	#      and permissions

			# set group, not owner
			${NewGroup} *.tbl *.trt 
			# set permissions
 			${NewMode} ${tabmode} *.tbl *.trt 
			;;

		Languages)			# contains config tbls+charset
			cd ${Root}/Config/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} .		   # force group of dir/files
			${NewGroup} . 		   #    and group
			${NewMode} ${dirmode} .	   #      and dir permissions

			${NewGroup} *	 		# set group, not owner
			${NewMode} ${tabmode} *		# set permissions
			;;

		Offline|Queue)			# contains a hodge-podge
			cd ${Root}/Config/${dir}
			echo "	      setting ${dir} subdirectory ..."

						   # force owner of dir/files
			${NewOwner} . *.que *.tbl 2>/dev/null
			${NewGroup} . *		   #    and group
			${NewMode} ${dirmode} .	   #      and dir permissions

			${NewMode} ${othmode} *		# set permissions
			${NewMode} ${tabmode} *.tbl 2>/dev/null
 			;;
 
 		Files)				# contains user dir and files
 			cd ${Root}/Config/${dir}
 			echo "	      setting ${dir} subdirectory ..."
 
 			${NewOwner} .              # force group of dir/files
 			${NewGroup} . *		   #    and group
 			${NewMode} ${cfdmode} .	   #      and dir permissions
 
 			for area in *
 			do
 				if [ ! -d ${area} ] ; then
 					echo "	    Unknown file/directory:" `pwd`/${area}
 					continue
 					fi
 				
 				echo "	      ${area} files area ..."
 
 				cd ${area}		# set whole save area
 				${NewGroup} . *         2>/dev/null
 				${NewMode} ${udmode} .
 				${NewMode} ${ufmode} *  2>/dev/null
 				cd ..
 				done
			;;

		Saves)				# contains saves/ptfs/rds
			cd ${Root}/Config/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} .              # force group of dir/files
			${NewGroup} . *		   #    and group
			${NewMode} ${csdmode} .	   #      and dir permissions

			for area in *
			do
				if [ ! -d ${area} ] ; then
					echo "	    Unknown file/directory:" `pwd`/${area}
					continue
					fi
				
				echo "	      ${area} save area ..."

				cd ${area}		# set whole save area
				${NewGroup} . *         2>/dev/null
				${NewMode} ${udmode} .
				${NewMode} ${ufmode} *  2>/dev/null
				cd ..
				done
			;;

		*)				# not recognized
			echo "	  Unknown file/directory:" ${Root}/Config/${dir}
			;;
		esac
	    done
	fi					# end of Config settings

#-----------------------------------------------------------------------#
#			    Databases Area				#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "Databases" ] ; then
	echo "brsprots: ${Root}/Databases directory not selected -- skipping"
elif [ ! -d ${Root}/Databases ] ; then
	echo "brsprots: ${Root}/Databases directory not found -- skipping"
else
	cd ${Root}/Databases
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} .				# force owner of dir
	${NewGroup} .				#    and group
	${NewMode} ${dbdmode} .			#      and permissions

	for dir in *
	do
		if [ ! -d ${dir} ] ; then
			echo "	    Unknown file/directory:" `pwd`/${dir}
			continue
			fi

		echo "	      setting ${dir} subdirectory ..."

		${NewGroup} ${dir} ${dir}/*.db ${dir}/WORDWORK   2>/dev/null
		${NewMode} ${dbdmode} ${dir}
		${NewMode} ${dbfmode} ${dir}/*.db 2>/dev/null
		${NewMode} ${dirmode} ${dir}/WORDWORK 2>/dev/null

		done
	fi					# end of Databases settings


if [ "${Serial}" = "YES" ] ; then 
 
#-----------------------------------------------------------------------#
#			       Histories Area				#
#-----------------------------------------------------------------------#
 
 	if [ ${Area} != "All" -a ${Area} != "Histories" ] ; then
 		echo "brsprots: ${Root}/Histories directory not selected -- skipping"
 	elif [ ! -d ${Root}/Histories ] ; then
 		echo "brsprots: ${Root}/Histories directory not found -- skipping"
 	else
 		cd ${Root}/Histories
 		echo "brsprots: Setting" `pwd` "directory ..."
 
 		${NewOwner} .				# force owner of dir
 		${NewGroup} .				#    and group
 		${NewMode} ${dirmode} .			#      and permissions
 
 		${NewGroup} *				# change group, not owner
 		${NewMode} ${ufmode} *			# set permissions
 
 		fi					# end of Histories Area settings
 	fi
 
#-----------------------------------------------------------------------#
#			    Libs Area					#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "Libs" ] ; then
	echo "brsprots: ${Root}/Libs directory not selected -- skipping"
elif [ ! -d ${Root}/Libs ] ; then
	echo "brsprots: ${Root}/Libs directory not found -- skipping"
else
	cd ${Root}/Libs
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} .				# force owner of dir
	${NewGroup} . *				#    and group
	${NewMode} ${dirmode} .			#      and permissions
	${NewMode} ${libmode} *.a		#      and permissions
	${NewMode} ${othmode} *.c		#      and permissions
	${NewMode} ${othmode} *.h		#      

	fi					# end of Libs settings

#-----------------------------------------------------------------------#
#			    Link Area					#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "Link" ] ; then
	echo "brsprots: ${Root}/Link directory not selected -- skipping"
elif [ ! -d ${Root}/Link ] ; then
	echo "brsprots: ${Root}/Link directory not found -- skipping"
else
	cd ${Root}/Link
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} .				# force owner of dir
	${NewGroup} .				#    and group
	${NewMode} ${dbdmode} .			#      and permissions

	for dir in *
	do
		if [ ! -d ${dir} ] ; then
			echo "	    Unknown file/directory:" `pwd`/${dir}
			continue
			fi

		echo "	      setting ${dir} subdirectory ..."

		${NewGroup} ${dir} ${dir}/*.lnk    2>/dev/null
		${NewMode} ${dbdmode} ${dir}
		${NewMode} ${ufmode} ${dir}/*.lnk 2>/dev/null
		${NewMode} ${dbfmode} ${dir}/common.lnk 2>/dev/null

		done
	fi					# end of Link settings

if [ "${Serial}" = "YES" ] ; then
 
#-----------------------------------------------------------------------#
#			       Logs Area				#
#-----------------------------------------------------------------------#
 
 	if [ ${Area} != "All" -a ${Area} != "Logs" ] ; then
 		echo "brsprots: ${Root}/Logs directory not selected -- skipping"
 	elif [ ! -d ${Root}/Logs ] ; then
 		echo "brsprots: ${Root}/Logs directory not found -- skipping"
 	else
 		cd ${Root}/Logs
 		echo "brsprots: Setting" `pwd` "directory ..."
 
 		${NewOwner} .				# force owner of dir
 		${NewGroup} .				#    and group
 		${NewMode} ${dirmode} .			#      and permissions
 
 		${NewGroup} *				# change group, not owner
 		${NewMode} ${ufmode} *			# set permissions
 
 		fi					# end of Logs Area settings
 	fi
#-----------------------------------------------------------------------#
#			    Mail Area					#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "Mail" ] ; then
	echo "brsprots: ${Root}/Mail directory not selected -- skipping"
elif [ ! -d ${Root}/Mail ] ; then
	echo "brsprots: ${Root}/Mail directory not found -- skipping"
else
	cd ${Root}/Mail
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} .				# force owner of dir
	${NewGroup} . *         2>/dev/null	#    and group
	${NewMode} ${w_dirmode} .		#      and permissions
	${NewMode} ${othmode} * 2>/dev/null	# and file permission

	fi					# end of Mail settings

#-----------------------------------------------------------------------#
#			      Menus Area				#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "Menus" ] ; then
	echo "brsprots: ${Root}/Menus directory not selected -- skipping"
elif [ ! -d ${Root}/Menus ] ; then
	echo "brsprots: ${Root}/Menus directory not found -- skipping"
else
	cd ${Root}/Menus
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} .				# force owner of dir
	${NewGroup} .				#    and group
	${NewMode} ${dirmode} .			#      and permissions

	for dir in *
	do
		if [ ! -d ${dir} ] ; then
			echo "	    Unknown file/directory:" `pwd`/${dir}
			continue
			fi

		cd ${dir}
		echo "	      setting ${dir} subdirectory ..."

		${NewGroup} . *.MNS          2>/dev/null
		${NewMode} ${dirmode} .

		if [ X${dir} = XDesigner ]
		then
			${NewMode} ${mnsmode} *.vvd 2>/dev/null
			${NewGroup} *.vvd           2>/dev/null
		else
			${NewMode} ${mnsmode} *.MNS 2>/dev/null
		fi

		case ${dir} in			# set owner of BRS Menus
		 Designer)
			${NewOwner} . *.vvd
			;;
		 Maint|Mate|Products|Select|Thesaurus)
			${NewOwner} . *.MNS
			;;
		    esac

		cd ..
		done
	fi					# end of Menus settings

#-----------------------------------------------------------------------#
#			    NLOL Area    				#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "NLOL" ] ; then
	echo "brsprots: ${Root}/NLOL directory not selected -- skipping"
elif [ ! -d ${Root}/NLOL ] ; then
	echo "brsprots: ${Root}/NLOL directory not found -- skipping"
else
	cd ${Root}/NLOL
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} . *.dat	# force owner of dir and files
	${NewGroup} . *.dat	#    and group
	${NewMode} ${dirmode} .	#      and permissions
	${NewMode} ${mnsmode} *.dat

	fi					# end of NLOL settings

#-----------------------------------------------------------------------#
#			    Offline Area				#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "Offline" ] ; then
	echo "brsprots: ${Root}/Offline directory not selected -- skipping"
elif [ ! -d ${Root}/Offline ] ; then
	echo "brsprots: ${Root}/Offline directory not found -- skipping"
else
	cd ${Root}/Offline
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} .				# force owner of dir
	${NewGroup} . *         2>/dev/null	#    and group
	${NewMode} ${dirmode} .			#      and permissions
	${NewMode} ${othmode} * 2>/dev/null	# and file permission

	fi					# end of Offline settings

#-----------------------------------------------------------------------#
#			     Profile Area				#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "Profile" ] ; then
	echo "brsprots: ${Root}/Profile directory not selected -- skipping"
elif [ ! -d ${Root}/Profile ] ; then
	echo "brsprots: ${Root}/Profile directory not found -- skipping"
else
	cd ${Root}/Profile
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} .				# force owner of dir
	${NewGroup} .				#    and group
 	${NewMode} ${csdmode} .			#      and permissions

	for dir in *
	do
	    case ${dir} in

 		Config)				# contain config files
			cd ${Root}/Profile/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} .		# force owner of dir
			${NewGroup} .		#    and group
			${NewMode} ${dirmode} .	#      and permissions

			${NewOwner} *.cfg       # force owner of dir
			${NewGroup} *.cfg 	# set group, not owner
			# set permissions
			${NewMode} ${tabmode} *.cfg
			;;

 		Logs|Work)	# contain config files
			cd ${Root}/Profile/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} .		# force owner of dir
			${NewGroup} .		#    and group
			${NewMode} ${dirmode} .	#      and permissions

			;;

 		    Files)	# contain config files
			cd ${Root}/Profile/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} .		# force owner of dir
			${NewGroup} .		#    and group
			${NewMode} ${dirmode} .	#      and permissions


			for area in *
			do
				if [ ! -d ${area} ] ; then
					echo "	    Unknown file/directory:" `pwd`/${area}
					continue
					fi
				
				echo "	      ${area} save area ..."

				cd ${area}		# set whole save area
				${NewGroup} . *         2>/dev/null
				${NewMode} ${udmode} .
				${NewMode} ${ufmode} *  2>/dev/null
				cd ..
				done
			;;
		*)				# not recognized
			echo "	  Unknown file/directory:" ${Root}/Profile/${dir}
			;;
		esac
	    done
	fi					# end of Profile settings

#-----------------------------------------------------------------------#
#			    Thesaurus Area				#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "Thesaurus" ] ; then
	echo "brsprots: ${Root}/Thesaurus directory not selected -- skipping"
elif [ ! -d ${Root}/Thesaurus ] ; then
	echo "brsprots: ${Root}/Thesaurus directory not found -- skipping"
else
	cd ${Root}/Thesaurus
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} .				# force owner of dir
	${NewGroup} . *         2>/dev/null	#    and group
	${NewMode} ${dirmode} .			#      and permissions
	${NewMode} ${othmode} * 2>/dev/null	# and file permission

	fi					# end of Thesaurus settings

#-----------------------------------------------------------------------#
#			       Work Area				#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "Work" ] ; then
	echo "brsprots: ${Root}/Work directory not selected -- skipping"
elif [ ! -d ${Root}/Work ] ; then
	echo "brsprots: ${Root}/Work directory not found -- skipping"
else
	cd ${Root}/Work
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} .				# force owner of dir
	${NewGroup} .				#    and group
	${NewMode} ${w_dirmode} .		#      and permissions

	echo "	  Files under" `pwd` "are not changed."

	fi					# end of Work Area settings

#-----------------------------------------------------------------------#
#			       Tomcat Area				#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "Tomcat" ] ; then
	echo "brsprots: Tomcat area not selected -- skipping"
else
	if [ "$CATALINA_HOME" = "" ] ; then
	    echo "brsprots: CATALINA_HOME not set -- skipping"
	elif [ ! -d $CATALINA_HOME ] ; then
	    echo "brsprots: CATALINA_HOME $CATALINA_HOME directory not found -- skipping"
	else
	    cd $CATALINA_HOME

echo "Enter 'Y' to confirm that your Tomcat ROOT is \"$CATALINA_HOME\":"
read tomcat
if [ "${tomcat}" != "y" -a "${tomcat}" != "Y" ] ; then
 	echo "    Please check to be sure your CATALINA_HOME variable"
 	echo "    is set correctly.  When you have done so,"
 	echo "    rerun this procedure."
	echo " "
 	exit 1
 	fi

#	    ${NewOwner} .			# force owner of dir
#	    ${NewGroup} .			#    and group
#	    ${NewMode} ${othmode} .		#      and permissions

	if [ ! -d $CATALINA_HOME/brsplaces ] ; then
	    echo "brsprots: $CATALINA_HOME/brsplaces directory not found -- skipping"
	else
	    cd brsplaces
	    for dir in *
	    do
	        case ${dir} in

		    *)	
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} .		# force owner of dir
			${NewGroup} .		#    and group
			${NewMode} ${dirmode} .	#      and permissions
			
			${NewGroup} *		# change group, not owner
			${NewMode} ${dirmode} *	# default mode 
			;;

		  esac
	    done		
	    fi

	if [ ! -d $CATALINA_HOME/bin ] ; then
	    echo "brsprots: $CATALINA_HOME/bin directory not found -- skipping"
	else
	    cd ../bin
	    echo "        setting $CATALINA_HOME/bin brs.cfg and libnloljava.* "
#	    ${NewOwner} .		# force owner of dir
#	    ${NewGroup} .		#    and group
#	    ${NewMode} ${dirmode} .	#      and permissions

	    ${NewMode} ${dirmode} brs.cfg	  #      chg permissions
	    ${NewMode} ${sh_obj_mode} libnloljava.*  #    .sl or .so 
         fi
	    

	if [ ! -d $CATALINA_HOME/webapps ] ; then
	    echo "brsprots: $CATALINA_HOME/webapps directory not found -- skipping"
	else
	    cd ../webapps
	    echo "        setting $CATALINA_HOME/webapps/brs.war  ..."
	    ${NewOwner} .		# force owner of dir
	    ${NewGroup} .		#    and group
	    ${NewMode} ${dirmode} .	#      and permissions

	    ${NewMode} ${dirmode} brs.war	  #      and permissions

        fi	
   fi
fi					# end of Tomcat Area settings

#-----------------------------------------------------------------------#
#			       Spider Area				#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "Spider" ] ; then
	echo "brsprots: ${Root}/Spider directory not selected -- skipping"
elif [ ! -d ${Root}/Spider ] ; then
	echo "brsprots: ${Root}/Spider directory not found -- skipping"
else
	cd ${Root}/Spider
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} .				# force owner of dir
	${NewGroup} .				#    and group
	${NewMode} ${dirmode} .			#      and permissions

#	for dir in *
#	do
#	    case ${dir} in

#		bin)	
#			cd ${Root}/Spider/${dir}
#			echo "	      setting ${dir} subdirectory ..."

#			${NewOwner} .		# force owner of dir
#			${NewGroup} .		#    and group
#			${NewMode} ${dirmode} .	#      and permissions

#			${NewGroup} *		# change group, not owner
#			${NewMode} ${x_pub_mode} .	# default mode 
#			;;
		
#		*)				# not recognized
#			echo "	  Unknown file/directory:" ${Root}/Spider/${dir}
#			;;
#		esac
#		done		
	

	fi					# end of Spider Area settings

#-----------------------------------------------------------------------#
#			      NetAnswer1 Area				#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "NetAnswer" ] ; then
	echo "brsprots: ${Root}/NetAnswer directory not selected -- skipping"
elif [ ! -d ${Root}/NetAnswer ] ; then
	echo "brsprots: ${Root}/NetAnswer directory not found -- skipping"
else
	cd ${Root}/NetAnswer
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} .				# force owner of dir
	${NewGroup} .				#    and group
	${NewMode} ${dirmode} .			#      and permissions

	for dir in *
	do
	    case ${dir} in

		netacfg|netahtml|netaicon)	
			cd ${Root}/NetAnswer/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} .		# force owner of dir
			${NewGroup} .		#    and group
			${NewMode} ${dirmode} .	#      and permissions

			${NewGroup} *		# change group, not owner
			${NewMode} ${othmode} *	# set permissions
			;;
		
		netacgi)	
			cd ${Root}/NetAnswer/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} .		# force owner of dir
			${NewGroup} .		#    and group
			${NewMode} ${dirmode} .	#      and permissions

			${NewGroup} *		# change group, not owner
			${NewMode} ${x_pub_mode} nph-brs	# default mode 
			;;
		*)				# not recognized
			echo " Unknown file/directory: ${Root}/NetAnswer/Config/${dir}"
			;;
		esac
		done		
	
	fi					# end of NetA1 Area settings

#-----------------------------------------------------------------------#
#			      NetAnswer2 Area				#
#-----------------------------------------------------------------------#

if [ ${Area} != "All" -a ${Area} != "NetAns2" ] ; then
	echo "brsprots: ${Root}/NetAns2 directory not selected -- skipping"
elif [ ! -d ${Root}/NetAns2 ] ; then
	echo "brsprots: ${Root}/NetAns2 directory not found -- skipping"
else
	cd ${Root}/NetAns2
	echo "brsprots: Setting" `pwd` "directory ..."

	${NewOwner} .				# force owner of dir
	${NewGroup} . * 			#    and group
	${NewMode} ${dirmode} .			#      and permissions
	${NewMode} ${othmode} *.*		# default mode for files 
	
	cd ${Root}/NetAns2/bin
	${NewOwner} .				# force owner of dir
	${NewGroup} . * 			#    and group
	${NewMode} ${dirmode} .			#      and permissions
	${NewMode} ${na_exe_mode} *.exe		# default mode for exe + libs

	#open up brssort so NA2 can execute it
#	brssort removed from distribution 11/8/2004 -jec
#	${NewMode} ${na_exe_mode} ../../Bin/brssort

	if [ -f ${Root}/NetAns2/bin/libNetBrs.sl ] ; then
		${NewMode} ${sh_obj_mode} *.sl	#so for AIX, sl for others
	elif [ -f ${Root}/NetAns2/bin/libNetBrs.so ] ; then
		${NewMode} ${sh_obj_mode} *.so	
	fi

	${NewMode} ${othmode} *.ini		# default mode ini files

	cd ${Root}/NetAns2/bin/cfg
	${NewOwner} .				# force owner of dir
	${NewGroup} . * 			#    and group
	${NewMode} ${dirmode} .			#      and permissions
	${NewMode} ${othmode} *.*		# default mode for files 

	cd ${Root}/NetAns2/bin/webaka
	${NewOwner} .				# force owner of dir
	${NewGroup} .				#    and group
	${NewMode} ${dirmode} .			#      and permissions
	
	for dir in *
	do
	    case ${dir} in

		cfg|nldata)	
			cd ${Root}/NetAns2/bin/webaka/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} .		# force owner of dir
			${NewGroup} .		#    and group
			${NewMode} ${dirmode} .	#      and permissions

			${NewGroup} *		# change group, not owner
			${NewMode} ${othmode} *.*  # default mode for files 
			;;

		temp)	
			cd ${Root}/NetAns2/bin/webaka/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} .		# force owner of dir
			${NewGroup} .		#    and group
			${NewMode} ${dirmode} .	#      and permissions
			;;

		html)	
			cd ${Root}/NetAns2/bin/webaka/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} .		# force owner of dir
			${NewGroup} . *		#    and group
			${NewMode} ${dirmode} .	#      and permissions
			${NewMode} ${othmode} *.*	# default mode for files 
			cd ${Root}/NetAns2/bin/webaka/html/samp
			${NewOwner} .			# force owner of dir
			${NewGroup} . * 		#    and group
			${NewMode} ${dirmode} .		#      and permissions
			${NewMode} ${othmode} *.*	# default mode for files
			;;

		icon)	
			cd ${Root}/NetAns2/bin/webaka/${dir}
			echo "	      setting ${dir} subdirectory ..."

			${NewOwner} .		# force owner of dir
			${NewGroup} . * 	#    and group
			${NewMode} ${dirmode} .	#      and permissions
			${NewMode} ${othmode} *.*	# default mode for files 
			cd ${Root}/NetAns2/bin/webaka/icon/reg
			${NewOwner} .			# force owner of dir
			${NewGroup} . * 		#    and group
			${NewMode} ${dirmode} .		#      and permissions
			${NewMode} ${othmode} *.*	# default mode for files 
			cd ${Root}/NetAns2/bin/webaka/icon/grey
			${NewOwner} .			# force owner of dir
			${NewGroup} . * 		#    and group
			${NewMode} ${dirmode} .		#      and permissions
			${NewMode} ${othmode} *.*	# default mode for files
			;;
		*)				# not recognized
			echo "	  Unknown file/directory:" ${Root}/NetAns2/bin/webaka/${dir}
			;;
		esac
		done		
	
	fi				# end of NetAnswer2 Area settings

#-----------------------------------------------------------------------#
#			     End of Process				#
#-----------------------------------------------------------------------#

echo "brsprots: Run is complete."

exit 0
