160 lines
4.3 KiB
Bash
Executable File
160 lines
4.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#############################################################
|
|
# Script name: install.sh
|
|
# Author: Gilles Mouchet (gilles.mouchet@gmail.com
|
|
# Version: 1.0.0
|
|
# Description: This script prepare own pki environment
|
|
# License: GNU GPL v3
|
|
#
|
|
# 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.
|
|
#
|
|
# Changelog
|
|
# [1.0.0] - 2026-04-12
|
|
# - Added
|
|
# - create environment for cert
|
|
# - Project initialization
|
|
# - initialization by gilles.mouchet@gmail.com
|
|
#
|
|
############################################################
|
|
|
|
VERSION=1.0.0
|
|
|
|
############################################################
|
|
# Main
|
|
############################################################
|
|
#main (){
|
|
|
|
main(){
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
COPY_CONF=true
|
|
|
|
# read library
|
|
source "$ROOT_DIR/lib/stdlib.sh"
|
|
|
|
# init config
|
|
init_default
|
|
|
|
# set color
|
|
set_color
|
|
|
|
# check if script is run with sudo
|
|
check_sudo
|
|
|
|
# read cli parameters
|
|
while [[ "$#" -gt 0 ]]; do
|
|
case "$1" in
|
|
--reload-conf)
|
|
init_env
|
|
COPY_CONF=false
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
# create paths for environment own-pki
|
|
echo -n -e "Create path $BIN_PATH/lib: "
|
|
if [ ! -d "$BIN_PATH/lib" ]; then
|
|
mkdir -p "$BIN_PATH/lib" 2>/dev/null
|
|
check_rc $?
|
|
else
|
|
msg_warn "$BIN_PATH already exists!"
|
|
fi
|
|
|
|
echo -n -e "Create path $BIN_PATH/bin: "
|
|
if [ ! -d "$BIN_PATH/bin" ]; then
|
|
mkdir -p "$BIN_PATH/bin" 2>/dev/null
|
|
check_rc $?
|
|
else
|
|
msg_warn "$BIN_PATH/bin already exists!"
|
|
fi
|
|
|
|
echo -e -n "Create $BIN_PATH/config: "
|
|
if [ ! -d "$BIN_PATH/config" ]; then
|
|
mkdir -p $BIN_PATH/config 2>/dev/null
|
|
check_rc $?
|
|
else
|
|
msg_warn "$BIN_PATH/config already exists!"
|
|
fi
|
|
|
|
echo -e -n "Create $CONF_PATH: "
|
|
if [ ! -d "$CONF_PATH" ]; then
|
|
mkdir -p $CONF_PATH 2>/dev/null
|
|
check_rc $?
|
|
else
|
|
msg_warn "$CONF_PATH already exists!"
|
|
fi
|
|
|
|
# create paths for certs repository
|
|
echo -e -n "Create $CERTS_PATH: "
|
|
if [ ! -d "$CERTS_PATH" ]; then
|
|
mkdir -p $CERTS_PATH 2>/dev/null
|
|
check_rc $?
|
|
else
|
|
msg_warn "$CERTS_PATH already exists!"
|
|
fi
|
|
|
|
echo -e -n "Create $KEY_CA_PATH: "
|
|
if [ ! -d "$KEY_CA_PATH" ]; then
|
|
mkdir -p $KEY_CA_PATH 2>/dev/null
|
|
check_rc $?
|
|
else
|
|
msg_warn "$KEY_CA_PATH already exists!"
|
|
fi
|
|
|
|
echo -e -n "Create $CRT_CA_PATH: "
|
|
if [ ! -d "$CRT_CA_PATH" ]; then
|
|
mkdir -p $CRT_CA_PATH 2>/dev/null
|
|
check_rc $?
|
|
else
|
|
msg_warn "$CRT_CA_PATH already exists!"
|
|
fi
|
|
|
|
# copy config default file
|
|
echo -e -n "Copy ${ORANGE}$ROOT_DIR/config/default.conf${NC} to $BIN_PATH/config: "
|
|
cp "$ROOT_DIR/config/default.conf" "$BIN_PATH/config/."
|
|
check_rc $?
|
|
|
|
# copy config own-pki.conf file
|
|
if [[ "$COPY_CONF" == "true" ]]; then
|
|
echo -e -n "Copy ${ORANGE}$ROOT_DIR/config/own-pki.conf${NC} to $CONF_PATH: "
|
|
cp "$ROOT_DIR/config/own-pki.conf" "$CONF_PATH/."
|
|
check_rc $?
|
|
fi
|
|
|
|
# copy ca config file
|
|
echo -e -n "Copy ${ORANGE}$ROOT_DIR/config/ca-config.tmpl${NC} to ${BIN_PATH}/config: "
|
|
cp "$ROOT_DIR/config/ca-config.tmpl" "${BIN_PATH}/config/."
|
|
check_rc $?
|
|
|
|
|
|
# copy script file to opt
|
|
msg_info "Copy librairie scripts files"
|
|
files=( $ROOT_DIR/lib/* )
|
|
for f in "${files[@]}"; do
|
|
echo -e -n " copy ${ORANGE}$f${NC} to ${BIN_PATH}/lib: "
|
|
cp "$f" "$BIN_PATH/lib/"
|
|
check_rc $?
|
|
done
|
|
|
|
msg_info "Copy main scripts files"
|
|
files=( $ROOT_DIR/bin/* )
|
|
for f in "${files[@]}"; do
|
|
# exclude install.sh
|
|
if [ "$f" != "$ROOT_DIR/bin/install.sh" ]; then
|
|
echo -e -n " copy ${ORANGE}$f${NC} to ${BIN_PATH}/bin: "
|
|
cp "$f" "$BIN_PATH/bin/"
|
|
check_rc $?
|
|
fi
|
|
done
|
|
|
|
echo "******************************************************"
|
|
echo " Installation completed !!"
|
|
echo -e " Adapt the file ${ORANGE}$CONF_PATH/own-pki.conf${NC} as you need"
|
|
echo "******************************************************"
|
|
}
|
|
main "$@"
|
|
|