From 3a88d6853db2e49a68ad3690601b34f74448ccd7 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 7 May 2025 13:35:45 +0200 Subject: [PATCH] dev --- ct/create_lxc.sh | 114 +++++++++++------------ misc/build.func | 205 +++++++++++++++++++++--------------------- misc/core.func | 53 +++-------- misc/core.func.bak | 220 +++++++++++++++++++++++++++++++++++++++++++++ misc/install.func | 125 +++++++++++++------------- 5 files changed, 458 insertions(+), 259 deletions(-) create mode 100644 misc/core.func.bak diff --git a/ct/create_lxc.sh b/ct/create_lxc.sh index 8ae7a15..d08923e 100644 --- a/ct/create_lxc.sh +++ b/ct/create_lxc.sh @@ -9,26 +9,28 @@ # This sets verbose mode if the global variable is set to "yes" # if [ "$VERBOSE" == "yes" ]; then set -x; fi +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/core.func) + # This function sets color variables for formatting output in the terminal # Colors -YW=$(echo "\033[33m") -YWB=$(echo "\033[93m") -BL=$(echo "\033[36m") -RD=$(echo "\033[01;31m") -GN=$(echo "\033[1;92m") +# YW=$(echo "\033[33m") +# YWB=$(echo "\033[93m") +# BL=$(echo "\033[36m") +# RD=$(echo "\033[01;31m") +# GN=$(echo "\033[1;92m") -# Formatting -CL=$(echo "\033[m") -UL=$(echo "\033[4m") -BOLD=$(echo "\033[1m") -BFR="\\r\\033[K" -HOLD=" " -TAB=" " +# # Formatting +# CL=$(echo "\033[m") +# UL=$(echo "\033[4m") +# BOLD=$(echo "\033[1m") +# BFR="\\r\\033[K" +# HOLD=" " +# TAB=" " -# Icons -CM="${TAB}✔️${TAB}${CL}" -CROSS="${TAB}✖️${TAB}${CL}" -INFO="${TAB}💡${TAB}${CL}" +# # Icons +# CM="${TAB}✔️${TAB}${CL}" +# CROSS="${TAB}✖️${TAB}${CL}" +# INFO="${TAB}💡${TAB}${CL}" # This sets error handling options and defines the error_handler function to handle errors set -Eeuo pipefail @@ -46,52 +48,52 @@ function error_handler() { exit 200 } -# This function displays a spinner. -function spinner() { - local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏') - local spin_i=0 - local interval=0.1 - printf "\e[?25l" +# # This function displays a spinner. +# function spinner() { +# local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏') +# local spin_i=0 +# local interval=0.1 +# printf "\e[?25l" - local color="${YWB}" +# local color="${YWB}" - while true; do - printf "\r ${color}%s${CL}" "${frames[spin_i]}" - spin_i=$(((spin_i + 1) % ${#frames[@]})) - sleep "$interval" - done -} +# while true; do +# printf "\r ${color}%s${CL}" "${frames[spin_i]}" +# spin_i=$(((spin_i + 1) % ${#frames[@]})) +# sleep "$interval" +# done +# } -# This function displays an informational message with a yellow color. -function msg_info() { - local msg="$1" - echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}" - spinner & - SPINNER_PID=$! -} +# # This function displays an informational message with a yellow color. +# function msg_info() { +# local msg="$1" +# echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}" +# spinner & +# SPINNER_PID=$! +# } -function msg_warn() { - if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi - printf "\e[?25h" - local msg="$1" - echo -e "${BFR}${INFO}${YWB}${msg}${CL}" -} +# function msg_warn() { +# if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi +# printf "\e[?25h" +# local msg="$1" +# echo -e "${BFR}${INFO}${YWB}${msg}${CL}" +# } -# This function displays a success message with a green color. -function msg_ok() { - if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi - printf "\e[?25h" - local msg="$1" - echo -e "${BFR}${CM}${GN}${msg}${CL}" -} +# # This function displays a success message with a green color. +# function msg_ok() { +# if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi +# printf "\e[?25h" +# local msg="$1" +# echo -e "${BFR}${CM}${GN}${msg}${CL}" +# } -# This function displays a error message with a red color. -function msg_error() { - if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi - printf "\e[?25h" - local msg="$1" - echo -e "${BFR}${CROSS}${RD}${msg}${CL}" -} +# # This function displays a error message with a red color. +# function msg_error() { +# if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi +# printf "\e[?25h" +# local msg="$1" +# echo -e "${BFR}${CROSS}${RD}${msg}${CL}" +# } # This checks for the presence of valid Container Storage and Template Storage locations msg_info "Validating Storage" diff --git a/misc/build.func b/misc/build.func index ede82f9..778cfb1 100644 --- a/misc/build.func +++ b/misc/build.func @@ -15,50 +15,51 @@ variables() { } source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/api.func) +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/core.func) -# This function sets various color variables using ANSI escape codes for formatting text in the terminal. -color() { - # Colors - YW=$(echo "\033[33m") - YWB=$(echo "\033[93m") - BL=$(echo "\033[36m") - RD=$(echo "\033[01;31m") - BGN=$(echo "\033[4;92m") - GN=$(echo "\033[1;92m") - DGN=$(echo "\033[32m") +# # This function sets various color variables using ANSI escape codes for formatting text in the terminal. +# color() { +# # Colors +# YW=$(echo "\033[33m") +# YWB=$(echo "\033[93m") +# BL=$(echo "\033[36m") +# RD=$(echo "\033[01;31m") +# BGN=$(echo "\033[4;92m") +# GN=$(echo "\033[1;92m") +# DGN=$(echo "\033[32m") - # Formatting - CL=$(echo "\033[m") - BOLD=$(echo "\033[1m") - HOLD=" " - TAB=" " +# # Formatting +# CL=$(echo "\033[m") +# BOLD=$(echo "\033[1m") +# HOLD=" " +# TAB=" " - # Icons - CM="${TAB}✔️${TAB}" - CROSS="${TAB}✖️${TAB}" - INFO="${TAB}💡${TAB}${CL}" - OS="${TAB}🖥️${TAB}${CL}" - OSVERSION="${TAB}🌟${TAB}${CL}" - CONTAINERTYPE="${TAB}📦${TAB}${CL}" - DISKSIZE="${TAB}💾${TAB}${CL}" - CPUCORE="${TAB}🧠${TAB}${CL}" - RAMSIZE="${TAB}🛠️${TAB}${CL}" - SEARCH="${TAB}🔍${TAB}${CL}" - VERBOSE_CROPPED="🔍${TAB}" - VERIFYPW="${TAB}🔐${TAB}${CL}" - CONTAINERID="${TAB}🆔${TAB}${CL}" - HOSTNAME="${TAB}🏠${TAB}${CL}" - BRIDGE="${TAB}🌉${TAB}${CL}" - NETWORK="${TAB}📡${TAB}${CL}" - GATEWAY="${TAB}🌐${TAB}${CL}" - DISABLEIPV6="${TAB}🚫${TAB}${CL}" - DEFAULT="${TAB}⚙️${TAB}${CL}" - MACADDRESS="${TAB}🔗${TAB}${CL}" - VLANTAG="${TAB}🏷️${TAB}${CL}" - ROOTSSH="${TAB}🔑${TAB}${CL}" - CREATING="${TAB}🚀${TAB}${CL}" - ADVANCED="${TAB}🧩${TAB}${CL}" -} +# # Icons +# CM="${TAB}✔️${TAB}" +# CROSS="${TAB}✖️${TAB}" +# INFO="${TAB}💡${TAB}${CL}" +# OS="${TAB}🖥️${TAB}${CL}" +# OSVERSION="${TAB}🌟${TAB}${CL}" +# CONTAINERTYPE="${TAB}📦${TAB}${CL}" +# DISKSIZE="${TAB}💾${TAB}${CL}" +# CPUCORE="${TAB}🧠${TAB}${CL}" +# RAMSIZE="${TAB}🛠️${TAB}${CL}" +# SEARCH="${TAB}🔍${TAB}${CL}" +# VERBOSE_CROPPED="🔍${TAB}" +# VERIFYPW="${TAB}🔐${TAB}${CL}" +# CONTAINERID="${TAB}🆔${TAB}${CL}" +# HOSTNAME="${TAB}🏠${TAB}${CL}" +# BRIDGE="${TAB}🌉${TAB}${CL}" +# NETWORK="${TAB}📡${TAB}${CL}" +# GATEWAY="${TAB}🌐${TAB}${CL}" +# DISABLEIPV6="${TAB}🚫${TAB}${CL}" +# DEFAULT="${TAB}⚙️${TAB}${CL}" +# MACADDRESS="${TAB}🔗${TAB}${CL}" +# VLANTAG="${TAB}🏷️${TAB}${CL}" +# ROOTSSH="${TAB}🔑${TAB}${CL}" +# CREATING="${TAB}🚀${TAB}${CL}" +# ADVANCED="${TAB}🧩${TAB}${CL}" +# } # This function enables error handling in the script by setting options and defining a trap for the ERR signal. catch_errors() { @@ -79,78 +80,78 @@ error_handler() { echo -e "\n$error_message\n" } -# This function displays an informational message with logging support. -declare -A MSG_INFO_SHOWN -SPINNER_ACTIVE=0 -SPINNER_PID="" -SPINNER_MSG="" +# # This function displays an informational message with logging support. +# declare -A MSG_INFO_SHOWN +# SPINNER_ACTIVE=0 +# SPINNER_PID="" +# SPINNER_MSG="" -trap 'stop_spinner' EXIT INT TERM HUP +# trap 'stop_spinner' EXIT INT TERM HUP -start_spinner() { - local msg="$1" - local frames=(⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏) - local spin_i=0 - local interval=0.1 +# start_spinner() { +# local msg="$1" +# local frames=(⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏) +# local spin_i=0 +# local interval=0.1 - SPINNER_MSG="$msg" - printf "\r\e[2K" >&2 +# SPINNER_MSG="$msg" +# printf "\r\e[2K" >&2 - { - while [[ "$SPINNER_ACTIVE" -eq 1 ]]; do - printf "\r\e[2K%s %b" "${frames[spin_i]}" "${YW}${SPINNER_MSG}${CL}" >&2 - spin_i=$(((spin_i + 1) % ${#frames[@]})) - sleep "$interval" - done - } & +# { +# while [[ "$SPINNER_ACTIVE" -eq 1 ]]; do +# printf "\r\e[2K%s %b" "${frames[spin_i]}" "${YW}${SPINNER_MSG}${CL}" >&2 +# spin_i=$(((spin_i + 1) % ${#frames[@]})) +# sleep "$interval" +# done +# } & - SPINNER_PID=$! - disown "$SPINNER_PID" -} +# SPINNER_PID=$! +# disown "$SPINNER_PID" +# } -stop_spinner() { - if [[ ${SPINNER_PID+v} && -n "$SPINNER_PID" ]] && kill -0 "$SPINNER_PID" 2>/dev/null; then - kill "$SPINNER_PID" 2>/dev/null - sleep 0.1 - kill -0 "$SPINNER_PID" 2>/dev/null && kill -9 "$SPINNER_PID" 2>/dev/null - wait "$SPINNER_PID" 2>/dev/null || true - fi - SPINNER_ACTIVE=0 - unset SPINNER_PID -} +# stop_spinner() { +# if [[ ${SPINNER_PID+v} && -n "$SPINNER_PID" ]] && kill -0 "$SPINNER_PID" 2>/dev/null; then +# kill "$SPINNER_PID" 2>/dev/null +# sleep 0.1 +# kill -0 "$SPINNER_PID" 2>/dev/null && kill -9 "$SPINNER_PID" 2>/dev/null +# wait "$SPINNER_PID" 2>/dev/null || true +# fi +# SPINNER_ACTIVE=0 +# unset SPINNER_PID +# } -spinner_guard() { - if [[ "$SPINNER_ACTIVE" -eq 1 ]] && [[ -n "$SPINNER_PID" ]]; then - kill "$SPINNER_PID" 2>/dev/null - wait "$SPINNER_PID" 2>/dev/null || true - SPINNER_ACTIVE=0 - unset SPINNER_PID - fi -} +# spinner_guard() { +# if [[ "$SPINNER_ACTIVE" -eq 1 ]] && [[ -n "$SPINNER_PID" ]]; then +# kill "$SPINNER_PID" 2>/dev/null +# wait "$SPINNER_PID" 2>/dev/null || true +# SPINNER_ACTIVE=0 +# unset SPINNER_PID +# fi +# } -msg_info() { - local msg="$1" - [[ -n "${MSG_INFO_SHOWN["$msg"]+x}" ]] && return - MSG_INFO_SHOWN["$msg"]=1 +# msg_info() { +# local msg="$1" +# [[ -n "${MSG_INFO_SHOWN["$msg"]+x}" ]] && return +# MSG_INFO_SHOWN["$msg"]=1 - spinner_guard - SPINNER_ACTIVE=1 - start_spinner "$msg" -} +# spinner_guard +# SPINNER_ACTIVE=1 +# start_spinner "$msg" +# } -msg_ok() { - local msg="$1" - stop_spinner - printf "\r\e[2K%s %b\n" "${CM}" "${GN}${msg}${CL}" >&2 - unset MSG_INFO_SHOWN["$msg"] -} +# msg_ok() { +# local msg="$1" +# stop_spinner +# printf "\r\e[2K%s %b\n" "${CM}" "${GN}${msg}${CL}" >&2 +# unset MSG_INFO_SHOWN["$msg"] +# } -msg_error() { - stop_spinner - local msg="$1" - printf "\r\e[2K%s %b\n" "${CROSS}" "${RD}${msg}${CL}" >&2 - #log_message "ERROR" "$msg" -} +# msg_error() { +# stop_spinner +# local msg="$1" +# printf "\r\e[2K%s %b\n" "${CROSS}" "${RD}${msg}${CL}" >&2 +# #log_message "ERROR" "$msg" +# } # log_message() { # local level="$1" diff --git a/misc/core.func b/misc/core.func index de18842..9f63c26 100644 --- a/misc/core.func +++ b/misc/core.func @@ -1,7 +1,7 @@ # Copyright (c) 2021-2025 community-scripts ORG -# Author: michelroegl-brunner # License: MIT | https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/LICENSE +# This function sets various color variables using ANSI escape codes for formatting text in the terminal. color() { # Colors YW=$(echo "\033[33m") @@ -20,7 +20,7 @@ color() { # Icons CM="${TAB}✔️${TAB}" - CROSS="${TAB}✖️${TAB}${CL}" + CROSS="${TAB}✖️${TAB}" INFO="${TAB}💡${TAB}${CL}" OS="${TAB}🖥️${TAB}${CL}" OSVERSION="${TAB}🌟${TAB}${CL}" @@ -43,14 +43,16 @@ color() { ROOTSSH="${TAB}🔑${TAB}${CL}" CREATING="${TAB}🚀${TAB}${CL}" ADVANCED="${TAB}🧩${TAB}${CL}" - FUSE="${TAB}🔧${TAB}${CL}" } +# This function displays an informational message with logging support. declare -A MSG_INFO_SHOWN SPINNER_ACTIVE=0 SPINNER_PID="" SPINNER_MSG="" +trap 'stop_spinner' EXIT INT TERM HUP + start_spinner() { local msg="$1" local frames=(⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏) @@ -92,56 +94,27 @@ spinner_guard() { fi } -log_message() { - local level="$1" - local message="$2" - local timestamp - local logdate - timestamp=$(date '+%Y-%m-%d %H:%M:%S') - logdate=$(date '+%Y-%m-%d') - - LOGDIR="/usr/local/community-scripts/logs" - mkdir -p "$LOGDIR" - - LOGFILE="${LOGDIR}/${logdate}_${NSAPP}.log" - echo "$timestamp - $level: $message" >>"$LOGFILE" -} - msg_info() { local msg="$1" - if [ "${SPINNER_ACTIVE:-0}" -eq 1 ]; then - return - fi + [[ -n "${MSG_INFO_SHOWN["$msg"]+x}" ]] && return + MSG_INFO_SHOWN["$msg"]=1 + spinner_guard SPINNER_ACTIVE=1 start_spinner "$msg" } msg_ok() { - if [ -n "${SPINNER_PID:-}" ] && ps -p "$SPINNER_PID" >/dev/null 2>&1; then - kill "$SPINNER_PID" >/dev/null 2>&1 - wait "$SPINNER_PID" 2>/dev/null || true - fi - local msg="$1" - printf "\r\e[2K${CM}${GN}%b${CL}\n" "$msg" >&2 - unset SPINNER_PID - SPINNER_ACTIVE=0 - - log_message "OK" "$msg" + stop_spinner + printf "\r\e[2K%s %b\n" "${CM}" "${GN}${msg}${CL}" >&2 + unset MSG_INFO_SHOWN["$msg"] } msg_error() { - if [ -n "${SPINNER_PID:-}" ] && ps -p "$SPINNER_PID" >/dev/null 2>&1; then - kill "$SPINNER_PID" >/dev/null 2>&1 - wait "$SPINNER_PID" 2>/dev/null || true - fi - + stop_spinner local msg="$1" - printf "\r\e[2K${CROSS}${RD}%b${CL}\n" "$msg" >&2 - unset SPINNER_PID - SPINNER_ACTIVE=0 - log_message "ERROR" "$msg" + printf "\r\e[2K%s %b\n" "${CROSS}" "${RD}${msg}${CL}" >&2 } shell_check() { diff --git a/misc/core.func.bak b/misc/core.func.bak new file mode 100644 index 0000000..de18842 --- /dev/null +++ b/misc/core.func.bak @@ -0,0 +1,220 @@ +# Copyright (c) 2021-2025 community-scripts ORG +# Author: michelroegl-brunner +# License: MIT | https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/LICENSE + +color() { + # Colors + YW=$(echo "\033[33m") + YWB=$(echo "\033[93m") + BL=$(echo "\033[36m") + RD=$(echo "\033[01;31m") + BGN=$(echo "\033[4;92m") + GN=$(echo "\033[1;92m") + DGN=$(echo "\033[32m") + + # Formatting + CL=$(echo "\033[m") + BOLD=$(echo "\033[1m") + HOLD=" " + TAB=" " + + # Icons + CM="${TAB}✔️${TAB}" + CROSS="${TAB}✖️${TAB}${CL}" + INFO="${TAB}💡${TAB}${CL}" + OS="${TAB}🖥️${TAB}${CL}" + OSVERSION="${TAB}🌟${TAB}${CL}" + CONTAINERTYPE="${TAB}📦${TAB}${CL}" + DISKSIZE="${TAB}💾${TAB}${CL}" + CPUCORE="${TAB}🧠${TAB}${CL}" + RAMSIZE="${TAB}🛠️${TAB}${CL}" + SEARCH="${TAB}🔍${TAB}${CL}" + VERBOSE_CROPPED="🔍${TAB}" + VERIFYPW="${TAB}🔐${TAB}${CL}" + CONTAINERID="${TAB}🆔${TAB}${CL}" + HOSTNAME="${TAB}🏠${TAB}${CL}" + BRIDGE="${TAB}🌉${TAB}${CL}" + NETWORK="${TAB}📡${TAB}${CL}" + GATEWAY="${TAB}🌐${TAB}${CL}" + DISABLEIPV6="${TAB}🚫${TAB}${CL}" + DEFAULT="${TAB}⚙️${TAB}${CL}" + MACADDRESS="${TAB}🔗${TAB}${CL}" + VLANTAG="${TAB}🏷️${TAB}${CL}" + ROOTSSH="${TAB}🔑${TAB}${CL}" + CREATING="${TAB}🚀${TAB}${CL}" + ADVANCED="${TAB}🧩${TAB}${CL}" + FUSE="${TAB}🔧${TAB}${CL}" +} + +declare -A MSG_INFO_SHOWN +SPINNER_ACTIVE=0 +SPINNER_PID="" +SPINNER_MSG="" + +start_spinner() { + local msg="$1" + local frames=(⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏) + local spin_i=0 + local interval=0.1 + + SPINNER_MSG="$msg" + printf "\r\e[2K" >&2 + + { + while [[ "$SPINNER_ACTIVE" -eq 1 ]]; do + printf "\r\e[2K%s %b" "${frames[spin_i]}" "${YW}${SPINNER_MSG}${CL}" >&2 + spin_i=$(((spin_i + 1) % ${#frames[@]})) + sleep "$interval" + done + } & + + SPINNER_PID=$! + disown "$SPINNER_PID" +} + +stop_spinner() { + if [[ ${SPINNER_PID+v} && -n "$SPINNER_PID" ]] && kill -0 "$SPINNER_PID" 2>/dev/null; then + kill "$SPINNER_PID" 2>/dev/null + sleep 0.1 + kill -0 "$SPINNER_PID" 2>/dev/null && kill -9 "$SPINNER_PID" 2>/dev/null + wait "$SPINNER_PID" 2>/dev/null || true + fi + SPINNER_ACTIVE=0 + unset SPINNER_PID +} + +spinner_guard() { + if [[ "$SPINNER_ACTIVE" -eq 1 ]] && [[ -n "$SPINNER_PID" ]]; then + kill "$SPINNER_PID" 2>/dev/null + wait "$SPINNER_PID" 2>/dev/null || true + SPINNER_ACTIVE=0 + unset SPINNER_PID + fi +} + +log_message() { + local level="$1" + local message="$2" + local timestamp + local logdate + timestamp=$(date '+%Y-%m-%d %H:%M:%S') + logdate=$(date '+%Y-%m-%d') + + LOGDIR="/usr/local/community-scripts/logs" + mkdir -p "$LOGDIR" + + LOGFILE="${LOGDIR}/${logdate}_${NSAPP}.log" + echo "$timestamp - $level: $message" >>"$LOGFILE" +} + +msg_info() { + local msg="$1" + if [ "${SPINNER_ACTIVE:-0}" -eq 1 ]; then + return + fi + + SPINNER_ACTIVE=1 + start_spinner "$msg" +} + +msg_ok() { + if [ -n "${SPINNER_PID:-}" ] && ps -p "$SPINNER_PID" >/dev/null 2>&1; then + kill "$SPINNER_PID" >/dev/null 2>&1 + wait "$SPINNER_PID" 2>/dev/null || true + fi + + local msg="$1" + printf "\r\e[2K${CM}${GN}%b${CL}\n" "$msg" >&2 + unset SPINNER_PID + SPINNER_ACTIVE=0 + + log_message "OK" "$msg" +} + +msg_error() { + if [ -n "${SPINNER_PID:-}" ] && ps -p "$SPINNER_PID" >/dev/null 2>&1; then + kill "$SPINNER_PID" >/dev/null 2>&1 + wait "$SPINNER_PID" 2>/dev/null || true + fi + + local msg="$1" + printf "\r\e[2K${CROSS}${RD}%b${CL}\n" "$msg" >&2 + unset SPINNER_PID + SPINNER_ACTIVE=0 + log_message "ERROR" "$msg" +} + +shell_check() { + if [[ "$(basename "$SHELL")" != "bash" ]]; then + clear + msg_error "Your default shell is currently not set to Bash. To use these scripts, please switch to the Bash shell." + echo -e "\nExiting..." + sleep 2 + exit + fi +} + +root_check() { + if [[ "$(id -u)" -ne 0 || $(ps -o comm= -p $PPID) == "sudo" ]]; then + clear + msg_error "Please run this script as root." + echo -e "\nExiting..." + sleep 2 + exit + fi +} + +pve_check() { + if ! pveversion | grep -Eq "pve-manager/8\.[1-9](\.[0-9]+)*"; then + msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported" + echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." + echo -e "Exiting..." + sleep 2 + exit + fi +} + +arch_check() { + if [ "$(dpkg --print-architecture)" != "amd64" ]; then + echo -e "\n ${INFO}${YWB}This script will not work with PiMox! \n" + echo -e "\n ${YWB}Visit https://github.com/asylumexp/Proxmox for ARM64 support. \n" + echo -e "Exiting..." + sleep 2 + exit + fi +} + +ssh_check() { + if command -v pveversion >/dev/null 2>&1; then + if [ -n "${SSH_CLIENT:+x}" ]; then + if whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SSH DETECTED" --yesno "It's suggested to use the Proxmox shell instead of SSH, since SSH can create issues while gathering variables. Would you like to proceed with using SSH?" 10 62; then + echo "you've been warned" + else + clear + exit + fi + fi + fi +} + +exit-script() { + clear + echo -e "\n${CROSS}${RD}User exited script${CL}\n" + exit +} + +set_std_mode() { + if [ "$VERB" = "yes" ]; then + STD="" + else + STD="silent" + fi +} + +silent() { + if [ "$VERB" = "no" ]; then + "$@" >>"$LOGFILE" 2>&1 + else + "$@" 2>&1 | tee -a "$LOGFILE" + fi +} diff --git a/misc/install.func b/misc/install.func index d60c9d6..4e2eeba 100644 --- a/misc/install.func +++ b/misc/install.func @@ -5,36 +5,38 @@ # License: MIT # https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE -color() { - # Colors - YW=$(echo "\033[33m") - YWB=$(echo "\033[93m") - BL=$(echo "\033[36m") - RD=$(echo "\033[01;31m") - GN=$(echo "\033[1;92m") +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/core.func) - # Formatting - CL=$(echo "\033[m") - BFR="\\r\\033[K" - BOLD=$(echo "\033[1m") - HOLD=" " - TAB=" " +# color() { +# # Colors +# YW=$(echo "\033[33m") +# YWB=$(echo "\033[93m") +# BL=$(echo "\033[36m") +# RD=$(echo "\033[01;31m") +# GN=$(echo "\033[1;92m") - # System - RETRY_NUM=10 - RETRY_EVERY=3 +# # Formatting +# CL=$(echo "\033[m") +# BFR="\\r\\033[K" +# BOLD=$(echo "\033[1m") +# HOLD=" " +# TAB=" " - # Icons - CM="${TAB}✔️${TAB}${CL}" - CROSS="${TAB}✖️${TAB}${CL}" - INFO="${TAB}💡${TAB}${CL}" - NETWORK="${TAB}📡${TAB}${CL}" - OS="${TAB}🖥️${TAB}${CL}" - OSVERSION="${TAB}🌟${TAB}${CL}" - HOSTNAME="${TAB}🏠${TAB}${CL}" - GATEWAY="${TAB}🌐${TAB}${CL}" - DEFAULT="${TAB}⚙️${TAB}${CL}" -} +# # System +# RETRY_NUM=10 +# RETRY_EVERY=3 + +# # Icons +# CM="${TAB}✔️${TAB}${CL}" +# CROSS="${TAB}✖️${TAB}${CL}" +# INFO="${TAB}💡${TAB}${CL}" +# NETWORK="${TAB}📡${TAB}${CL}" +# OS="${TAB}🖥️${TAB}${CL}" +# OSVERSION="${TAB}🌟${TAB}${CL}" +# HOSTNAME="${TAB}🏠${TAB}${CL}" +# GATEWAY="${TAB}🌐${TAB}${CL}" +# DEFAULT="${TAB}⚙️${TAB}${CL}" +# } # Function to set STD mode based on verbosity set_std_mode() { @@ -86,45 +88,46 @@ error_handler() { fi } -# This function displays a spinner. -spinner() { - local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏') - local spin_i=0 - local interval=0.1 - printf "\e[?25l" +# # This function displays a spinner. +# spinner() { +# local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏') +# local spin_i=0 +# local interval=0.1 +# printf "\e[?25l" - local color="${YWB}" +# local color="${YWB}" - while true; do - printf "\r ${color}%s${CL}" "${frames[spin_i]}" - spin_i=$(((spin_i + 1) % ${#frames[@]})) - sleep "$interval" - done -} +# while true; do +# printf "\r ${color}%s${CL}" "${frames[spin_i]}" +# spin_i=$(((spin_i + 1) % ${#frames[@]})) +# sleep "$interval" +# done +# } -# This function displays an informational message with a yellow color. -msg_info() { - local msg="$1" - echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}" - spinner & - SPINNER_PID=$! -} +# # This function displays an informational message with a yellow color. +# msg_info() { +# local msg="$1" +# echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}" +# spinner & +# SPINNER_PID=$! +# } -# This function displays a success message with a green color. -msg_ok() { - if [ -n "$SPINNER_PID" ] && ps -p "$SPINNER_PID" >/dev/null; then kill "$SPINNER_PID" >/dev/null; fi - printf "\e[?25h" - local msg="$1" - echo -e "${BFR}${CM}${GN}${msg}${CL}" -} +# # This function displays a success message with a green color. +# msg_ok() { +# if [ -n "$SPINNER_PID" ] && ps -p "$SPINNER_PID" >/dev/null; then kill "$SPINNER_PID" >/dev/null; fi +# printf "\e[?25h" +# local msg="$1" +# echo -e "${BFR}${CM}${GN}${msg}${CL}" +# } + +# # This function displays a error message with a red color. +# msg_error() { +# if [ -n "$SPINNER_PID" ] && ps -p "$SPINNER_PID" >/dev/null; then kill "$SPINNER_PID" >/dev/null; fi +# printf "\e[?25h" +# local msg="$1" +# echo -e "${BFR}${CROSS}${RD}${msg}${CL}" +# } -# This function displays a error message with a red color. -msg_error() { - if [ -n "$SPINNER_PID" ] && ps -p "$SPINNER_PID" >/dev/null; then kill "$SPINNER_PID" >/dev/null; fi - printf "\e[?25h" - local msg="$1" - echo -e "${BFR}${CROSS}${RD}${msg}${CL}" -} # This function sets up the Container OS by generating the locale, setting the timezone, and checking the network connection setting_up_container() { msg_info "Setting up Container OS"