#!/bin/bash source assets/shell/shell_colors ### DEPENDENCY CHECK & INSTALLER pkgs="openssl nginx" echo -e "\n${CYN} Dependency and Privilege Check running...${CRS}\n" ### PRIVILEGES if (( $(id -u) == 0 )); then echo -e "${GRN} Privilege check passed...${CRS}\n" else echo -e "${RED} Privilege check failed... Please run script with sudo or as root!${CRS}\n" exit 1 fi ### DEPENDENCIES if command -v "$pkgs" >/dev/null 2>&1; then echo -e "${GRN} Dependency check passed...${CRS}\n" else echo -e "${YEL} Dependencies not met.${CRS}\n" while true; do echo -e " ${YEL}Do you wish to install via APT? (${GRN}Y${YEL}/${RED}n${YEL})${CRS}" read -p " --> " install echo "" if [[ "$install" = "" || "$install" = "y" || "$install" = "Y" ]]; then sudo apt update && sudo apt install --install-suggests -y $pkgs echo -e "\n${GRN} Dependencies installed. Proceeding...${CRS}\n" break elif [[ "$install" == "n" || "$install" = "N" ]]; then echo -e "\n${RED} Missing dependencies... Exiting!${CRS}\n" exit 1 else echo -e "\n${YEL} Invalid response... Try again...\n\n ${GRN}Y ${YEL}= (Yes, install dependencies and continue)\n ${RED}N ${YEL}= (No, don't install dependencies and exit)${CRS}\n " fi done fi ### NGINX SETUP & CONFIG ###### CERTIFICATION while true; do echo -e " ${YEL}Configure SSL and create a self signed cetrificate? (Y/n)${CRS}" read -p " --> " installSSL if [[ "$installSSL" = "" || "$installSSL" = "y" || "$installSSL" = "Y" ]]; then echo -e " ${YEL}Enter path to certificates folder${CRS}" read -p " default = /etc/nginx/ssl --> " cert_path if ! [ "$cert_path" ]; then cert_path=/etc/nginx/ssl elif [[ "$cert_path" = "." ]]; then cert_path=$PWD else : fi echo "" echo -e " ${YEL}Enter file name for certificate and key${CRS}" read -p " default --> $HOSTNAME --> " cert_name if ! [ "$cert_name" ]; then cert_name=$HOSTNAME else : fi echo "" sudo mkdir -p "$cert_path" sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout "$cert_path"/"$cert_name".key -out "$cert_path"/"$cert_name".crt echo -e "\n${GRN} SSL certificate files ${YEL}$cert_name.crt ${GRN}and ${YEL}$cert_name.key ${GRN}created and stored in ${YEL}$cert_path${CRS}\n" break elif [[ "$installSSL" == "n" || "$installSSL" = "N" ]]; then echo -e "\n${RED} No encryption established${CRS}\n" break else echo -e "\n${YEL} Invalid response... Try again...\n\nY = (Yes, configure SSL certificate and continue)\nN = (No, leave unencrypted and continue)${CRS}\n " fi done