# -*- sh -*-
#
#     tiger - A UN*X security checking system
#     Copyright (C) 1993 Douglas Lee Schales, David K. Hess, David R. Safford
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 1, or (at your option)
#    any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#     Please see the file `COPYING' for the complete copyright notice.
#
# SunOS/5/5.9/config - 10/19/2003
#
#-----------------------------------------------------------------------------
#
UUID="`/usr/bin/id | /usr/bin/sed -e 's/^uid=\([0-9][0-9]*\)[^0-9].*$/\1/'`"

[ "$UUID" != '0' -a "$Tiger_TESTMODE" != 'Y' ] && {
  echo 1>&2
  echo 'This script should be run from a super-user account.' 1>&2
  echo 1>&2
  exit 1
}

findcmd()
{
  CMD=$1

  SRCH=/sbin:/usr/local/bin:/bin:/usr/bin:/etc:/usr/ucb:/usr/sbin:/usr/lib

  SAVEIFS=$IFS
  IFS=:
  set $SRCH
  IFS=$SAVEIFS
  for dir
  do
    [ $TESTEXEC $dir/$CMD ] && {
      echo $dir/$CMD
      return
    }
  done
 }
   
TESTEXEC=-x
[ $TESTEXEC /bin/sh ] && TESTEXEC=-f
TESTLINK=-h
export TESTEXEC TESTLINK
WHOAMI=`findcmd whoami`
CAT=/usr/bin/cat
CUT=/usr/bin/cut
HEAD=/usr/bin/head
LS=/usr/bin/ls
# -g to show group ownership
LSGROUP="-lg"
# -L to show file instead of symlink
LSLINK="-L"
RM=/usr/bin/rm
AWK=/usr/bin/awk
GREP=/usr/bin/grep
EGREP=/usr/bin/egrep
# Silent grep
SGREP="$EGREP -s"
SED=/usr/bin/sed
SORT=/usr/bin/sort
COMM=/usr/bin/comm
TAIL=/usr/ucb/tail
MV=/usr/bin/mv
TR=/usr/bin/tr
JOIN=/usr/bin/join
GROUPSS=/usr/ucb/groups
FILECMD=/usr/bin/file
IFCONFIG=/sbin/ifconfig
UNIQ=/usr/bin/uniq
BASENAME=/usr/bin/basename
CHMOD=/usr/bin/chmod
CHOWN=/etc/chown
LN=/usr/bin/ln
PASTE=/usr/bin/paste
DIFF=/usr/bin/diff
MAILER=/usr/bin/mail
ID=/usr/bin/id
WC=/usr/bin/wc
NDD=/usr/bin/ndd
EXPAND=/usr/bin/expand
SHOWREV=/usr/bin/showrev
NETSTAT=/usr/bin/netstat
PFILES=/usr/bin/pfiles
SENDMAILS="/usr/lib/sendmail /usr/lib/sendmail.mx"
SENDMAILCF="/etc/mail/sendmail.cf"
#
export CAT LS LSGROUP LSLINK RM AWK GREP EGREP SGREP SED CUT HEAD
export SORT COMM TAIL MV TR JOIN GROUPSS FILECMD UNIQ BASENAME
export CHMOD CHOWN LN PASTE DIFF MAILER ID WC NDD IFCONFIG
export SHOWREV NETSTAT PFILES
export SENDMAILS SENDMAILCF EXPAND
#
UNAME=/usr/bin/uname
GETHOSTNAME=/usr/bin/hostname
EXPR=/usr/bin/expr
STRINGS=/usr/bin/strings
FIND=/usr/bin/find
FINDXDEV=-xdev
FMT=/usr/ucb/fmt
GETFS=/sbin/mount
CC=/usr/bin/cc
CC=`findcmd gcc`
if [ -z "$CC" ]; then
  CC=`findcmd cc`
fi
CFLAGS="-DNEEDGETWD"
PS=/usr/bin/ps
DATE=/usr/bin/date
DATECMD="$DATE +%y%m%d"
TIMECMD="$DATE +%H:%M"
TESTLINK=-h
TESTEXEC=-x
#
#
export UNAME GETHOSTNAME EXPR STRINGS FIND FINDXDEV
export FMT GETFS CC PS DATE DATECMD TIMECMD TESTLINK TESTEXEC
#
# SunOS 4.x.x Bourne Shell has goofy 'wait' in regards to signals
#
WAIT=wait
#WAIT=simple_wait
#
# Using NIS (YP)?
YPCAT=/usr/bin/ypcat
NISCAT=`findcmd niscat`
#
YP=
($PS -ef | $GREP ypbind | $SGREP -v $GREP) && YP=Y
export YP
#
#
YPSERVER="NO"
($PS -ef | $GREP ypserv | $SGREP -v $GREP) && YPSERVER="YES"
export WAIT YPCAT YPSERVER NISCAT
# Tcp wrappers
TCPD=`findcmd tcpd`
export TCPD
#
MAILSPOOL=/var/mail
#
CRONSPOOL=/var/spool/cron/crontabs
#
ETCSHELLS=/etc/shells
export MAILSPOOL CRONSPOOL ETCSHELLS
# egrep regex that defines a local filesystem
LOCFS="(ufs|tmpfs)"
export LOCFS
#
FS_WDIRSYS="/tmp/ /var/tmp/ /var/spool/mail/"
export FS_WDIRSYS
#
SYSDEFAULTPATH="/usr/sbin:/usr/bin:/usr/ucb"
export SYSDEFAULTPATH
#
CDIR="$BASEDIR/systems"
eval `
  while read var file
  do
    if [ -f "$CONFIG_DIR/$file" ]; then
      loc="$CONFIG_DIR"
    elif [ -f "$CDIR/$OS/$REL/$REV/$ARCH/$file" ]; then
      loc="$CDIR/$OS/$REL/$REV/$ARCH"
    elif [ -f "$CDIR/$OS/$REL/$REV/$file" ]; then
      loc="$CDIR/$OS/$REL/$REV"
    elif [ -f "$CDIR/$OS/$REL/$file" ]; then
      loc="$CDIR/$OS/$REL"
    elif [ -f "$CDIR/$OS/$file" ]; then
      loc="$CDIR/$OS"
    else
      loc=""
    fi
    if [ "$loc" != "" ]; then
      echo $var="$loc/$file;"
    else
      echo "$var=;"
    fi
    echo "export $var;"
  done << EOL
GETFS getfs
GEN_PASSWD_SETS gen_passwd_sets
GEN_GROUP_SETS gen_group_sets
GEN_ALIAS_SETS gen_alias_sets
CHECK_CRON check_cron
GEN_BOOTPARAM_SETS gen_bootparam_sets
GEN_EXPORT_SETS gen_export_sets
GEN_SERVICES_SETS gen_services
GET_MOUNTS gen_mounts
SIGNATURE_FILE signatures
SERVICESFILE services
INETDFILE inetd
FILE_ACL file_access_list
SUID_LIST suid_list
REL_FILE_EXCP rel_file_exp_list
GEN_CRON_FILES gen_cron
GETCLIENTDIRS gendlclients
GEN_INETD_SETS gen_inetd
GETDISKS getdisks
EMBEDDEDLIST embedlist
GETUSERHOME getuserhome
NDD_PARMS ndd_parms
NDD_PARMS_LOCAL ndd_parms_local
EOL
`
