diff options
Diffstat (limited to 'pki/dogtag/scripts/build_ca')
-rwxr-xr-x | pki/dogtag/scripts/build_ca | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/pki/dogtag/scripts/build_ca b/pki/dogtag/scripts/build_ca new file mode 100755 index 000000000..ceb4fb6d6 --- /dev/null +++ b/pki/dogtag/scripts/build_ca @@ -0,0 +1,178 @@ +#!/bin/bash +# BEGIN COPYRIGHT BLOCK +# (C) 2007 Red Hat, Inc. +# All rights reserved. +# END COPYRIGHT BLOCK + +# Always switch into the base directory three levels +# above this shell script prior to executing it so +# that all of its output is written to this directory +cd `dirname $0`/../../.. + +# Retrieve the name of this base directory +PKI_PWD=`pwd` + +# Establish the release directory +PKI_RELEASE_ROOT="${PKI_PWD}/release" + +# Establish the name of the machine +PKI_HOSTNAME=`hostname` + +# Set pre-defined variables +PKI_DIR="pki" +PKI_SRC_DIR="base" +ROOT_UID=0 + +# This script may ONLY be run on Linux! +PKI_OS=`uname` +if [ "${PKI_OS}" != "Linux" ]; then + printf "The '$0' script is ONLY executable\n" + printf "on a 'Linux' machine!\n" + exit 255 +fi + +# Set Dogtag variables +PKI_FLAVOR="dogtag" +PKI_UI_DIR="${PKI_DIR}/${PKI_FLAVOR}" +PKI_BUILD_SCRIPT_DIR="${PKI_PWD}/${PKI_UI_DIR}" +PKI_BUILD_SCRIPT="build_dogtag" + +# Set packaging variables +YUM_EXE="/usr/bin/yum" +YUM_EXE_OPTIONS="-y --nogpgcheck install" +RPM_DIR="dist/rpmpkg/RPMS/*/" +RPM_EXT="-[0-9]*.rpm" + +# Set sudo variables +PKI_SUDO="/usr/bin/sudo" +PKI_SUDOERS="/etc/sudoers" + +# Set user identity variables +PKI_EUID=`/usr/bin/id -u` +PKI_UID=`/usr/bin/id -ur` +PKI_USERNAME=`/usr/bin/id -un` + +# Make sure that this script is NOT being run as root! +if [ ${PKI_UID} -eq ${ROOT_UID} ] || + [ ${PKI_EUID} -eq ${ROOT_UID} ]; then + printf "The '$0' script may NOT be run as root!\n" + exit 255 +fi + +# Check for the presence of the 'sudo' executable +if [ ! -x "${PKI_SUDO}" ]; then + printf "The '$0' script requires the '${PKI_SUDO}' executable\n" + printf "to be available on '${PKI_HOSTNAME}'!\n" + exit 255 +fi + +# Check for the presence of the 'sudoers' file +if [ ! -e "${PKI_SUDOERS}" ]; then + printf "The '$0' script requires the '${PKI_SUDOERS}' file\n" + printf "to be available on '${PKI_HOSTNAME}'!\n" + exit 255 +fi + +# Check for the presence of the required sudoers command +PKI_SUDOERS_COMMAND="(root) NOPASSWD: ${YUM_EXE}" +PKI_SUDOERS_LINE="${PKI_USERNAME} ALL = NOPASSWD: ${YUM_EXE}" +printf "Checking if '${PKI_USERNAME}' has the appropriate '${PKI_SUDO}' permissions . . .\n" +printf "[NOTE: A password prompt may appear requiring ${PKI_USERNAME}'s password.]\n" +`${PKI_SUDO} -l | grep "${PKI_SUDOERS_COMMAND}" > /dev/null 2>&1` +if [ $? -ne 0 ]; then + printf "The '$0' script requires that the\n" + printf "'${PKI_SUDOERS}' file MUST contain this line:\n\n" + printf " '${PKI_SUDOERS_LINE}'\n\n" + exit 255 +fi + +# Establish release subdirectories +PKI_RELEASE_DIR="${PKI_RELEASE_ROOT}/${PKI_DIR}/${PKI_SRC_DIR}" +PKI_RELEASE_UI_DIR="${PKI_RELEASE_ROOT}/${PKI_UI_DIR}" + +# Establish common PKI package names +OSUTIL=osutil${RPM_EXT} +PKI_SYMKEY=pki-symkey${RPM_EXT} +PKI_NATIVE_TOOLS=pki-native-tools${RPM_EXT} +PKI_UTIL=pki-util${RPM_EXT} +PKI_UTIL_JAVADOC=pki-util-javadoc${RPM_EXT} +PKI_SETUP=pki-setup${RPM_EXT} +PKI_JAVA_TOOLS=pki-java-tools${RPM_EXT} +PKI_JAVA_TOOLS_JAVADOC=pki-java-tools-javadoc${RPM_EXT} +PKI_COMMON_UI=${PKI_FLAVOR}-pki-common-ui${RPM_EXT} +PKI_COMMON=pki-common${RPM_EXT} +PKI_COMMON_JAVADOC=pki-common-javadoc${RPM_EXT} +PKI_SELINUX=pki-selinux${RPM_EXT} +PKI_SILENT=pki-silent${RPM_EXT} + +# Establish PKI subsystem package names +PKI_CA_UI=${PKI_FLAVOR}-pki-ca-ui${RPM_EXT} +PKI_CA=pki-ca${RPM_EXT} + +# Establish optional PKI package names +PKI_CONSOLE_UI=${PKI_FLAVOR}-pki-console-ui${RPM_EXT} +PKI_CONSOLE=pki-console${RPM_EXT} + +# Always start with a new release root directory +rm -rf ${PKI_RELEASE_ROOT} +mkdir -p ${PKI_RELEASE_ROOT} + +# Build and install 'osutil' packages +${PKI_BUILD_SCRIPT_DIR}/osutil/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/osutil/${RPM_DIR}/${OSUTIL} + +# Build and install 'pki-symkey' packages +${PKI_BUILD_SCRIPT_DIR}/symkey/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/symkey/${RPM_DIR}/${PKI_SYMKEY} + +# Build and install 'pki-native-tools' packages +${PKI_BUILD_SCRIPT_DIR}/native-tools/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/native-tools/${RPM_DIR}/${PKI_NATIVE_TOOLS} + +# Build and install 'pki-util' packages +${PKI_BUILD_SCRIPT_DIR}/util/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/util/${RPM_DIR}/${PKI_UTIL} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/util/${RPM_DIR}/${PKI_UTIL_JAVADOC} + +# Build and install 'pki-setup' packages +${PKI_BUILD_SCRIPT_DIR}/setup/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/setup/${RPM_DIR}/${PKI_SETUP} + +# Build and install 'pki-java-tools' packages +${PKI_BUILD_SCRIPT_DIR}/java-tools/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/java-tools/${RPM_DIR}/${PKI_JAVA_TOOLS} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/java-tools/${RPM_DIR}/${PKI_JAVA_TOOLS_JAVADOC} + +# Build and install 'pki-common-ui' packages +${PKI_BUILD_SCRIPT_DIR}/common-ui/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_UI_DIR}/common-ui/${RPM_DIR}/${PKI_COMMON_UI} + +# Build and install 'pki-common' packages +${PKI_BUILD_SCRIPT_DIR}/common/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/common/${RPM_DIR}/${PKI_COMMON} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/common/${RPM_DIR}/${PKI_COMMON_JAVADOC} + +# Build and install 'pki-selinux' packages +${PKI_BUILD_SCRIPT_DIR}/selinux/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/selinux/${RPM_DIR}/${PKI_SELINUX} + +# Build and install 'pki-silent' packages +${PKI_BUILD_SCRIPT_DIR}/silent/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/silent/${RPM_DIR}/${PKI_SILENT} + +# Build and install 'pki-ca-ui' packages +${PKI_BUILD_SCRIPT_DIR}/ca-ui/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_UI_DIR}/ca-ui/${RPM_DIR}/${PKI_CA_UI} + +# Build and install 'pki-ca' packages +${PKI_BUILD_SCRIPT_DIR}/ca/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/ca/${RPM_DIR}/${PKI_CA} + +# Build and install 'pki-console-ui' packages +${PKI_BUILD_SCRIPT_DIR}/console-ui/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_UI_DIR}/console-ui/${RPM_DIR}/${PKI_CONSOLE_UI} + +# Build and install 'pki-console' packages +${PKI_BUILD_SCRIPT_DIR}/console/${PKI_BUILD_SCRIPT} +${PKI_SUDO} ${YUM_EXE} ${YUM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/console/${RPM_DIR}/${PKI_CONSOLE} + |