123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- #!/bin/sh
- ###############################################################################
- # Administrative utility for IBM i
- #
- # Copyright IBM Corp. 2012
- # The source code for this program is not published or other-
- # wise divested of its trade secrets, irrespective of what has
- # been deposited with the U.S. Copyright Office.
- #
- # ----------------------------------------------------------------------------
- #
- # The administrator must have *ALLOBJ and *SECADM special authority to run this
- # script.
- #
- usage() {
- echo ""
- echo "Usage: $0 "
- echo " {POSTINSTALL | PREUNINSTALL | "
- echo " GRANTAUTH --rolename server"
- echo " --userprofilename user_profile_name [options]"
- echo ""
- echo "Options for GRANTAUTH:"
- echo " --userdir wlp_usr_dir"
- echo " --outputdir wlp_output_dir"
- echo ""
- echo "The only currently supported value for --rolename is \"server\"."
- echo "You must specify \"server\" as the value for --rolename."
- echo ""
- echo "You must have *ALLOBJ and *SECADM special authority to use the"
- echo "POSTINSTALL and PREUNINSTALL commands."
- echo ""
- echo "You must have *ALLOBJ special permission, own or have *OBJMGT authority"
- echo "to all objects in the specified directory subtrees to use the GRANTAUTH"
- echo "command."
- exit 1
- }
- setWlpInstallDir() {
- CUR_DIR=`pwd`
- WLP_DIR=`dirname ${0}`/../../../../
- cd "${WLP_DIR}"
- WLP_INSTALL_DIR=`pwd`
- cd "${CUR_DIR}"
- }
- ##
- ## readServerEnv: Read server.env file and export environment variables.
- readServerEnv()
- {
- if [ -f "$1" ]; then
- while read -r line; do
- case $line in
- \#*);;
- *=*)
- # Only accept alphanumeric variable names to avoid eval complexities.
- if var=`echo "$line" | sed -e 's/^\([a-zA-Z0-9_][a-zA-Z0-9_]*\)=.*/\1/'`; then
- value=\'`echo "$line" | sed -e 's/[^=]*=//' -e s/\'/\'\"\'\"\'/g`\'
- eval "$var=$value; export $var"
- fi
- esac
- done < "$1"
- fi
- }
- ##
- ## installEnvDefaults: Set variable defaults for a non-server or nonexistent
- ## server command.
- installEnvDefaults()
- {
- readServerEnv "${WLP_INSTALL_DIR}/etc/default.env"
- if [ -z "${WLP_USER_DIR}" ]
- then
- if [ -z "${WLP_DEFAULT_USER_DIR}" ]
- then
- WLP_DEFAULT_USER_DIR=${WLP_INSTALL_DIR}/usr
- fi
- WLP_USER_DIR=${WLP_DEFAULT_USER_DIR}
- fi
- if [ -z "${WLP_OUTPUT_DIR}" ]
- then
- if [ -z "${WLP_DEFAULT_OUTPUT_DIR}" ]
- then
- WLP_DEFAULT_OUTPUT_DIR=${WLP_USER_DIR}/servers
- fi
- WLP_OUTPUT_DIR=${WLP_DEFAULT_OUTPUT_DIR}
- fi
- }
- ##
- ## setLogsDir: Set LOGS_DIR
- setLogsDir()
- {
- readServerEnv "${WLP_INSTALL_DIR}/etc/server.env"
- installEnvDefaults
- LOGS_DIR=${WLP_OUTPUT_DIR}/.logs
- }
- if [ "`uname`" != "OS400" ]; then
- echo "The $0 command is supported only for IBM i."
- exit 1
- fi
- if [ ! $# -ge 1 ]; then
- usage
- fi
- WLPUSERDIR=
- WLPOUTPUTDIR=
- ROLENAME=
- USERPROFILENAME=
- ACTION=$1
- shift
- SAVED_OPTS=$@
- while [ $# -gt 0 ]; do
- case $1 in
- '--userdir') if [ $# -gt 1 ]; then
- WLPUSERDIR=$2;shift
- fi
- ;;
- '--outputdir') if [ $# -gt 1 ]; then
- WLPOUTPUTDIR=$2;shift
- fi
- ;;
- '--rolename') if [ $# -gt 1 ]; then
- ROLENAME=$2;shift
- if [ ${ROLENAME} != "server" ]; then
- usage
- fi
- fi
- ;;
- '--userprofilename') if [ $# -gt 1 ]; then
- USERPROFILENAME=$2;shift
- fi
- ;;
- *) usage
- ;;
- esac
- shift
- done
- ERR_CHK=0
- setWlpInstallDir
- if [ ${ACTION} = "POSTINSTALL" ]; then
- if [ -f ${WLP_INSTALL_DIR}/etc/default.env ]; then
- rm ${WLP_INSTALL_DIR}/etc/default.env
- if [ $? -ne 0 ]; then
- echo "Error: Cannot remove file ${WLP_INSTALL_DIR}/etc/default.env"
- exit 1
- fi
- fi
- else
- SCRIPT_DIR="${WLP_INSTALL_DIR}/bin"
- SCRIPT_DIR_OWNER=`ls -ld ${SCRIPT_DIR} | awk '{ print $3 }'`
- if [ ! ${SCRIPT_DIR_OWNER} = "QSYS" ]; then
- if [ ${ACTION} = "PREUNINSTALL" ]; then
- echo "Nothing to do because the \"iAdmin POSTINSTALL\" command has not been run."
- exit 0
- else
- if [ ${ACTION} = "GRANTAUTH" ]; then
- echo "Error: Nothing to do because the \"iAdmin POSTINSTALL\" command has not been run."
- exit 1
- fi
- fi
- fi
- if [ ${ACTION} = "GRANTAUTH" ]; then
- if [ ! ${ROLENAME} ] || [ ! ${USERPROFILENAME} ]; then
- usage
- fi
- fi
- fi
- _SCRIPT_LOCATION="${WLP_INSTALL_DIR}/lib/native/os400/bin"
- setLogsDir
- SAVED_UMASK=$(umask)
- umask 022
- if [ ! -d ${LOGS_DIR} ]; then
- mkdir -p ${LOGS_DIR}
- if [ $? != 0 ]; then
- echo "Error: Cannot create directory ${LOGS_DIR}."
- exit 1
- fi
- fi
- case "$ACTION" in
- 'POSTINSTALL')
- INSTALL_LOG=${LOGS_DIR}/$(basename $0)PostInstall.log
- if [ ! -f ${INSTALL_LOG} ]; then
- touch -C 819 ${INSTALL_LOG}
- fi
- umask ${SAVED_UMASK}
- echo "***************************************************************" >> ${INSTALL_LOG}
- echo `date` >> ${INSTALL_LOG}
- echo "Invoking ${_SCRIPT_LOCATION}/_iPostInstallUtility" >> ${INSTALL_LOG}
- echo "***************************************************************" >> ${INSTALL_LOG}
- ${_SCRIPT_LOCATION}/_iPostInstallUtility >> ${INSTALL_LOG} 2>&1
- ERR_CHK=$?
- if [ ${ERR_CHK} != 0 ]; then
- echo "The POSTINSTALL action completed with errors. See ${INSTALL_LOG} for details."
- else
- echo "The POSTINSTALL action completed successfully. See ${INSTALL_LOG} for details."
- fi
- ;;
- 'PREUNINSTALL')
- UNINSTALL_LOG=${LOGS_DIR}/$(basename $0)PreUninstall.log
- if [ ! -f ${UNINSTALL_LOG} ]; then
- touch -C 819 ${UNINSTALL_LOG}
- fi
- umask ${SAVED_UMASK}
- echo "***************************************************************" >> ${UNINSTALL_LOG}
- echo `date` >> ${UNINSTALL_LOG}
- echo "Invoking ${_SCRIPT_LOCATION}/_iPreUninstallUtility" >> ${UNINSTALL_LOG}
- echo "***************************************************************" >> ${UNINSTALL_LOG}
- ${_SCRIPT_LOCATION}/_iPreUninstallUtility >> ${UNINSTALL_LOG} 2>&1
- ERR_CHK=$?
- if [ ${ERR_CHK} != 0 ]; then
- echo "The PREUNINSTALL action completed with errors. See ${UNINSTALL_LOG} for details."
- else
- echo "The PREUNINSTALL action completed successfully. See ${UNINSTALL_LOG} for details."
- fi
- ;;
- 'GRANTAUTH')
- AUTH_LOG=${LOGS_DIR}/$(basename $0)GrantAuth.log
- if [ ! -f ${AUTH_LOG} ]; then
- touch -C 819 ${AUTH_LOG}
- fi
- umask ${SAVED_UMASK}
- echo "***************************************************************" >> ${AUTH_LOG}
- echo `date` >> ${AUTH_LOG}
- echo "Invoking ${_SCRIPT_LOCATION}/_iAuthUtility ${SAVED_OPTS}" >> ${AUTH_LOG}
- echo "***************************************************************" >> ${AUTH_LOG}
- ${_SCRIPT_LOCATION}/_iAuthUtility ${SAVED_OPTS} >> ${AUTH_LOG} 2>&1
- ERR_CHK=$?
- if [ ${ERR_CHK} != 0 ]; then
- echo "The GRANTAUTH action completed with errors. See ${AUTH_LOG} for details."
- else
- echo "The GRANTAUTH action completed successfully. See ${AUTH_LOG} for details."
- fi
- ;;
- *)
- usage
- ;;
- esac
- exit ${ERR_CHK}
|