own-pki/bin/install.sh
2026-04-26 20:44:39 +02:00

170 lines
4.5 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 (){
# path resolution
#SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
#ROOT_DIR="$(dirname "$SCRIPT_DIR")"
#CONF_PATH="/etc/own-pki"
#ENABLE_COLOR=true
#BIN_PATH="/opt/own-pki"
#ASSUME_YES=0
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" 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 "$@"