diff --git a/misc/api.func b/misc/api.func index 2e34e9d..f6a3413 100644 --- a/misc/api.func +++ b/misc/api.func @@ -1,78 +1,26 @@ # Copyright (c) 2021-2025 community-scripts ORG # Author: michelroegl-brunner -# License: MIT | https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/LICENSE - -get_error_description() { - local exit_code="$1" - case "$exit_code" in - 0) echo " " ;; - 1) echo "General error: An unspecified error occurred." ;; - 2) echo "Incorrect shell usage or invalid command arguments." ;; - 3) echo "Unexecuted function or invalid shell condition." ;; - 4) echo "Error opening a file or invalid path." ;; - 5) echo "I/O error: An input/output failure occurred." ;; - 6) echo "No such device or address." ;; - 7) echo "Insufficient memory or resource exhaustion." ;; - 8) echo "Non-executable file or invalid file format." ;; - 9) echo "Failed child process execution." ;; - 18) echo "Connection to a remote server failed." ;; - 22) echo "Invalid argument or faulty network connection." ;; - 28) echo "No space left on device." ;; - 35) echo "Timeout while establishing a connection." ;; - 56) echo "Faulty TLS connection." ;; - 60) echo "SSL certificate error." ;; - 100) echo "LXC install error: Unexpected error in create_lxc.sh." ;; - 101) echo "LXC install error: No network connection detected." ;; - 200) echo "LXC creation failed." ;; - 201) echo "LXC error: Invalid Storage class." ;; - 202) echo "User aborted menu in create_lxc.sh." ;; - 203) echo "CTID not set in create_lxc.sh." ;; - 204) echo "PCT_OSTYPE not set in create_lxc.sh." ;; - 205) echo "CTID cannot be less than 100 in create_lxc.sh." ;; - 206) echo "CTID already in use in create_lxc.sh." ;; - 207) echo "Template not found in create_lxc.sh." ;; - 208) echo "Error downloading template in create_lxc.sh." ;; - 209) echo "Container creation failed, but template is intact in create_lxc.sh." ;; - 125) echo "Docker error: Container could not start." ;; - 126) echo "Command not executable: Incorrect permissions or missing dependencies." ;; - 127) echo "Command not found: Incorrect path or missing dependency." ;; - 128) echo "Invalid exit signal, e.g., incorrect Git command." ;; - 129) echo "Signal 1 (SIGHUP): Process terminated due to hangup." ;; - 130) echo "Signal 2 (SIGINT): Manual termination via Ctrl+C." ;; - 132) echo "Signal 4 (SIGILL): Illegal machine instruction." ;; - 133) echo "Signal 5 (SIGTRAP): Debugging error or invalid breakpoint signal." ;; - 134) echo "Signal 6 (SIGABRT): Program aborted itself." ;; - 135) echo "Signal 7 (SIGBUS): Memory error, invalid memory address." ;; - 137) echo "Signal 9 (SIGKILL): Process forcibly terminated (OOM-killer or 'kill -9')." ;; - 139) echo "Signal 11 (SIGSEGV): Segmentation fault, possibly due to invalid pointer access." ;; - 141) echo "Signal 13 (SIGPIPE): Pipe closed unexpectedly." ;; - 143) echo "Signal 15 (SIGTERM): Process terminated normally." ;; - 152) echo "Signal 24 (SIGXCPU): CPU time limit exceeded." ;; - 255) echo "Unknown critical error, often due to missing permissions or broken scripts." ;; - *) echo "Unknown error code ($exit_code)." ;; - esac -} +# License: MIT | https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/LICENSE post_to_api() { - if ! command -v curl &>/dev/null; then - return - fi + if ! command -v curl &> /dev/null; then + return + fi - if [ "$DIAGNOSTICS" = "no" ]; then - return - fi + if [ "$DIAGNOSTICS" = "no" ]; then + return + fi - if [ -z "$RANDOM_UUID" ]; then - return - fi + if [ -z "$RANDOM_UUID" ]; then + return + fi - local API_URL="http://api.community-scripts.org/dev/upload" - local pve_version="not found" - pve_version=$(pveversion | awk -F'[/ ]' '{print $2}') + local API_URL="http://api.community-scripts.org/dev/upload" + local pve_version="not found" + pve_version=$(pveversion | awk -F'[/ ]' '{print $2}') - JSON_PAYLOAD=$( - cat </dev/null; then - return + if ! command -v curl &> /dev/null; then + return fi if [ "$POST_UPDATE_DONE" = true ]; then return 0 fi - exit_code=${2:-1} local API_URL="http://api.community-scripts.org/dev/upload/updatestatus" local status="${1:-failed}" - if [[ "$status" == "failed" ]]; then - local exit_code="${2:-1}" - elif [[ "$status" == "success" ]]; then - local exit_code="${2:-0}" - fi + local error="${2:-No error message}" - if [[ -z "$exit_code" ]]; then - exit_code=1 - fi - - error=$(get_error_description "$exit_code") - - if [ -z "$error" ]; then - error="Unknown error" - fi - - JSON_PAYLOAD=$( - cat </dev/null; then - return - fi - - if [ "$DIAGNOSTICS" = "no" ]; then - return - fi - - if [ -z "$RANDOM_UUID" ]; then - return - fi - - local API_URL="http://api.community-scripts.org/dev/upload" - local pve_version="not found" - pve_version=$(pveversion | awk -F'[/ ]' '{print $2}') - - JSON_PAYLOAD=$( - cat </dev/null; then + return + fi + + if [ "$DIAGNOSTICS" = "no" ]; then + return + fi + + if [ -z "$RANDOM_UUID" ]; then + return + fi + + local API_URL="http://api.community-scripts.org/dev/upload" + local pve_version="not found" + pve_version=$(pveversion | awk -F'[/ ]' '{print $2}') + + JSON_PAYLOAD=$( + cat </dev/null; then return fi @@ -154,7 +153,8 @@ post_update_to_api() { if [ "$POST_UPDATE_DONE" = true ]; then return 0 fi - + exit_code=${2:-1} + local API_URL="http://api.community-scripts.org/dev/upload/updatestatus" local status="${1:-failed}" if [[ "$status" == "failed" ]]; then local exit_code="${2:-1}" @@ -162,7 +162,10 @@ post_update_to_api() { local exit_code="${2:-0}" fi - local API_URL="http://api.community-scripts.org/dev/upload/updatestatus" + if [[ -z "$exit_code" ]]; then + exit_code=1 + fi + error=$(get_error_description "$exit_code") if [ -z "$error" ]; then diff --git a/misc/build.func b/misc/build.func index 0829a09..f232926 100644 --- a/misc/build.func +++ b/misc/build.func @@ -1358,13 +1358,19 @@ check_container_storage() { start() { LOGDIR="/usr/local/community-scripts/logs" mkdir -p "$LOGDIR" - - if command -v pveversion >/dev/null 2>&1; then - install_script - exit 0 + if [ -f /etc/alpine-release ]; then + echo "Running on Alpine Linux – minimal update process." + update_script + return fi - - if [ -f /etc/debian_version ]; then + if command -v pveversion >/dev/null 2>&1; then + if ! (whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "${APP} LXC" --yesno "This will create a New ${APP} LXC. Proceed?" 10 58); then + clear + exit_script + exit + fi + install_script + else CHOICE=$(whiptail --backtitle "[dev] Proxmox VE Helper Scripts" --title "${APP} LXC Update/Setting" --menu \ "Support/Update functions for ${APP} LXC. Choose an option:" \ 12 60 3 \ @@ -1377,30 +1383,23 @@ start() { VERB="no" set_std_mode log_message "INFO" "Update started (Silent Mode)" - update_script ;; 2) VERB="yes" set_std_mode log_message "INFO" "Update started (Verbose Mode)" - update_script ;; 3) clear log_message "INFO" "Update aborted." exit_script - exit 0 + exit ;; esac - fi - if [ -f /etc/alpine-release ]; then - echo "Running on Alpine Linux – minimal update process." + SPINNER_PID="" update_script - exit 0 fi - echo "Unsupported OS detected. Exiting." - exit 1 } # This function collects user settings and integrates all the collected information.