summaryrefslogtreecommitdiffstats
path: root/pki/dogtag/scripts/build_ca
blob: ceb4fb6d6b45d15d612571c04200868d5b6f7df9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
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}