#!/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 "$@"