fix a few domain setting errors

This commit is contained in:
Llewellyn van der Merwe 2021-07-21 12:04:01 +02:00
parent 091c81000b
commit 5c93b31286
Signed by: Llewellyn
GPG Key ID: EFC0C720A240551C
1 changed files with 130 additions and 76 deletions

View File

@ -1,7 +1,7 @@
#!/bin/bash
# The most recent program version.
_VERSION="2.1.0"
_VERSION="2.1.1"
_V="2.1"
# The program full name
@ -712,7 +712,7 @@ function joomla__TRuST__edit() {
local vdm_edit_me
local container
# list containers... and allow selection to edit
container=$(getSelectedDirectory "Select a container to manually edit if you like." \
container=$(getSelectedDirectory "Select a container to manually edit the docker-composer.yml file.\n[Only continue if you know what your doing!]" \
"${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/available/" '' "Edit ${VDM_CONTAINER_TYPE^} Container")
# check that we have something, else return to main menu
if [ ${#container} -ge 1 ]; then
@ -720,6 +720,8 @@ function joomla__TRuST__edit() {
vdm_edit_me="${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/available/${container}/docker-compose.yml"
# check if this docker-composer.yml exist
if [ -f "${vdm_edit_me}" ]; then
# give little heads-up
showNotice "${USER^}, to save the changes you've made or to just close the file again press:\n\n[ctrl+x] with nano on ubuntu." 13
# lets open the file with nano for now
"${EDITOR:-nano}" "${vdm_edit_me}"
# if this container is enabled ask if it should be redeployed
@ -746,7 +748,7 @@ function openssh__TRuST__edit() {
local vdm_edit_me
local container
# list containers... and allow selection to edit
container=$(getSelectedDirectory "Select a container to manually edit if you like." \
container=$(getSelectedDirectory "Select a container to manually edit the docker-composer.yml file.\n[Only continue if you know what your doing!]" \
"${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/available/" '' "Edit ${VDM_CONTAINER_TYPE^} Container")
# check that we have something, else return to main menu
if [ ${#container} -ge 1 ]; then
@ -754,6 +756,8 @@ function openssh__TRuST__edit() {
vdm_edit_me="${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/available/${container}/docker-compose.yml"
# check if this docker-composer.yml exist
if [ -f "${vdm_edit_me}" ]; then
# give little heads-up
showNotice "${USER^}, to save the changes you've made or to just close the file again press:\n\n[ctrl+x] with nano on ubuntu." 13
# lets open the file with nano for now
"${EDITOR:-nano}" "${vdm_edit_me}"
# if this container is enabled ask if it should be redeployed
@ -776,12 +780,17 @@ function traefik__TRuST__edit() {
if [ ! -f "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/docker-compose.yml" ]; then
showError "There is no ${VDM_CONTAINER_TYPE^} container to edit."
else
# lets open the file with nano for now
"${EDITOR:-nano}" "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/docker-compose.yml"
# if this container is enabled ask if it should be redeployed
if (whiptail --yesno "Would you like to deploy or re-deploy the ${VDM_CONTAINER_TYPE^} container that you opened to edit?" --title "Deploy or Re-Deploy Container" 8 112); then
# then we enable it
enableContainer "${VDM_CONTAINER_TYPE}"
# give little warning for less command ready people
if (whiptail --yesno "Only continue if you know what your doing!\n\n\
${USER^}, to save the changes you've made or to just close the file again press:\n\n\
[ctrl+x] with nano on ubuntu." --title "Continue to edit ${VDM_CONTAINER_TYPE^} config." 15 112); then
# lets open the file with nano for now
"${EDITOR:-nano}" "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/docker-compose.yml"
# if this container is enabled ask if it should be redeployed
if (whiptail --yesno "Would you like to deploy or re-deploy the ${VDM_CONTAINER_TYPE^} container that you opened to edit?" --title "Deploy or Re-Deploy Container" 8 112); then
# then we enable it
enableContainer "${VDM_CONTAINER_TYPE}"
fi
fi
fi
}
@ -793,12 +802,17 @@ function portainer__TRuST__edit() {
if [ ! -f "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/docker-compose.yml" ]; then
showError "There is no ${VDM_CONTAINER_TYPE^} container to edit."
else
# lets open the file with nano for now
"${EDITOR:-nano}" "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/docker-compose.yml"
# if this container is enabled ask if it should be redeployed
if (whiptail --yesno "Would you like to deploy or re-deploy the ${VDM_CONTAINER_TYPE^} container that you opened to edit?" --title "Deploy or Re-Deploy Container" 8 112); then
# then we enable it
enableContainer "${VDM_CONTAINER_TYPE}"
# give little warning for less command ready people
if (whiptail --yesno "Only continue if you know what your doing!\n\n\
${USER^}, to save the changes you've made or to just close the file again press:\n\n\
[ctrl+x] with nano on ubuntu." --title "Continue to edit ${VDM_CONTAINER_TYPE^} config." 15 112); then
# lets open the file with nano for now
"${EDITOR:-nano}" "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/docker-compose.yml"
# if this container is enabled ask if it should be redeployed
if (whiptail --yesno "Would you like to deploy or re-deploy the ${VDM_CONTAINER_TYPE^} container that you opened to edit?" --title "Deploy or Re-Deploy Container" 8 112); then
# then we enable it
enableContainer "${VDM_CONTAINER_TYPE}"
fi
fi
fi
}
@ -1969,6 +1983,9 @@ function showHelpMenu() {
menu_options+=("command-help" "Help with commands")
# Show folder paths
menu_options+=("important-paths" "Important paths")
# Edit the global config
[ -f "${VDM_SRC_PATH}/.env" ] &&
menu_options+=("edit-config" "Edit Config") && i=$((i + 1))
# Report an Issue
menu_options+=("report-issue" "Report an issue")
# Update the whole script
@ -1992,6 +2009,9 @@ function showHelpMenu() {
"important-paths")
showImportantPaths
;;
"edit-config")
editConfigFile
;;
"report-issue")
showLink "https://git.vdm.dev/octoleo/docker-deploy/issues" "To report an issue go to:" "Report an Issue"
;;
@ -2112,17 +2132,17 @@ function mainMenu() {
# show error
function showError() {
whiptail --title "ERROR | ${PROGRAM_NAME} v${_V}" --msgbox "${1}" 12 112
whiptail --title "ERROR | ${PROGRAM_NAME} v${_V}" --msgbox "${1}" "${2:-12}" 112
}
# show info
function showInfo() {
whiptail --title "INFO | ${PROGRAM_NAME} v${_V}" --infobox "${1}" 12 112
whiptail --title "INFO | ${PROGRAM_NAME} v${_V}" --infobox "${1}" "${2:-12}" 112
}
# show notice
function showNotice() {
whiptail --title "NOTICE | ${PROGRAM_NAME} v${_V}" --msgbox "${1}" 12 112
whiptail --title "NOTICE | ${PROGRAM_NAME} v${_V}" --msgbox "${1}" "${2:-12}" 112
}
# show link
@ -2360,7 +2380,7 @@ function getListDomains() {
# build the menu
for domain in "${domains[@]}"; do
# load the back menu
menu_options+=("${domain}")
[ "${#domain}" -ge 1 ] && menu_options+=("${domain}")
done
# we show a list of options including the option to add another
# shellcheck disable=SC2005
@ -2380,52 +2400,66 @@ function getMultiDomain() {
local i=0
# always add the main domain or (default) first
# so we should always have a selection
setMultiDomain "${VDM_DOMAIN:-${USER:-joomla}.vdm}"
saveMultiDomain "${VDM_DOMAIN}"
# now clear the main domain (in case we use getDomain)
unset VDM_DOMAIN
# get existing domains
if [ -f "${VDM_SRC_PATH}/.domains" ] && readarray -t domains <"${VDM_SRC_PATH}/.domains"; then
# build the menu
if [ "${#domains[@]}" -gt 0 ]; then
# loop domains
for domain in "${domains[@]}"; do
# load the back menu
menu_options+=("${domain}" "${domain}" "OFF")
# load the domain if it has a length
[ "${#domain}" -ge 1 ] && menu_options+=("${domain}" "${domain}" "OFF")
# increment our counter
i=$((i + 1))
[ "${#domain}" -ge 1 ] && i=$((i + 1))
done
# we show a list of options including the option to add another
domain_name=$(whiptail --title "Select a Domain" --radiolist --nocancel --notags \
"Select a domain, or none to add another." 30 80 $i \
"${menu_options[@]}" 3>&1 1>&2 2>&3)
# make sure we have domains
if [ "${#menu_options[@]}" -gt 0 ]; then
# we show a list of options including the option to add another
domain_name=$(whiptail --title "Select a Domain" --radiolist --nocancel --notags \
"Select a domain, or none to add another." 30 80 $i \
"${menu_options[@]}" 3>&1 1>&2 2>&3)
fi
fi
fi
# check if we have a selection
if [ "${domain_name:-none}" = 'none' ]; then
# we must let them enter the new domain name
domain_name=$(getDomain "Enter a domain name" "Enter a Domain Name")
getDomain 'Enter a domain name' 'Enter a Domain Name'
else
# set the new main domain
VDM_DOMAIN="${domain_name}"
# update the main domain
export VDM_DOMAIN
fi
# add for next time
setMultiDomain "${domain_name:-${USER:-joomla}.vdm}"
# update the main domain
echo "${domain_name:-${USER:-joomla}.vdm}"
saveMultiDomain "${VDM_DOMAIN}"
}
# set the VDM domain value
function getDomain() {
# set some locals
local message="Enter main domain name"
local title="Enter Main Domain"
local tld="${VDM_CONTAINER_TYPE:-vdm}"
# get the arg passed if any
message="${1:-$message}"
title="${2:-$title}"
# get the VDM Domain value if not already set
while [ ${#VDM_DOMAIN} -le 1 ] || [[ "${VDM_DOMAIN}" != *.* ]]; do
# get the value
VDM_DOMAIN=$(getInput "${1:-Enter main domain name.}\n[must have at least one dot]" \
"${3:-${USER:-joomla}.vdm}" "${2:-Enter Main Domain}")
VDM_DOMAIN=$(getInput "${message}\n[must have at least one dot]" \
"${USER:-octoleo}.${tld,,}" "${title}")
# keep asking if empty or does exist
if [ ${#VDM_DOMAIN} -le 1 ]; then
showError "${4:-You must enter a domain name!}"
showError "You must enter a domain name!"
elif [[ "${VDM_DOMAIN}" != *.* ]]; then
showError "${5:-You must enter a domain name with at least one dot!}"
showError "You must enter a domain name with at least one dot"
fi
done
# return what we found
echo "${VDM_DOMAIN}"
# update the main domain
export VDM_DOMAIN
}
# set the main domain
@ -2433,13 +2467,11 @@ function getMainDomain() {
# we first check if we have a main domain passed as command argument
if $VDM_ARG_DOMAIN; then
# if domain passed by arg we just return it
VDM_DOMAIN=$(getDomain "Enter a domain name" "Enter a Domain Name")
getDomain 'Enter a domain name' 'Enter a Domain Name'
else
# update the main domain with a selection
VDM_DOMAIN=$(getMultiDomain)
getMultiDomain
fi
# make sure it is available
export VDM_DOMAIN
}
# set the domain
@ -2457,11 +2489,9 @@ function setDomain() {
# set the main domain
function setMainDomain() {
# set the main domain if not set
VDM_DOMAIN=$(getDomain)
getDomain
# add this value if not set variable
setEnvVariable "VDM_DOMAIN=\"${VDM_DOMAIN}\""
# make sure it is available
export VDM_DOMAIN
}
# set the sub domain
@ -2471,10 +2501,10 @@ function setSubDomain() {
while [ ${#VDM_SUBDOMAIN} -le 1 ] || [[ "${VDM_SUBDOMAIN}" =~ [^a-zA-Z] ]] ||
[ -d "${VDM_REPO_PATH}/${3:-$VDM_CONTAINER_TYPE}/available/${VDM_SUBDOMAIN}.${VDM_DOMAIN}" ] ||
[ -d "${VDM_REPO_PATH}/${3:-$VDM_CONTAINER_TYPE}/available/${VDM_SUBDOMAIN%db}.${VDM_DOMAIN}" ] ||
[ "${VDM_SUBDOMAIN}" = "${2:-}" ]; do
[ "${VDM_SUBDOMAIN}" = "${2}" ]; do
# get the value
VDM_SUBDOMAIN=$(getInput "Enter sub-domain used for this ${VDM_CONTAINER_TYPE^} container.\n[Text with no spaces that is only alphabetical]" \
"${1:-}" 'Enter Sub-Domain')
"${1}" 'Enter Sub-Domain')
# keep asking if empty or does exist
if [ ${#VDM_SUBDOMAIN} -ge 1 ] && [ -d "${VDM_REPO_PATH}/${3:-$VDM_CONTAINER_TYPE}/available/${VDM_SUBDOMAIN}.${VDM_DOMAIN}" ] ||
[ -d "${VDM_REPO_PATH}/${3:-$VDM_CONTAINER_TYPE}/available/${VDM_SUBDOMAIN%db}.${VDM_DOMAIN}" ]; then
@ -2507,12 +2537,9 @@ function setMultiDomains() {
# now clear the main domain each time
unset VDM_DOMAIN
# we must let them enter the new domain name
domain_name=$(getDomain "Enter a domain name" "Enter a Domain Name")
getDomain 'Enter a domain name' 'Enter a Domain Name'
# add for next time
setMultiDomain "${domain_name:-${USER:-joomla}.vdm}" || {
# return an error
return $?
}
saveMultiDomain "${VDM_DOMAIN}"
# get the list of domains
list_domains=$(getListDomains "\n")
# update the question
@ -2521,35 +2548,17 @@ function setMultiDomains() {
fi
}
# to set a global multiple domain file and values
function setMultiDomain() {
# check if the env file exist
if [ -f "${VDM_SRC_PATH}/.domains" ]; then
grep -q "${1}" "${VDM_SRC_PATH}/.domains" || echo "${1}" >>"${VDM_SRC_PATH}/.domains"
elif (whiptail --yesno "Can we create the ${VDM_SRC_PATH}/.domains file" --title "Multi Domain File" 8 112); then
# make sure the folder exist
mkdir -p "${VDM_SRC_PATH}"
# so we creat the file
echo "${1}" >"${VDM_SRC_PATH}/.domains"
# make sure the permissions are secured
chmod 600 "${VDM_SRC_PATH}/.domains"
else
showError "The ${VDM_SRC_PATH}/.domains file does not exist. So ${1} could not be added!"
# we return false
return 12
fi
# we return true
return 0
}
# set the multi domain switch
function setMultiDomainSwitch() {
# Allow multiple domains
if [ "${VDM_MULTI_DOMAIN:-not}" = 'not' ]; then
# explain the pros and cons...
showNotice "The down side to allowing multiple domains is that you will need to select a main domain each time you setup a new container. The advantage is that you can have multiple domains ;)"
showNotice "Next you should make the selection of using a single or multiple domain setup.\n\n\
With multiple domain setups you will need to select a main domain each time you setup a new container.\n\
With a single domain setup you setup the main domain once, and then only need setup the subdomains\n\
with each new container."
# check the security switch
if (whiptail --yesno "Would you like to allow for multiple domains?" --defaultno --title "Allow Multi Domains" 8 112); then
if (whiptail --yesno "Would you like to use a multiple domains setup?" --defaultno --title "Allow Multi Domains" 8 112); then
# we set the secure switch
VDM_MULTI_DOMAIN=true
else
@ -2622,7 +2631,7 @@ function setUpdateHostFile() {
function setSecureState() {
if [ "${VDM_SECURE:-not}" = 'not' ]; then
# check the security switch
if (whiptail --yesno "Would you like to use Letsencrypt auto setup for your containers [only for server with public static IP]" --defaultno --title "Letsencrypt" 8 112); then
if (whiptail --yesno "Would you like to use Letsencrypt auto setup for your containers [ONLY for server with public static IP]" --defaultno --title "Letsencrypt" 8 112); then
# we set the secure switch
VDM_SECURE=true
else
@ -2723,6 +2732,35 @@ function allowEditHostFile() {
return 12
}
# to set a global multiple domain file and values
function saveMultiDomain() {
# set some locals
local domain_name
local src_path_domain
# set the domain and remove any whitespace
domain_name="$(echo -e "${1}" | tr -d '[:space:]')";
src_path_domain="${VDM_SRC_PATH}/.domains";
# check that we have a domain string
if [ ${#domain_name} -ge 1 ]; then
# check if the file exist
if [ -f "${src_path_domain}" ]; then
# check if its already set
if grep -L "${domain_name}" "${src_path_domain}"; then
echo "${domain_name}" >>"${src_path_domain}"
fi
else
# make sure the folder exist
mkdir -p "${VDM_SRC_PATH}"
# so we creat the file
echo "${domain_name}" >"${src_path_domain}"
# make sure the permissions are secured
chmod 600 "${src_path_domain}"
fi
fi
# we return true
return 0
}
# delete multiple domains
function deleteMultiDomains() {
# menu for dynamic addition
@ -2789,13 +2827,29 @@ function editHostFile() {
# check if we should add to host file
if allowEditHostFile; then
# if this container is enabled ask if it should be redeployed
if (whiptail --yesno "To edit the host file we need sudo privileges." --title "Give sudo Privileges" 8 112); then
if (whiptail --yesno "To edit the host file we need sudo privileges.\n[Only continue if you know what your doing!]" --title "Give sudo Privileges" 15 112); then
# give little heads-up
showNotice "${USER^}, to save the changes you've made or to just close the file again press:\n\n[ctrl+x] with nano on ubuntu." 13
# lets open the file with nano for now
sudo "${EDITOR:-nano}" /etc/hosts
fi
fi
}
# the manually edit the config file
function editConfigFile() {
# check if the file exist
if [ -f "${VDM_SRC_PATH}/.env" ]; then
# give little warning for less command ready people
if (whiptail --yesno "Only continue if you know what your doing!\n\n\
${USER^}, to save the changes you've made or to just close the file again press:\n\n\
[ctrl+x] with nano on ubuntu." --title "Continue to edit ${PROGRAM_NAME} global config." 15 112); then
# all direct edit of the global config file
"${EDITOR:-nano}" "${VDM_SRC_PATH}/.env"
fi
fi
}
#####################################################################################################################VDM
######################################## CLI MENU ʕ•ᴥ•ʔ