diff --git a/misc/build.func b/misc/build.func index a688e422..e97c6ecf 100644 --- a/misc/build.func +++ b/misc/build.func @@ -431,1295 +431,1295 @@ exit_script() { } # This function allows the user to configure advanced settings for the script. -# advanced_settings() { -# whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --msgbox --title "Here is an instructional tip:" "To make a selection, use the Spacebar." 8 58 -# whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --msgbox --title "Default distribution for $APP" "Default is: ${var_os} ${var_version} \n \nIf the default Linux distribution is not adhered to, script support will be discontinued. \n" 10 58 -# if [ "$var_os" != "alpine" ]; then -# var_default_os="${var_os}" -# var_os="" -# while [ -z "$var_os" ]; do -# if [ "$var_default_os" == "debian" ]; then -# if var_os=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DISTRIBUTION" --radiolist "Choose Distribution" 10 58 2 \ -# "debian" "" ON \ -# "ubuntu" "" OFF \ -# 3>&1 1>&2 2>&3); then -# if [ -n "$var_os" ]; then -# echo -e "${OS}${BOLD}${DGN}Operating System: ${BGN}$var_os${CL}" -# fi -# else -# exit_script -# fi -# fi -# if [ "$var_default_os" == "ubuntu" ]; then -# if var_os=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DISTRIBUTION" --radiolist "Choose Distribution" 10 58 2 \ -# "debian" "" OFF \ -# "ubuntu" "" ON \ -# 3>&1 1>&2 2>&3); then -# if [ -n "$var_os" ]; then -# echo -e "${OS}${BOLD}${DGN}Operating System: ${BGN}$var_os${CL}" -# fi -# else -# exit_script -# fi -# fi -# done -# fi - -# if [ "$var_os" == "debian" ]; then -# var_default_version="${var_version}" -# var_version="" -# while [ -z "$var_version" ]; do -# if [ "$var_default_version" == "11" ]; then -# if var_version=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DEBIAN VERSION" --radiolist "Choose Version" 10 58 2 \ -# "11" "Bullseye" ON \ -# "12" "Bookworm" OFF \ -# 3>&1 1>&2 2>&3); then -# if [ -n "$var_version" ]; then -# echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" -# fi -# else -# exit_script -# fi -# fi -# if [ "$var_default_version" == "12" ]; then -# if var_version=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DEBIAN VERSION" --radiolist "Choose Version" 10 58 2 \ -# "11" "Bullseye" OFF \ -# "12" "Bookworm" ON \ -# 3>&1 1>&2 2>&3); then -# if [ -n "$var_version" ]; then -# echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" -# fi -# else -# exit_script -# fi -# fi -# done -# fi - -# if [ "$var_os" == "ubuntu" ]; then -# var_default_version="${var_version}" -# var_version="" -# while [ -z "$var_version" ]; do -# if [ "$var_default_version" == "20.04" ]; then -# if var_version=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "UBUNTU VERSION" --radiolist "Choose Version" 10 58 4 \ -# "20.04" "Focal" ON \ -# "22.04" "Jammy" OFF \ -# "24.04" "Noble" OFF \ -# "24.10" "Oracular" OFF \ -# 3>&1 1>&2 2>&3); then -# if [ -n "$var_version" ]; then -# echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" -# fi -# else -# exit_script -# fi -# elif [ "$var_default_version" == "22.04" ]; then -# if var_version=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "UBUNTU VERSION" --radiolist "Choose Version" 10 58 4 \ -# "20.04" "Focal" OFF \ -# "22.04" "Jammy" ON \ -# "24.04" "Noble" OFF \ -# "24.10" "Oracular" OFF \ -# 3>&1 1>&2 2>&3); then -# if [ -n "$var_version" ]; then -# echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" -# fi -# else -# exit_script -# fi -# elif [ "$var_default_version" == "24.04" ]; then -# if var_version=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "UBUNTU VERSION" --radiolist "Choose Version" 10 58 4 \ -# "20.04" "Focal" OFF \ -# "22.04" "Jammy" OFF \ -# "24.04" "Noble" ON \ -# "24.10" "Oracular" OFF \ -# 3>&1 1>&2 2>&3); then -# if [ -n "$var_version" ]; then -# echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" -# fi -# else -# exit_script -# fi -# else -# if var_version=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "UBUNTU VERSION" --radiolist "Choose Version" 10 58 4 \ -# "20.04" "Focal" OFF \ -# "22.04" "Jammy" OFF \ -# "24.04" "Noble" OFF \ -# "24.10" "Oracular" ON \ -# 3>&1 1>&2 2>&3); then -# if [ -n "$var_version" ]; then -# echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" -# fi -# else -# exit_script -# fi -# fi -# done -# fi -# # Setting Default Tag for Advanced Settings -# TAGS="community-script-dev;${var_tags:-}" -# CT_DEFAULT_TYPE="${CT_TYPE}" -# CT_TYPE="" -# while [ -z "$CT_TYPE" ]; do -# if [ "$CT_DEFAULT_TYPE" == "1" ]; then -# if CT_TYPE=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "CONTAINER TYPE" --radiolist "Choose Type" 10 58 2 \ -# "1" "Unprivileged" ON \ -# "0" "Privileged" OFF \ -# 3>&1 1>&2 2>&3); then -# if [ -n "$CT_TYPE" ]; then -# CT_TYPE_DESC="Unprivileged" -# if [ "$CT_TYPE" -eq 0 ]; then -# CT_TYPE_DESC="Privileged" -# fi -# echo -e "${CONTAINERTYPE}${BOLD}${DGN}Container Type: ${BGN}$CT_TYPE_DESC${CL}" -# fi -# else -# exit_script -# fi -# fi -# if [ "$CT_DEFAULT_TYPE" == "0" ]; then -# if CT_TYPE=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "CONTAINER TYPE" --radiolist "Choose Type" 10 58 2 \ -# "1" "Unprivileged" OFF \ -# "0" "Privileged" ON \ -# 3>&1 1>&2 2>&3); then -# if [ -n "$CT_TYPE" ]; then -# CT_TYPE_DESC="Unprivileged" -# if [ "$CT_TYPE" -eq 0 ]; then -# CT_TYPE_DESC="Privileged" -# fi -# echo -e "${CONTAINERTYPE}${BOLD}${DGN}Container Type: ${BGN}$CT_TYPE_DESC${CL}" -# fi -# else -# exit_script -# fi -# fi -# done - -# while true; do -# if PW1=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --passwordbox "\nSet Root Password (needed for root ssh access)" 9 58 --title "PASSWORD (leave blank for automatic login)" 3>&1 1>&2 2>&3); then -# if [[ ! -z "$PW1" ]]; then -# if [[ "$PW1" == *" "* ]]; then -# whiptail --msgbox "Password cannot contain spaces. Please try again." 8 58 -# elif [ ${#PW1} -lt 5 ]; then -# whiptail --msgbox "Password must be at least 5 characters long. Please try again." 8 58 -# else -# if PW2=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --passwordbox "\nVerify Root Password" 9 58 --title "PASSWORD VERIFICATION" 3>&1 1>&2 2>&3); then -# if [[ "$PW1" == "$PW2" ]]; then -# PW="-password $PW1" -# echo -e "${VERIFYPW}${BOLD}${DGN}Root Password: ${BGN}********${CL}" -# break -# else -# whiptail --msgbox "Passwords do not match. Please try again." 8 58 -# fi -# else -# exit_script -# fi -# fi -# else -# PW1="Automatic Login" -# PW="" -# echo -e "${VERIFYPW}${BOLD}${DGN}Root Password: ${BGN}$PW1${CL}" -# break -# fi -# else -# exit_script -# fi -# done - -# if CT_ID=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set Container ID" 8 58 $NEXTID --title "CONTAINER ID" 3>&1 1>&2 2>&3); then -# if [ -z "$CT_ID" ]; then -# CT_ID="$NEXTID" -# echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}$CT_ID${CL}" -# else -# echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}$CT_ID${CL}" -# fi -# else -# exit -# fi - -# if CT_NAME=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set Hostname" 8 58 $NSAPP --title "HOSTNAME" 3>&1 1>&2 2>&3); then -# if [ -z "$CT_NAME" ]; then -# HN="$NSAPP" -# else -# HN=$(echo ${CT_NAME,,} | tr -d ' ') -# fi -# echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}$HN${CL}" -# else -# exit_script -# fi - -# if DISK_SIZE=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set Disk Size in GB" 8 58 $var_disk --title "DISK SIZE" 3>&1 1>&2 2>&3); then -# if [ -z "$DISK_SIZE" ]; then -# DISK_SIZE="$var_disk" -# echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE} GB${CL}" -# else -# if ! [[ $DISK_SIZE =~ $INTEGER ]]; then -# echo -e "{INFO}${HOLD}${RD} DISK SIZE MUST BE AN INTEGER NUMBER!${CL}" -# advanced_settings -# fi -# echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE} GB${CL}" -# fi -# else -# exit_script -# fi - -# if CORE_COUNT=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Allocate CPU Cores" 8 58 $var_cpu --title "CORE COUNT" 3>&1 1>&2 2>&3); then -# if [ -z "$CORE_COUNT" ]; then -# CORE_COUNT="$var_cpu" -# echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}$CORE_COUNT${CL}" -# else -# echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}$CORE_COUNT${CL}" -# fi -# else -# exit_script -# fi - -# if RAM_SIZE=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Allocate RAM in MiB" 8 58 $var_ram --title "RAM" 3>&1 1>&2 2>&3); then -# if [ -z "$RAM_SIZE" ]; then -# RAM_SIZE="$var_ram" -# echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE} MiB${CL}" -# else -# echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE} MiB${CL}" -# fi -# else -# exit_script -# fi - -# if BRG=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set a Bridge" 8 58 vmbr0 --title "BRIDGE" 3>&1 1>&2 2>&3); then -# if [ -z "$BRG" ]; then -# BRG="vmbr0" -# echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}" -# else -# echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}" -# fi -# else -# exit_script -# fi - -# while true; do -# NET=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set a Static IPv4 CIDR Address (/24)" 8 58 dhcp --title "IP ADDRESS" 3>&1 1>&2 2>&3) -# exit_status=$? -# if [ $exit_status -eq 0 ]; then -# if [ "$NET" = "dhcp" ]; then -# echo -e "${NETWORK}${BOLD}${DGN}IP Address: ${BGN}$NET${CL}" -# break -# else -# if [[ "$NET" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}/([0-9]|[1-2][0-9]|3[0-2])$ ]]; then -# echo -e "${NETWORK}${BOLD}${DGN}IP Address: ${BGN}$NET${CL}" -# break -# else -# whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --msgbox "$NET is an invalid IPv4 CIDR address. Please enter a valid IPv4 CIDR address or 'dhcp'" 8 58 -# fi -# fi -# else -# exit_script -# fi -# done - -# if [ "$NET" != "dhcp" ]; then -# while true; do -# GATE1=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Enter gateway IP address" 8 58 --title "Gateway IP" 3>&1 1>&2 2>&3) -# if [ -z "$GATE1" ]; then -# whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --msgbox "Gateway IP address cannot be empty" 8 58 -# elif [[ ! "$GATE1" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then -# whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --msgbox "Invalid IP address format" 8 58 -# else -# GATE=",gw=$GATE1" -# echo -e "${GATEWAY}${BOLD}${DGN}Gateway IP Address: ${BGN}$GATE1${CL}" -# break -# fi -# done -# else -# GATE="" -# echo -e "${GATEWAY}${BOLD}${DGN}Gateway IP Address: ${BGN}Default${CL}" -# fi - -# if [ "$var_os" == "alpine" ]; then -# APT_CACHER="" -# APT_CACHER_IP="" -# else -# if APT_CACHER_IP=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set APT-Cacher IP (leave blank for none)" 8 58 --title "APT-Cacher IP" 3>&1 1>&2 2>&3); then -# APT_CACHER="${APT_CACHER_IP:+yes}" -# echo -e "${NETWORK}${BOLD}${DGN}APT-Cacher IP Address: ${BGN}${APT_CACHER_IP:-Default}${CL}" -# else -# exit_script -# fi -# fi - -# if (whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --defaultno --title "IPv6" --yesno "Disable IPv6?" 10 58); then -# DISABLEIP6="yes" -# else -# DISABLEIP6="no" -# fi -# echo -e "${DISABLEIPV6}${BOLD}${DGN}Disable IPv6: ${BGN}$DISABLEIP6${CL}" - -# if MTU1=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set Interface MTU Size (leave blank for default [1500])" 8 58 --title "MTU SIZE" 3>&1 1>&2 2>&3); then -# if [ -z $MTU1 ]; then -# MTU1="Default" -# MTU="" -# else -# MTU=",mtu=$MTU1" -# fi -# echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}$MTU1${CL}" -# else -# exit_script -# fi - -# if SD=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set a DNS Search Domain (leave blank for HOST)" 8 58 --title "DNS Search Domain" 3>&1 1>&2 2>&3); then -# if [ -z $SD ]; then -# SX=Host -# SD="" -# else -# SX=$SD -# SD="-searchdomain=$SD" -# fi -# echo -e "${SEARCH}${BOLD}${DGN}DNS Search Domain: ${BGN}$SX${CL}" -# else -# exit_script -# fi - -# if NX=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set a DNS Server IP (leave blank for HOST)" 8 58 --title "DNS SERVER IP" 3>&1 1>&2 2>&3); then -# if [ -z $NX ]; then -# NX=Host -# NS="" -# else -# NS="-nameserver=$NX" -# fi -# echo -e "${NETWORK}${BOLD}${DGN}DNS Server IP Address: ${BGN}$NX${CL}" -# else -# exit_script -# fi - -# if MAC1=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set a MAC Address(leave blank for generated MAC)" 8 58 --title "MAC ADDRESS" 3>&1 1>&2 2>&3); then -# if [ -z $MAC1 ]; then -# MAC1="Default" -# MAC="" -# else -# MAC=",hwaddr=$MAC1" -# echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}$MAC1${CL}" -# fi -# else -# exit_script -# fi - -# if VLAN1=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set a Vlan(leave blank for no VLAN)" 8 58 --title "VLAN" 3>&1 1>&2 2>&3); then -# if [ -z $VLAN1 ]; then -# VLAN1="Default" -# VLAN="" -# else -# VLAN=",tag=$VLAN1" -# fi -# echo -e "${VLANTAG}${BOLD}${DGN}Vlan: ${BGN}$VLAN1${CL}" -# else -# exit_script -# fi - -# if ADV_TAGS=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set Custom Tags?[If you remove all, there will be no tags!]" 8 58 ${TAGS} --title "Advanced Tags" 3>&1 1>&2 2>&3); then -# if [ -n "${ADV_TAGS}" ]; then -# ADV_TAGS=$(echo "$ADV_TAGS" | tr -d '[:space:]') -# TAGS="${ADV_TAGS}" -# else -# TAGS=";" -# fi -# echo -e "${NETWORK}${BOLD}${DGN}Tags: ${BGN}$TAGS${CL}" -# else -# exit_script -# fi - -# if [[ "$PW" == -password* ]]; then -# if (whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --defaultno --title "SSH ACCESS" --yesno "Enable Root SSH Access?" 10 58); then -# SSH="yes" -# else -# SSH="no" -# fi -# echo -e "${ROOTSSH}${BOLD}${DGN}Root SSH Access: ${BGN}$SSH${CL}" -# else -# SSH="no" -# echo -e "${ROOTSSH}${BOLD}${DGN}Root SSH Access: ${BGN}$SSH${CL}" -# fi - -# if [[ "${SSH}" == "yes" ]]; then -# SSH_AUTHORIZED_KEY="$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "SSH Authorized key for root (leave empty for none)" 8 58 --title "SSH Key" 3>&1 1>&2 2>&3)" - -# if [[ -z "${SSH_AUTHORIZED_KEY}" ]]; then -# echo "Warning: No SSH key provided." -# fi -# else -# SSH_AUTHORIZED_KEY="" -# fi - -# if (whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --defaultno --title "FUSE Support" --yesno "Enable FUSE (Filesystem in Userspace) support in the container?" 10 58); then -# ENABLE_FUSE="yes" -# else -# ENABLE_FUSE="no" -# fi -# echo -e "${FUSE}${BOLD}${DGN}FUSE (Filesystem in Userspace) Support: ${BGN}$ENABLE_FUSE${CL}" - -# if (whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --defaultno --title "VERBOSE MODE" --yesno "Enable Verbose Mode?" 10 58); then -# VERB="yes" -# else -# VERB="no" -# fi -# echo -e "${SEARCH}${BOLD}${DGN}Verbose Mode: ${BGN}$VERB${CL}" - -# if (whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create ${APP} LXC?" 10 58); then -# echo -e "${CREATING}${BOLD}${RD}Creating a ${APP} LXC using the above advanced settings${CL}" -# else -# clear -# header_info -# echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings on node $PVEHOST_NAME${CL}" -# advanced_settings -# fi -# } - -dialog_input() { - local title="$1" - local prompt="$2" - local default="$3" - local result - apt-get install -y dialog - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "$title" \ - --extra-button --extra-label "Back" \ - --ok-label "Next" --cancel-label "Exit" \ - --inputbox "$prompt" 10 58 "$default" 2>&1 >/dev/tty) - - local exitcode=$? - - case $exitcode in - 0) - REPLY_RESULT="$result" - return 0 - ;; # OK - 3) return 2 ;; # Back - *) return 1 ;; # Cancel/Exit - esac -} - advanced_settings() { - local step=1 - - while true; do - case $step in - 1) - show_intro_messages && ((step++)) - ;; - 2) - select_distribution - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 3) - select_version - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 4) - select_container_type - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 5) - set_root_password - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 6) - set_container_id - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 7) - set_hostname - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 8) - set_disk_size - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 9) - set_cpu_cores - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 10) - set_ram_size - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 11) - set_bridge - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 12) - set_ip_address - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 13) - set_gateway - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 14) - set_apt_cacher - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 15) - toggle_ipv6 - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 16) - set_mtu - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 17) - set_dns_search_domain - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 18) - set_dns_server - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 19) - set_mac_address - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 20) - set_vlan - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 21) - set_tags - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 22) - set_ssh_access - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 23) - set_fuse - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 24) - set_verbose - result=$? - [[ $result -eq 0 ]] && ((step++)) - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - 25) - confirm_creation - result=$? - [[ $result -eq 0 ]] && break - [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) - [[ $result -eq 1 ]] && return - ;; - esac - done -} - -show_intro_messages() { - dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "Instructional Tip" \ - --msgbox "To make a selection, use the Spacebar." 8 58 || return 1 - - dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "Default distribution for $APP" \ - --msgbox "Default is: ${var_os} ${var_version}\n\nIf the default Linux distribution is not adhered to, script support will be discontinued." 10 58 || return 1 - return 0 -} - -select_distribution() { - [[ "$var_os" == "alpine" ]] && return 0 - - local default result exitcode - default="${var_os:-debian}" - var_os="" - - local debian_flag ubuntu_flag - [[ "$default" == "debian" ]] && debian_flag="on" || debian_flag="off" - [[ "$default" == "ubuntu" ]] && ubuntu_flag="on" || ubuntu_flag="off" - - while [[ -z "$var_os" ]]; do - exec 3>&1 - result=$(dialog --clear \ - --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "DISTRIBUTION" \ - --radiolist "Choose Distribution:" 15 60 4 \ - "debian" "" "$debian_flag" \ - "ubuntu" "" "$ubuntu_flag" \ - --ok-label "Next" \ - --cancel-label "Exit" \ - --extra-button \ - --extra-label "Back" \ - 2>&1 1>&3) - exitcode=$? - exec 3>&- - - case "$exitcode" in - 0) - if [[ "$result" =~ ^(debian|ubuntu)$ ]]; then - var_os="$result" - printf "%bOperating System: %b%s%b\n" "$OS$BOLD$DGN" "$BGN" "$var_os" "$CL" - return 0 - else - printf "[DEBUG] No valid selection made (result='%s'), repeating...\n" "$result" + whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --msgbox --title "Here is an instructional tip:" "To make a selection, use the Spacebar." 8 58 + whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --msgbox --title "Default distribution for $APP" "Default is: ${var_os} ${var_version} \n \nIf the default Linux distribution is not adhered to, script support will be discontinued. \n" 10 58 + if [ "$var_os" != "alpine" ]; then + var_default_os="${var_os}" + var_os="" + while [ -z "$var_os" ]; do + if [ "$var_default_os" == "debian" ]; then + if var_os=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DISTRIBUTION" --radiolist "Choose Distribution" 10 58 2 \ + "debian" "" ON \ + "ubuntu" "" OFF \ + 3>&1 1>&2 2>&3); then + if [ -n "$var_os" ]; then + echo -e "${OS}${BOLD}${DGN}Operating System: ${BGN}$var_os${CL}" + fi + else + exit_script + fi fi - ;; - 3) - return 2 - ;; - 1 | 255) - return 1 - ;; - *) - printf "[DEBUG] Unexpected exit code: %s\n" "$exitcode" >&2 - return 1 - ;; - esac - done -} - -select_version() { - local default="${var_version}" - var_version="" - local list result exitcode - - if [[ "$var_os" == "debian" ]]; then - case "$default" in - 11) list=("11" "Bullseye" on "12" "Bookworm" off) ;; - 12) list=("11" "Bullseye" off "12" "Bookworm" on) ;; - *) list=("11" "Bullseye" off "12" "Bookworm" off) ;; - esac - elif [[ "$var_os" == "ubuntu" ]]; then - case "$default" in - 20.04) list=("20.04" "Focal" on "22.04" "Jammy" off "24.04" "Noble" off "24.10" "Oracular" off) ;; - 22.04) list=("20.04" "Focal" off "22.04" "Jammy" on "24.04" "Noble" off "24.10" "Oracular" off) ;; - 24.04) list=("20.04" "Focal" off "22.04" "Jammy" off "24.04" "Noble" on "24.10" "Oracular" off) ;; - 24.10) list=("20.04" "Focal" off "22.04" "Jammy" off "24.04" "Noble" off "24.10" "Oracular" on) ;; - *) list=("20.04" "Focal" off "22.04" "Jammy" off "24.04" "Noble" off "24.10" "Oracular" off) ;; - esac + if [ "$var_default_os" == "ubuntu" ]; then + if var_os=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DISTRIBUTION" --radiolist "Choose Distribution" 10 58 2 \ + "debian" "" OFF \ + "ubuntu" "" ON \ + 3>&1 1>&2 2>&3); then + if [ -n "$var_os" ]; then + echo -e "${OS}${BOLD}${DGN}Operating System: ${BGN}$var_os${CL}" + fi + else + exit_script + fi + fi + done fi - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "VERSION" \ - --radiolist "Choose Version:" 15 58 5 \ - "${list[@]}" \ - --ok-label "Next" \ - --cancel-label "Exit" \ - --extra-button --extra-label "Back" \ - 3>&1 1>&2 2>&3) + if [ "$var_os" == "debian" ]; then + var_default_version="${var_version}" + var_version="" + while [ -z "$var_version" ]; do + if [ "$var_default_version" == "11" ]; then + if var_version=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DEBIAN VERSION" --radiolist "Choose Version" 10 58 2 \ + "11" "Bullseye" ON \ + "12" "Bookworm" OFF \ + 3>&1 1>&2 2>&3); then + if [ -n "$var_version" ]; then + echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" + fi + else + exit_script + fi + fi + if [ "$var_default_version" == "12" ]; then + if var_version=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "DEBIAN VERSION" --radiolist "Choose Version" 10 58 2 \ + "11" "Bullseye" OFF \ + "12" "Bookworm" ON \ + 3>&1 1>&2 2>&3); then + if [ -n "$var_version" ]; then + echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" + fi + else + exit_script + fi + fi + done + fi - exitcode=$? - - case $exitcode in - 0) - var_version="$result" - printf "%bVersion: %b%s%b\n" "$OSVERSION$BOLD$DGN" "$BGN" "$var_version" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} - -select_container_type() { - local default="${CT_TYPE}" + if [ "$var_os" == "ubuntu" ]; then + var_default_version="${var_version}" + var_version="" + while [ -z "$var_version" ]; do + if [ "$var_default_version" == "20.04" ]; then + if var_version=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "UBUNTU VERSION" --radiolist "Choose Version" 10 58 4 \ + "20.04" "Focal" ON \ + "22.04" "Jammy" OFF \ + "24.04" "Noble" OFF \ + "24.10" "Oracular" OFF \ + 3>&1 1>&2 2>&3); then + if [ -n "$var_version" ]; then + echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" + fi + else + exit_script + fi + elif [ "$var_default_version" == "22.04" ]; then + if var_version=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "UBUNTU VERSION" --radiolist "Choose Version" 10 58 4 \ + "20.04" "Focal" OFF \ + "22.04" "Jammy" ON \ + "24.04" "Noble" OFF \ + "24.10" "Oracular" OFF \ + 3>&1 1>&2 2>&3); then + if [ -n "$var_version" ]; then + echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" + fi + else + exit_script + fi + elif [ "$var_default_version" == "24.04" ]; then + if var_version=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "UBUNTU VERSION" --radiolist "Choose Version" 10 58 4 \ + "20.04" "Focal" OFF \ + "22.04" "Jammy" OFF \ + "24.04" "Noble" ON \ + "24.10" "Oracular" OFF \ + 3>&1 1>&2 2>&3); then + if [ -n "$var_version" ]; then + echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" + fi + else + exit_script + fi + else + if var_version=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "UBUNTU VERSION" --radiolist "Choose Version" 10 58 4 \ + "20.04" "Focal" OFF \ + "22.04" "Jammy" OFF \ + "24.04" "Noble" OFF \ + "24.10" "Oracular" ON \ + 3>&1 1>&2 2>&3); then + if [ -n "$var_version" ]; then + echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" + fi + else + exit_script + fi + fi + done + fi + # Setting Default Tag for Advanced Settings + TAGS="community-script-dev;${var_tags:-}" + CT_DEFAULT_TYPE="${CT_TYPE}" CT_TYPE="" - local list result exitcode - - [[ "$default" == "1" ]] && list=("1" "Unprivileged" on "0" "Privileged" off) || list=("1" "Unprivileged" off "0" "Privileged" on) - - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "CONTAINER TYPE" \ - --radiolist "Choose Type:" 10 58 2 "${list[@]}" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - - exitcode=$? - - case $exitcode in - 0) - CT_TYPE="$result" - [[ "$CT_TYPE" == "0" ]] && desc="Privileged" || desc="Unprivileged" - printf "%bContainer Type: %b%s%b\n" "$CONTAINERTYPE$BOLD$DGN" "$BGN" "$desc" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} -set_root_password() { - local pw1 pw2 exitcode + while [ -z "$CT_TYPE" ]; do + if [ "$CT_DEFAULT_TYPE" == "1" ]; then + if CT_TYPE=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "CONTAINER TYPE" --radiolist "Choose Type" 10 58 2 \ + "1" "Unprivileged" ON \ + "0" "Privileged" OFF \ + 3>&1 1>&2 2>&3); then + if [ -n "$CT_TYPE" ]; then + CT_TYPE_DESC="Unprivileged" + if [ "$CT_TYPE" -eq 0 ]; then + CT_TYPE_DESC="Privileged" + fi + echo -e "${CONTAINERTYPE}${BOLD}${DGN}Container Type: ${BGN}$CT_TYPE_DESC${CL}" + fi + else + exit_script + fi + fi + if [ "$CT_DEFAULT_TYPE" == "0" ]; then + if CT_TYPE=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "CONTAINER TYPE" --radiolist "Choose Type" 10 58 2 \ + "1" "Unprivileged" OFF \ + "0" "Privileged" ON \ + 3>&1 1>&2 2>&3); then + if [ -n "$CT_TYPE" ]; then + CT_TYPE_DESC="Unprivileged" + if [ "$CT_TYPE" -eq 0 ]; then + CT_TYPE_DESC="Privileged" + fi + echo -e "${CONTAINERTYPE}${BOLD}${DGN}Container Type: ${BGN}$CT_TYPE_DESC${CL}" + fi + else + exit_script + fi + fi + done while true; do - pw1=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "PASSWORD (leave blank for automatic login)" \ - --insecure --passwordbox "\nSet Root Password (needed for root ssh access)" 10 58 \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - if [[ -z "$pw1" ]]; then + if PW1=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --passwordbox "\nSet Root Password (needed for root ssh access)" 9 58 --title "PASSWORD (leave blank for automatic login)" 3>&1 1>&2 2>&3); then + if [[ ! -z "$PW1" ]]; then + if [[ "$PW1" == *" "* ]]; then + whiptail --msgbox "Password cannot contain spaces. Please try again." 8 58 + elif [ ${#PW1} -lt 5 ]; then + whiptail --msgbox "Password must be at least 5 characters long. Please try again." 8 58 + else + if PW2=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --passwordbox "\nVerify Root Password" 9 58 --title "PASSWORD VERIFICATION" 3>&1 1>&2 2>&3); then + if [[ "$PW1" == "$PW2" ]]; then + PW="-password $PW1" + echo -e "${VERIFYPW}${BOLD}${DGN}Root Password: ${BGN}********${CL}" + break + else + whiptail --msgbox "Passwords do not match. Please try again." 8 58 + fi + else + exit_script + fi + fi + else PW1="Automatic Login" PW="" - printf "%bRoot Password: %b%s%b\n" "$VERIFYPW$BOLD$DGN" "$BGN" "$PW1" "$CL" - return 0 + echo -e "${VERIFYPW}${BOLD}${DGN}Root Password: ${BGN}$PW1${CL}" + break fi - if [[ "$pw1" == *" "* ]]; then - dialog --msgbox "Password cannot contain spaces. Please try again." 8 58 - continue - fi - if [[ ${#pw1} -lt 5 ]]; then - dialog --msgbox "Password must be at least 5 characters long. Please try again." 8 58 - continue - fi - pw2=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "PASSWORD VERIFICATION" \ - --insecure --passwordbox "\nVerify Root Password" 10 58 \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - case $exitcode in - 0) - if [[ "$pw1" == "$pw2" ]]; then - PW="-password $pw1" - printf "%bRoot Password: %b********%b\n" "$VERIFYPW$BOLD$DGN" "$BGN" "$CL" - return 0 - else - dialog --msgbox "Passwords do not match. Please try again." 8 58 - continue - fi - ;; - 3) return 2 ;; - *) return 1 ;; - esac - ;; - 3) return 2 ;; - *) return 1 ;; - esac + else + exit_script + fi done -} -set_container_id() { - local result exitcode - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "CONTAINER ID" \ - --inputbox "Set Container ID" 8 58 "$NEXTID" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? + if CT_ID=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set Container ID" 8 58 $NEXTID --title "CONTAINER ID" 3>&1 1>&2 2>&3); then + if [ -z "$CT_ID" ]; then + CT_ID="$NEXTID" + echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}$CT_ID${CL}" + else + echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}$CT_ID${CL}" + fi + else + exit + fi - case $exitcode in - 0) - CT_ID="${result:-$NEXTID}" - printf "%bContainer ID: %b%s%b\n" "$CONTAINERID$BOLD$DGN" "$BGN" "$CT_ID" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} - -set_hostname() { - local result exitcode - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "HOSTNAME" \ - --inputbox "Set Hostname" 8 58 "$NSAPP" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - if [[ -z "$result" ]]; then + if CT_NAME=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set Hostname" 8 58 $NSAPP --title "HOSTNAME" 3>&1 1>&2 2>&3); then + if [ -z "$CT_NAME" ]; then HN="$NSAPP" else - HN=$(tr -d ' ' <<<"${result,,}") + HN=$(echo ${CT_NAME,,} | tr -d ' ') fi - printf "%bHostname: %b%s%b\n" "$HOSTNAME$BOLD$DGN" "$BGN" "$HN" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} + echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}$HN${CL}" + else + exit_script + fi -set_disk_size() { - local result exitcode - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "DISK SIZE" \ - --inputbox "Set Disk Size in GB" 8 58 "$var_disk" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - if [[ -z "$result" ]]; then + if DISK_SIZE=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set Disk Size in GB" 8 58 $var_disk --title "DISK SIZE" 3>&1 1>&2 2>&3); then + if [ -z "$DISK_SIZE" ]; then DISK_SIZE="$var_disk" - elif [[ "$result" =~ ^[0-9]+$ ]]; then - DISK_SIZE="$result" + echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE} GB${CL}" else - dialog --msgbox "Disk size must be an integer!" 8 58 - return 2 - fi - printf "%bDisk Size: %b%s GB%b\n" "$DISKSIZE$BOLD$DGN" "$BGN" "$DISK_SIZE" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} - -set_cpu_cores() { - local result exitcode - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "CORE COUNT" \ - --inputbox "Allocate CPU Cores" 8 58 "$var_cpu" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - CORE_COUNT="${result:-$var_cpu}" - printf "%bCPU Cores: %b%s%b\n" "$CPUCORE$BOLD$DGN" "$BGN" "$CORE_COUNT" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} - -set_ram_size() { - local result exitcode - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "RAM" \ - --inputbox "Allocate RAM in MiB" 8 58 "$var_ram" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - RAM_SIZE="${result:-$var_ram}" - printf "%bRAM Size: %b%s MiB%b\n" "$RAMSIZE$BOLD$DGN" "$BGN" "$RAM_SIZE" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} - -set_bridge() { - local result exitcode - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "BRIDGE" \ - --inputbox "Set a Bridge" 8 58 "vmbr0" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - BRG="${result:-vmbr0}" - printf "%bBridge: %b%s%b\n" "$BRIDGE$BOLD$DGN" "$BGN" "$BRG" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} - -set_ip_address() { - local result exitcode - while true; do - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "IP ADDRESS" \ - --inputbox "Set a Static IPv4 CIDR Address (/24)" 8 58 "dhcp" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - if [[ "$result" == "dhcp" ]]; then - NET="dhcp" - printf "%bIP Address: %b%s%b\n" "$NETWORK$BOLD$DGN" "$BGN" "$NET" "$CL" - return 0 - elif [[ "$result" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}/([0-9]|[1-2][0-9]|3[0-2])$ ]]; then - NET="$result" - printf "%bIP Address: %b%s%b\n" "$NETWORK$BOLD$DGN" "$BGN" "$NET" "$CL" - return 0 - else - dialog --msgbox "$result is an invalid IPv4 CIDR address. Please enter a valid address or 'dhcp'." 8 58 - continue + if ! [[ $DISK_SIZE =~ $INTEGER ]]; then + echo -e "{INFO}${HOLD}${RD} DISK SIZE MUST BE AN INTEGER NUMBER!${CL}" + advanced_settings fi - ;; - 3) return 2 ;; - *) return 1 ;; - esac - done -} + echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE} GB${CL}" + fi + else + exit_script + fi -set_gateway() { - local result exitcode - if [[ "$NET" == "dhcp" ]]; then - GATE="" - printf "%bGateway IP Address: %bDefault%b\n" "$GATEWAY$BOLD$DGN" "$BGN" "$CL" - return 0 + if CORE_COUNT=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Allocate CPU Cores" 8 58 $var_cpu --title "CORE COUNT" 3>&1 1>&2 2>&3); then + if [ -z "$CORE_COUNT" ]; then + CORE_COUNT="$var_cpu" + echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}$CORE_COUNT${CL}" + else + echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}$CORE_COUNT${CL}" + fi + else + exit_script + fi + + if RAM_SIZE=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Allocate RAM in MiB" 8 58 $var_ram --title "RAM" 3>&1 1>&2 2>&3); then + if [ -z "$RAM_SIZE" ]; then + RAM_SIZE="$var_ram" + echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE} MiB${CL}" + else + echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE} MiB${CL}" + fi + else + exit_script + fi + + if BRG=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set a Bridge" 8 58 vmbr0 --title "BRIDGE" 3>&1 1>&2 2>&3); then + if [ -z "$BRG" ]; then + BRG="vmbr0" + echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}" + else + echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}" + fi + else + exit_script fi while true; do - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "Gateway IP" \ - --inputbox "Enter gateway IP address" 8 58 \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - if [[ -z "$result" ]]; then - dialog --msgbox "Gateway IP address cannot be empty" 8 58 - continue - elif [[ "$result" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then - GATE=",gw=$result" - printf "%bGateway IP Address: %b%s%b\n" "$GATEWAY$BOLD$DGN" "$BGN" "$result" "$CL" - return 0 + NET=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set a Static IPv4 CIDR Address (/24)" 8 58 dhcp --title "IP ADDRESS" 3>&1 1>&2 2>&3) + exit_status=$? + if [ $exit_status -eq 0 ]; then + if [ "$NET" = "dhcp" ]; then + echo -e "${NETWORK}${BOLD}${DGN}IP Address: ${BGN}$NET${CL}" + break else - dialog --msgbox "Invalid IP address format" 8 58 + if [[ "$NET" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}/([0-9]|[1-2][0-9]|3[0-2])$ ]]; then + echo -e "${NETWORK}${BOLD}${DGN}IP Address: ${BGN}$NET${CL}" + break + else + whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --msgbox "$NET is an invalid IPv4 CIDR address. Please enter a valid IPv4 CIDR address or 'dhcp'" 8 58 + fi fi - ;; - 3) return 2 ;; - *) return 1 ;; - esac + else + exit_script + fi done -} -set_apt_cacher() { - local result exitcode - if [[ "$var_os" == "alpine" ]]; then + if [ "$NET" != "dhcp" ]; then + while true; do + GATE1=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Enter gateway IP address" 8 58 --title "Gateway IP" 3>&1 1>&2 2>&3) + if [ -z "$GATE1" ]; then + whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --msgbox "Gateway IP address cannot be empty" 8 58 + elif [[ ! "$GATE1" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then + whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --msgbox "Invalid IP address format" 8 58 + else + GATE=",gw=$GATE1" + echo -e "${GATEWAY}${BOLD}${DGN}Gateway IP Address: ${BGN}$GATE1${CL}" + break + fi + done + else + GATE="" + echo -e "${GATEWAY}${BOLD}${DGN}Gateway IP Address: ${BGN}Default${CL}" + fi + + if [ "$var_os" == "alpine" ]; then APT_CACHER="" APT_CACHER_IP="" - return 0 + else + if APT_CACHER_IP=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set APT-Cacher IP (leave blank for none)" 8 58 --title "APT-Cacher IP" 3>&1 1>&2 2>&3); then + APT_CACHER="${APT_CACHER_IP:+yes}" + echo -e "${NETWORK}${BOLD}${DGN}APT-Cacher IP Address: ${BGN}${APT_CACHER_IP:-Default}${CL}" + else + exit_script + fi fi - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "APT-Cacher IP" \ - --inputbox "Set APT-Cacher IP (leave blank for none)" 8 58 \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? + if (whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --defaultno --title "IPv6" --yesno "Disable IPv6?" 10 58); then + DISABLEIP6="yes" + else + DISABLEIP6="no" + fi + echo -e "${DISABLEIPV6}${BOLD}${DGN}Disable IPv6: ${BGN}$DISABLEIP6${CL}" - case $exitcode in - 0) - APT_CACHER_IP="$result" - APT_CACHER="${APT_CACHER_IP:+yes}" - printf "%bAPT-Cacher IP Address: %b%s%b\n" "$NETWORK$BOLD$DGN" "$BGN" "${APT_CACHER_IP:-Default}" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} - -toggle_ipv6() { - dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "IPv6" \ - --yesno "Disable IPv6?" 10 58 \ - --extra-button --extra-label "Back" --ok-label "Yes" --cancel-label "No" - case $? in - 0) DISABLEIP6="yes" ;; - 1) DISABLEIP6="no" ;; - 3) return 2 ;; - *) return 1 ;; - esac - printf "%bDisable IPv6: %b%s%b\n" "$DISABLEIPV6$BOLD$DGN" "$BGN" "$DISABLEIP6" "$CL" - return 0 -} -set_mtu() { - local result exitcode - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "MTU SIZE" \ - --inputbox "Set Interface MTU Size (leave blank for default [1500])" 8 58 "" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - if [[ -z "$result" ]]; then + if MTU1=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set Interface MTU Size (leave blank for default [1500])" 8 58 --title "MTU SIZE" 3>&1 1>&2 2>&3); then + if [ -z $MTU1 ]; then MTU1="Default" MTU="" else - MTU1="$result" MTU=",mtu=$MTU1" fi - printf "%bInterface MTU Size: %b%s%b\n" "$DEFAULT$BOLD$DGN" "$BGN" "$MTU1" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} + echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}$MTU1${CL}" + else + exit_script + fi -set_dns_search_domain() { - local result exitcode - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "DNS Search Domain" \ - --inputbox "Set a DNS Search Domain (leave blank for HOST)" 8 58 "" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - if [[ -z "$result" ]]; then - SX="Host" + if SD=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set a DNS Search Domain (leave blank for HOST)" 8 58 --title "DNS Search Domain" 3>&1 1>&2 2>&3); then + if [ -z $SD ]; then + SX=Host SD="" else - SX="$result" - SD="-searchdomain=$result" + SX=$SD + SD="-searchdomain=$SD" fi - printf "%bDNS Search Domain: %b%s%b\n" "$SEARCH$BOLD$DGN" "$BGN" "$SX" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} + echo -e "${SEARCH}${BOLD}${DGN}DNS Search Domain: ${BGN}$SX${CL}" + else + exit_script + fi -set_dns_server() { - local result exitcode - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "DNS SERVER IP" \ - --inputbox "Set a DNS Server IP (leave blank for HOST)" 8 58 "" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - if [[ -z "$result" ]]; then - NX="Host" + if NX=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set a DNS Server IP (leave blank for HOST)" 8 58 --title "DNS SERVER IP" 3>&1 1>&2 2>&3); then + if [ -z $NX ]; then + NX=Host NS="" else - NX="$result" - NS="-nameserver=$result" + NS="-nameserver=$NX" fi - printf "%bDNS Server IP Address: %b%s%b\n" "$NETWORK$BOLD$DGN" "$BGN" "$NX" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} + echo -e "${NETWORK}${BOLD}${DGN}DNS Server IP Address: ${BGN}$NX${CL}" + else + exit_script + fi -set_mac_address() { - local result exitcode - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "MAC ADDRESS" \ - --inputbox "Set a MAC Address (leave blank for generated MAC)" 8 58 "" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - if [[ -z "$result" ]]; then + if MAC1=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set a MAC Address(leave blank for generated MAC)" 8 58 --title "MAC ADDRESS" 3>&1 1>&2 2>&3); then + if [ -z $MAC1 ]; then MAC1="Default" MAC="" else - MAC1="$result" MAC=",hwaddr=$MAC1" + echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}$MAC1${CL}" fi - printf "%bMAC Address: %b%s%b\n" "$MACADDRESS$BOLD$DGN" "$BGN" "$MAC1" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} + else + exit_script + fi -set_vlan() { - local result exitcode - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "VLAN" \ - --inputbox "Set a VLAN (leave blank for no VLAN)" 8 58 "" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - if [[ -z "$result" ]]; then + if VLAN1=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set a Vlan(leave blank for no VLAN)" 8 58 --title "VLAN" 3>&1 1>&2 2>&3); then + if [ -z $VLAN1 ]; then VLAN1="Default" VLAN="" else - VLAN1="$result" VLAN=",tag=$VLAN1" fi - printf "%bVlan: %b%s%b\n" "$VLANTAG$BOLD$DGN" "$BGN" "$VLAN1" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} + echo -e "${VLANTAG}${BOLD}${DGN}Vlan: ${BGN}$VLAN1${CL}" + else + exit_script + fi -set_tags() { - local result exitcode - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "Advanced Tags" \ - --inputbox "Set Custom Tags? [If you remove all, there will be no tags!]" 8 58 "$TAGS" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - - case $exitcode in - 0) - if [[ -n "$result" ]]; then - ADV_TAGS=$(tr -d '[:space:]' <<<"$result") - TAGS="$ADV_TAGS" + if ADV_TAGS=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "Set Custom Tags?[If you remove all, there will be no tags!]" 8 58 ${TAGS} --title "Advanced Tags" 3>&1 1>&2 2>&3); then + if [ -n "${ADV_TAGS}" ]; then + ADV_TAGS=$(echo "$ADV_TAGS" | tr -d '[:space:]') + TAGS="${ADV_TAGS}" else TAGS=";" fi - printf "%bTags: %b%s%b\n" "$NETWORK$BOLD$DGN" "$BGN" "$TAGS" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} - -set_ssh_access() { - local result exitcode + echo -e "${NETWORK}${BOLD}${DGN}Tags: ${BGN}$TAGS${CL}" + else + exit_script + fi if [[ "$PW" == -password* ]]; then - dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "SSH ACCESS" \ - --yesno "Enable Root SSH Access?" 10 58 \ - --extra-button --extra-label "Back" --ok-label "Yes" --cancel-label "No" - exitcode=$? - case $exitcode in - 0) SSH="yes" ;; - 1) SSH="no" ;; - 3) return 2 ;; - *) return 1 ;; - esac + if (whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --defaultno --title "SSH ACCESS" --yesno "Enable Root SSH Access?" 10 58); then + SSH="yes" + else + SSH="no" + fi + echo -e "${ROOTSSH}${BOLD}${DGN}Root SSH Access: ${BGN}$SSH${CL}" else SSH="no" + echo -e "${ROOTSSH}${BOLD}${DGN}Root SSH Access: ${BGN}$SSH${CL}" fi - printf "%bRoot SSH Access: %b%s%b\n" "$ROOTSSH$BOLD$DGN" "$BGN" "$SSH" "$CL" + if [[ "${SSH}" == "yes" ]]; then + SSH_AUTHORIZED_KEY="$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --inputbox "SSH Authorized key for root (leave empty for none)" 8 58 --title "SSH Key" 3>&1 1>&2 2>&3)" - if [[ "$SSH" == "yes" ]]; then - result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "SSH Key" \ - --inputbox "SSH Authorized key for root (leave empty for none)" 8 58 "" \ - --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) - exitcode=$? - case $exitcode in - 0) - SSH_AUTHORIZED_KEY="$result" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac + if [[ -z "${SSH_AUTHORIZED_KEY}" ]]; then + echo "Warning: No SSH key provided." + fi else SSH_AUTHORIZED_KEY="" - return 0 + fi + + if (whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --defaultno --title "FUSE Support" --yesno "Enable FUSE (Filesystem in Userspace) support in the container?" 10 58); then + ENABLE_FUSE="yes" + else + ENABLE_FUSE="no" + fi + echo -e "${FUSE}${BOLD}${DGN}FUSE (Filesystem in Userspace) Support: ${BGN}$ENABLE_FUSE${CL}" + + if (whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --defaultno --title "VERBOSE MODE" --yesno "Enable Verbose Mode?" 10 58); then + VERB="yes" + else + VERB="no" + fi + echo -e "${SEARCH}${BOLD}${DGN}Verbose Mode: ${BGN}$VERB${CL}" + + if (whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create ${APP} LXC?" 10 58); then + echo -e "${CREATING}${BOLD}${RD}Creating a ${APP} LXC using the above advanced settings${CL}" + else + clear + header_info + echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings on node $PVEHOST_NAME${CL}" + advanced_settings fi } -set_fuse() { - dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "FUSE Support" \ - --yesno "Enable FUSE (Filesystem in Userspace) support in the container?" 10 58 \ - --extra-button --extra-label "Back" --ok-label "Yes" --cancel-label "No" - case $? in - 0) ENABLE_FUSE="yes" ;; - 1) ENABLE_FUSE="no" ;; - 3) return 2 ;; - *) return 1 ;; - esac - printf "%bFUSE (Filesystem in Userspace) Support: %b%s%b\n" "$FUSE$BOLD$DGN" "$BGN" "$ENABLE_FUSE" "$CL" - return 0 -} +# dialog_input() { +# local title="$1" +# local prompt="$2" +# local default="$3" +# local result +# apt-get install -y dialog +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "$title" \ +# --extra-button --extra-label "Back" \ +# --ok-label "Next" --cancel-label "Exit" \ +# --inputbox "$prompt" 10 58 "$default" 2>&1 >/dev/tty) -set_verbose() { - dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "VERBOSE MODE" \ - --yesno "Enable Verbose Mode?" 10 58 \ - --extra-button --extra-label "Back" --ok-label "Yes" --cancel-label "No" - case $? in - 0) VERB="yes" ;; - 1) VERB="no" ;; - 3) return 2 ;; - *) return 1 ;; - esac - printf "%bVerbose Mode: %b%s%b\n" "$SEARCH$BOLD$DGN" "$BGN" "$VERB" "$CL" - return 0 -} +# local exitcode=$? -confirm_creation() { - dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ - --title "ADVANCED SETTINGS COMPLETE" \ - --yesno "Ready to create ${APP} LXC?" 10 58 \ - --extra-button --extra-label "Back" --ok-label "Yes" --cancel-label "No" - case $? in - 0) - printf "%bCreating a %s LXC using the above advanced settings%b\n" "$CREATING$BOLD$RD" "$APP" "$CL" - return 0 - ;; - 3) return 2 ;; - *) return 1 ;; - esac -} +# case $exitcode in +# 0) +# REPLY_RESULT="$result" +# return 0 +# ;; # OK +# 3) return 2 ;; # Back +# *) return 1 ;; # Cancel/Exit +# esac +# } + +# advanced_settings() { +# local step=1 + +# while true; do +# case $step in +# 1) +# show_intro_messages && ((step++)) +# ;; +# 2) +# select_distribution +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 3) +# select_version +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 4) +# select_container_type +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 5) +# set_root_password +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 6) +# set_container_id +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 7) +# set_hostname +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 8) +# set_disk_size +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 9) +# set_cpu_cores +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 10) +# set_ram_size +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 11) +# set_bridge +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 12) +# set_ip_address +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 13) +# set_gateway +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 14) +# set_apt_cacher +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 15) +# toggle_ipv6 +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 16) +# set_mtu +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 17) +# set_dns_search_domain +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 18) +# set_dns_server +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 19) +# set_mac_address +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 20) +# set_vlan +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 21) +# set_tags +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 22) +# set_ssh_access +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 23) +# set_fuse +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 24) +# set_verbose +# result=$? +# [[ $result -eq 0 ]] && ((step++)) +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# 25) +# confirm_creation +# result=$? +# [[ $result -eq 0 ]] && break +# [[ $result -eq 2 && $step -gt 1 ]] && ((step--)) +# [[ $result -eq 1 ]] && return +# ;; +# esac +# done +# } + +# show_intro_messages() { +# dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "Instructional Tip" \ +# --msgbox "To make a selection, use the Spacebar." 8 58 || return 1 + +# dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "Default distribution for $APP" \ +# --msgbox "Default is: ${var_os} ${var_version}\n\nIf the default Linux distribution is not adhered to, script support will be discontinued." 10 58 || return 1 +# return 0 +# } + +# select_distribution() { +# [[ "$var_os" == "alpine" ]] && return 0 + +# local default result exitcode +# default="${var_os:-debian}" +# var_os="" + +# local debian_flag ubuntu_flag +# [[ "$default" == "debian" ]] && debian_flag="on" || debian_flag="off" +# [[ "$default" == "ubuntu" ]] && ubuntu_flag="on" || ubuntu_flag="off" + +# while [[ -z "$var_os" ]]; do +# exec 3>&1 +# result=$(dialog --clear \ +# --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "DISTRIBUTION" \ +# --radiolist "Choose Distribution:" 15 60 4 \ +# "debian" "" "$debian_flag" \ +# "ubuntu" "" "$ubuntu_flag" \ +# --ok-label "Next" \ +# --cancel-label "Exit" \ +# --extra-button \ +# --extra-label "Back" \ +# 2>&1 1>&3) +# exitcode=$? +# exec 3>&- + +# case "$exitcode" in +# 0) +# if [[ "$result" =~ ^(debian|ubuntu)$ ]]; then +# var_os="$result" +# printf "%bOperating System: %b%s%b\n" "$OS$BOLD$DGN" "$BGN" "$var_os" "$CL" +# return 0 +# else +# printf "[DEBUG] No valid selection made (result='%s'), repeating...\n" "$result" +# fi +# ;; +# 3) +# return 2 +# ;; +# 1 | 255) +# return 1 +# ;; +# *) +# printf "[DEBUG] Unexpected exit code: %s\n" "$exitcode" >&2 +# return 1 +# ;; +# esac +# done +# } + +# select_version() { +# local default="${var_version}" +# var_version="" +# local list result exitcode + +# if [[ "$var_os" == "debian" ]]; then +# case "$default" in +# 11) list=("11" "Bullseye" on "12" "Bookworm" off) ;; +# 12) list=("11" "Bullseye" off "12" "Bookworm" on) ;; +# *) list=("11" "Bullseye" off "12" "Bookworm" off) ;; +# esac +# elif [[ "$var_os" == "ubuntu" ]]; then +# case "$default" in +# 20.04) list=("20.04" "Focal" on "22.04" "Jammy" off "24.04" "Noble" off "24.10" "Oracular" off) ;; +# 22.04) list=("20.04" "Focal" off "22.04" "Jammy" on "24.04" "Noble" off "24.10" "Oracular" off) ;; +# 24.04) list=("20.04" "Focal" off "22.04" "Jammy" off "24.04" "Noble" on "24.10" "Oracular" off) ;; +# 24.10) list=("20.04" "Focal" off "22.04" "Jammy" off "24.04" "Noble" off "24.10" "Oracular" on) ;; +# *) list=("20.04" "Focal" off "22.04" "Jammy" off "24.04" "Noble" off "24.10" "Oracular" off) ;; +# esac +# fi + +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "VERSION" \ +# --radiolist "Choose Version:" 15 58 5 \ +# "${list[@]}" \ +# --ok-label "Next" \ +# --cancel-label "Exit" \ +# --extra-button --extra-label "Back" \ +# 3>&1 1>&2 2>&3) + +# exitcode=$? + +# case $exitcode in +# 0) +# var_version="$result" +# printf "%bVersion: %b%s%b\n" "$OSVERSION$BOLD$DGN" "$BGN" "$var_version" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# select_container_type() { +# local default="${CT_TYPE}" +# CT_TYPE="" +# local list result exitcode + +# [[ "$default" == "1" ]] && list=("1" "Unprivileged" on "0" "Privileged" off) || list=("1" "Unprivileged" off "0" "Privileged" on) + +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "CONTAINER TYPE" \ +# --radiolist "Choose Type:" 10 58 2 "${list[@]}" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) + +# exitcode=$? + +# case $exitcode in +# 0) +# CT_TYPE="$result" +# [[ "$CT_TYPE" == "0" ]] && desc="Privileged" || desc="Unprivileged" +# printf "%bContainer Type: %b%s%b\n" "$CONTAINERTYPE$BOLD$DGN" "$BGN" "$desc" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } +# set_root_password() { +# local pw1 pw2 exitcode + +# while true; do +# pw1=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "PASSWORD (leave blank for automatic login)" \ +# --insecure --passwordbox "\nSet Root Password (needed for root ssh access)" 10 58 \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# if [[ -z "$pw1" ]]; then +# PW1="Automatic Login" +# PW="" +# printf "%bRoot Password: %b%s%b\n" "$VERIFYPW$BOLD$DGN" "$BGN" "$PW1" "$CL" +# return 0 +# fi +# if [[ "$pw1" == *" "* ]]; then +# dialog --msgbox "Password cannot contain spaces. Please try again." 8 58 +# continue +# fi +# if [[ ${#pw1} -lt 5 ]]; then +# dialog --msgbox "Password must be at least 5 characters long. Please try again." 8 58 +# continue +# fi +# pw2=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "PASSWORD VERIFICATION" \ +# --insecure --passwordbox "\nVerify Root Password" 10 58 \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? +# case $exitcode in +# 0) +# if [[ "$pw1" == "$pw2" ]]; then +# PW="-password $pw1" +# printf "%bRoot Password: %b********%b\n" "$VERIFYPW$BOLD$DGN" "$BGN" "$CL" +# return 0 +# else +# dialog --msgbox "Passwords do not match. Please try again." 8 58 +# continue +# fi +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# done +# } + +# set_container_id() { +# local result exitcode +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "CONTAINER ID" \ +# --inputbox "Set Container ID" 8 58 "$NEXTID" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# CT_ID="${result:-$NEXTID}" +# printf "%bContainer ID: %b%s%b\n" "$CONTAINERID$BOLD$DGN" "$BGN" "$CT_ID" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# set_hostname() { +# local result exitcode +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "HOSTNAME" \ +# --inputbox "Set Hostname" 8 58 "$NSAPP" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# if [[ -z "$result" ]]; then +# HN="$NSAPP" +# else +# HN=$(tr -d ' ' <<<"${result,,}") +# fi +# printf "%bHostname: %b%s%b\n" "$HOSTNAME$BOLD$DGN" "$BGN" "$HN" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# set_disk_size() { +# local result exitcode +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "DISK SIZE" \ +# --inputbox "Set Disk Size in GB" 8 58 "$var_disk" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# if [[ -z "$result" ]]; then +# DISK_SIZE="$var_disk" +# elif [[ "$result" =~ ^[0-9]+$ ]]; then +# DISK_SIZE="$result" +# else +# dialog --msgbox "Disk size must be an integer!" 8 58 +# return 2 +# fi +# printf "%bDisk Size: %b%s GB%b\n" "$DISKSIZE$BOLD$DGN" "$BGN" "$DISK_SIZE" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# set_cpu_cores() { +# local result exitcode +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "CORE COUNT" \ +# --inputbox "Allocate CPU Cores" 8 58 "$var_cpu" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# CORE_COUNT="${result:-$var_cpu}" +# printf "%bCPU Cores: %b%s%b\n" "$CPUCORE$BOLD$DGN" "$BGN" "$CORE_COUNT" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# set_ram_size() { +# local result exitcode +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "RAM" \ +# --inputbox "Allocate RAM in MiB" 8 58 "$var_ram" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# RAM_SIZE="${result:-$var_ram}" +# printf "%bRAM Size: %b%s MiB%b\n" "$RAMSIZE$BOLD$DGN" "$BGN" "$RAM_SIZE" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# set_bridge() { +# local result exitcode +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "BRIDGE" \ +# --inputbox "Set a Bridge" 8 58 "vmbr0" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# BRG="${result:-vmbr0}" +# printf "%bBridge: %b%s%b\n" "$BRIDGE$BOLD$DGN" "$BGN" "$BRG" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# set_ip_address() { +# local result exitcode +# while true; do +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "IP ADDRESS" \ +# --inputbox "Set a Static IPv4 CIDR Address (/24)" 8 58 "dhcp" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# if [[ "$result" == "dhcp" ]]; then +# NET="dhcp" +# printf "%bIP Address: %b%s%b\n" "$NETWORK$BOLD$DGN" "$BGN" "$NET" "$CL" +# return 0 +# elif [[ "$result" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}/([0-9]|[1-2][0-9]|3[0-2])$ ]]; then +# NET="$result" +# printf "%bIP Address: %b%s%b\n" "$NETWORK$BOLD$DGN" "$BGN" "$NET" "$CL" +# return 0 +# else +# dialog --msgbox "$result is an invalid IPv4 CIDR address. Please enter a valid address or 'dhcp'." 8 58 +# continue +# fi +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# done +# } + +# set_gateway() { +# local result exitcode +# if [[ "$NET" == "dhcp" ]]; then +# GATE="" +# printf "%bGateway IP Address: %bDefault%b\n" "$GATEWAY$BOLD$DGN" "$BGN" "$CL" +# return 0 +# fi + +# while true; do +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "Gateway IP" \ +# --inputbox "Enter gateway IP address" 8 58 \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# if [[ -z "$result" ]]; then +# dialog --msgbox "Gateway IP address cannot be empty" 8 58 +# continue +# elif [[ "$result" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then +# GATE=",gw=$result" +# printf "%bGateway IP Address: %b%s%b\n" "$GATEWAY$BOLD$DGN" "$BGN" "$result" "$CL" +# return 0 +# else +# dialog --msgbox "Invalid IP address format" 8 58 +# fi +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# done +# } + +# set_apt_cacher() { +# local result exitcode +# if [[ "$var_os" == "alpine" ]]; then +# APT_CACHER="" +# APT_CACHER_IP="" +# return 0 +# fi + +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "APT-Cacher IP" \ +# --inputbox "Set APT-Cacher IP (leave blank for none)" 8 58 \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# APT_CACHER_IP="$result" +# APT_CACHER="${APT_CACHER_IP:+yes}" +# printf "%bAPT-Cacher IP Address: %b%s%b\n" "$NETWORK$BOLD$DGN" "$BGN" "${APT_CACHER_IP:-Default}" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# toggle_ipv6() { +# dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "IPv6" \ +# --yesno "Disable IPv6?" 10 58 \ +# --extra-button --extra-label "Back" --ok-label "Yes" --cancel-label "No" +# case $? in +# 0) DISABLEIP6="yes" ;; +# 1) DISABLEIP6="no" ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# printf "%bDisable IPv6: %b%s%b\n" "$DISABLEIPV6$BOLD$DGN" "$BGN" "$DISABLEIP6" "$CL" +# return 0 +# } +# set_mtu() { +# local result exitcode +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "MTU SIZE" \ +# --inputbox "Set Interface MTU Size (leave blank for default [1500])" 8 58 "" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# if [[ -z "$result" ]]; then +# MTU1="Default" +# MTU="" +# else +# MTU1="$result" +# MTU=",mtu=$MTU1" +# fi +# printf "%bInterface MTU Size: %b%s%b\n" "$DEFAULT$BOLD$DGN" "$BGN" "$MTU1" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# set_dns_search_domain() { +# local result exitcode +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "DNS Search Domain" \ +# --inputbox "Set a DNS Search Domain (leave blank for HOST)" 8 58 "" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# if [[ -z "$result" ]]; then +# SX="Host" +# SD="" +# else +# SX="$result" +# SD="-searchdomain=$result" +# fi +# printf "%bDNS Search Domain: %b%s%b\n" "$SEARCH$BOLD$DGN" "$BGN" "$SX" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# set_dns_server() { +# local result exitcode +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "DNS SERVER IP" \ +# --inputbox "Set a DNS Server IP (leave blank for HOST)" 8 58 "" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# if [[ -z "$result" ]]; then +# NX="Host" +# NS="" +# else +# NX="$result" +# NS="-nameserver=$result" +# fi +# printf "%bDNS Server IP Address: %b%s%b\n" "$NETWORK$BOLD$DGN" "$BGN" "$NX" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# set_mac_address() { +# local result exitcode +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "MAC ADDRESS" \ +# --inputbox "Set a MAC Address (leave blank for generated MAC)" 8 58 "" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# if [[ -z "$result" ]]; then +# MAC1="Default" +# MAC="" +# else +# MAC1="$result" +# MAC=",hwaddr=$MAC1" +# fi +# printf "%bMAC Address: %b%s%b\n" "$MACADDRESS$BOLD$DGN" "$BGN" "$MAC1" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# set_vlan() { +# local result exitcode +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "VLAN" \ +# --inputbox "Set a VLAN (leave blank for no VLAN)" 8 58 "" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# if [[ -z "$result" ]]; then +# VLAN1="Default" +# VLAN="" +# else +# VLAN1="$result" +# VLAN=",tag=$VLAN1" +# fi +# printf "%bVlan: %b%s%b\n" "$VLANTAG$BOLD$DGN" "$BGN" "$VLAN1" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# set_tags() { +# local result exitcode +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "Advanced Tags" \ +# --inputbox "Set Custom Tags? [If you remove all, there will be no tags!]" 8 58 "$TAGS" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? + +# case $exitcode in +# 0) +# if [[ -n "$result" ]]; then +# ADV_TAGS=$(tr -d '[:space:]' <<<"$result") +# TAGS="$ADV_TAGS" +# else +# TAGS=";" +# fi +# printf "%bTags: %b%s%b\n" "$NETWORK$BOLD$DGN" "$BGN" "$TAGS" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } + +# set_ssh_access() { +# local result exitcode + +# if [[ "$PW" == -password* ]]; then +# dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "SSH ACCESS" \ +# --yesno "Enable Root SSH Access?" 10 58 \ +# --extra-button --extra-label "Back" --ok-label "Yes" --cancel-label "No" +# exitcode=$? +# case $exitcode in +# 0) SSH="yes" ;; +# 1) SSH="no" ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# else +# SSH="no" +# fi + +# printf "%bRoot SSH Access: %b%s%b\n" "$ROOTSSH$BOLD$DGN" "$BGN" "$SSH" "$CL" + +# if [[ "$SSH" == "yes" ]]; then +# result=$(dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "SSH Key" \ +# --inputbox "SSH Authorized key for root (leave empty for none)" 8 58 "" \ +# --extra-button --extra-label "Back" --ok-label "Next" --cancel-label "Exit" 3>&1 1>&2 2>&3) +# exitcode=$? +# case $exitcode in +# 0) +# SSH_AUTHORIZED_KEY="$result" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# else +# SSH_AUTHORIZED_KEY="" +# return 0 +# fi +# } + +# set_fuse() { +# dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "FUSE Support" \ +# --yesno "Enable FUSE (Filesystem in Userspace) support in the container?" 10 58 \ +# --extra-button --extra-label "Back" --ok-label "Yes" --cancel-label "No" +# case $? in +# 0) ENABLE_FUSE="yes" ;; +# 1) ENABLE_FUSE="no" ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# printf "%bFUSE (Filesystem in Userspace) Support: %b%s%b\n" "$FUSE$BOLD$DGN" "$BGN" "$ENABLE_FUSE" "$CL" +# return 0 +# } + +# set_verbose() { +# dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "VERBOSE MODE" \ +# --yesno "Enable Verbose Mode?" 10 58 \ +# --extra-button --extra-label "Back" --ok-label "Yes" --cancel-label "No" +# case $? in +# 0) VERB="yes" ;; +# 1) VERB="no" ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# printf "%bVerbose Mode: %b%s%b\n" "$SEARCH$BOLD$DGN" "$BGN" "$VERB" "$CL" +# return 0 +# } + +# confirm_creation() { +# dialog --backtitle "[dev] Proxmox VE Helper Scripts" \ +# --title "ADVANCED SETTINGS COMPLETE" \ +# --yesno "Ready to create ${APP} LXC?" 10 58 \ +# --extra-button --extra-label "Back" --ok-label "Yes" --cancel-label "No" +# case $? in +# 0) +# printf "%bCreating a %s LXC using the above advanced settings%b\n" "$CREATING$BOLD$RD" "$APP" "$CL" +# return 0 +# ;; +# 3) return 2 ;; +# *) return 1 ;; +# esac +# } diagnostics_check() { if ! [ -d "/usr/local/community-scripts" ]; then