From 8ccd06b596744601c5cbdb3c6c2b59930f1e1032 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 4 Nov 2025 16:38:46 +0100 Subject: [PATCH] Refactor message output and improve SSH check logic Replaces many msg_info calls with msg_custom for more consistent and expressive status messages in build.func. Refines SSH client detection in core.func to better distinguish local, subnet, and external connections, and adds additional warnings for external SSH usage. --- misc/build.func | 50 ++++++++++++++++++++++++------------------------- misc/core.func | 15 ++++++++++++++- 2 files changed, 39 insertions(+), 26 deletions(-) diff --git a/misc/build.func b/misc/build.func index ac1dee32c..ba33674ba 100644 --- a/misc/build.func +++ b/misc/build.func @@ -220,7 +220,7 @@ maxkeys_check() { exit 1 fi - echo -e "${CM}${GN} All kernel key limits are within safe thresholds.${CL}" + # Silent success - only show errors if they exist } # ------------------------------------------------------------------------------ @@ -351,7 +351,7 @@ base_settings() { if [[ -n "$APT_CACHER_IP" && "$APT_CACHER" == "yes" ]]; then if ! curl -s --connect-timeout 2 "http://${APT_CACHER_IP}:3142" >/dev/null 2>&1; then msg_warn "APT Cacher configured but not reachable at ${APT_CACHER_IP}:3142" - msg_info "Disabling APT Cacher for this installation" + msg_custom "⚠️" "${YW}" "Disabling APT Cacher for this installation" APT_CACHER="" APT_CACHER_IP="" else @@ -1497,7 +1497,7 @@ maybe_offer_save_app_defaults() { break ;; "Keep Current") - msg_info "Keeping current app defaults: ${app_vars_path}" + msg_custom "ℹ️" "${BL}" "Keeping current app defaults: ${app_vars_path}" break ;; "View Diff") @@ -1506,7 +1506,7 @@ maybe_offer_save_app_defaults() { --scrolltext --textbox "$diff_tmp" 25 100 ;; "Cancel" | *) - msg_info "Canceled. No changes to app defaults." + msg_custom "🚫" "${YW}" "Canceled. No changes to app defaults." break ;; esac @@ -2212,7 +2212,7 @@ build_container() { # Check for Intel GPU - look for Intel vendor ID [8086] if echo "$pci_vga_info" | grep -q "\[8086:"; then - msg_info "Detected Intel GPU" + msg_custom "🎮" "${BL}" "Detected Intel GPU" if [[ -d /dev/dri ]]; then for d in /dev/dri/renderD* /dev/dri/card*; do [[ -e "$d" ]] && INTEL_DEVICES+=("$d") @@ -2222,7 +2222,7 @@ build_container() { # Check for AMD GPU - look for AMD vendor IDs [1002] (AMD/ATI) or [1022] (AMD) if echo "$pci_vga_info" | grep -qE "\[1002:|\[1022:"; then - msg_info "Detected AMD GPU" + msg_custom "🎮" "${RD}" "Detected AMD GPU" if [[ -d /dev/dri ]]; then # Only add if not already claimed by Intel if [[ ${#INTEL_DEVICES[@]} -eq 0 ]]; then @@ -2235,7 +2235,7 @@ build_container() { # Check for NVIDIA GPU - look for NVIDIA vendor ID [10de] if echo "$pci_vga_info" | grep -q "\[10de:"; then - msg_info "Detected NVIDIA GPU" + msg_custom "🎮" "${GN}" "Detected NVIDIA GPU" # Simple passthrough - just bind /dev/nvidia* devices if they exist for d in /dev/nvidia* /dev/nvidiactl /dev/nvidia-modeset /dev/nvidia-uvm /dev/nvidia-uvm-tools; do @@ -2243,10 +2243,10 @@ build_container() { done if [[ ${#NVIDIA_DEVICES[@]} -gt 0 ]]; then - msg_info "Found ${#NVIDIA_DEVICES[@]} NVIDIA device(s) for passthrough" + msg_custom "🎮" "${GN}" "Found ${#NVIDIA_DEVICES[@]} NVIDIA device(s) for passthrough" else msg_warn "NVIDIA GPU detected via PCI but no /dev/nvidia* devices found" - msg_info "Skipping NVIDIA passthrough (host drivers may not be loaded)" + msg_custom "ℹ️" "${YW}" "Skipping NVIDIA passthrough (host drivers may not be loaded)" fi fi @@ -2307,7 +2307,7 @@ EOF fi if [[ $gpu_count -eq 0 ]]; then - msg_info "No GPU devices found for passthrough" + msg_custom "ℹ️" "${YW}" "No GPU devices found for passthrough" return 0 fi @@ -2316,7 +2316,7 @@ EOF if [[ $gpu_count -eq 1 ]]; then # Automatic selection for single GPU selected_gpu="${available_gpus[0]}" - msg_info "Automatically configuring ${selected_gpu} GPU passthrough" + msg_custom "⚙️" "${GN}" "Automatically configuring ${selected_gpu} GPU passthrough" else # Multiple GPUs - ask user echo -e "\n${INFO} Multiple GPU types detected:" @@ -2407,7 +2407,7 @@ EOF # Coral TPU passthrough if [[ -e /dev/apex_0 ]]; then - msg_info "Detected Coral TPU - configuring passthrough" + msg_custom "🔌" "${BL}" "Detected Coral TPU - configuring passthrough" echo "lxc.mount.entry: /dev/apex_0 dev/apex_0 none bind,optional,create=file" >>"$LXC_CONFIG" fi } @@ -2546,7 +2546,7 @@ destroy_lxc() { fi ;; "" | n | no) - msg_info "Container was not removed." + msg_custom "ℹ️" "${BL}" "Container was not removed." ;; *) msg_warn "Invalid response. Container was not removed." @@ -2599,7 +2599,7 @@ fix_gpu_gids() { fi # Silent operation to avoid spinner conflicts - echo -e "\n 🔧 Detecting and setting correct GPU group IDs" + msg_custom "🔧" "${BL}" "Detecting and setting correct GPU group IDs" # Ermittle die tatsächlichen GIDs aus dem Container local video_gid=$(pct exec "$CTID" -- sh -c "getent group video 2>/dev/null | cut -d: -f3") @@ -2620,7 +2620,7 @@ fix_gpu_gids() { [[ -z "$render_gid" ]] && render_gid="104" # Ultimate fallback fi - echo " ℹ️ Container GIDs detected - video:${video_gid}, render:${render_gid}" + msg_custom "ℹ️" "${DGN}" "Container GIDs detected - video:${video_gid}, render:${render_gid}" # Prüfe ob die GIDs von den Defaults abweichen local need_update=0 @@ -2629,7 +2629,7 @@ fix_gpu_gids() { fi if [[ $need_update -eq 1 ]]; then - echo " 🔄 Updating device GIDs in container config" + msg_custom "🔄" "${YW}" "Updating device GIDs in container config" # Stoppe Container für Config-Update pct stop "$CTID" >/dev/null 2>&1 @@ -2667,9 +2667,9 @@ fix_gpu_gids() { pct start "$CTID" >/dev/null 2>&1 sleep 3 - echo -e " ✔️ Device GIDs updated successfully\n" + msg_ok "Device GIDs updated successfully" else - echo -e " ✔️ Device GIDs are already correct\n" + msg_ok "Device GIDs are already correct" fi if [[ "$CT_TYPE" == "0" ]]; then pct exec "$CTID" -- bash -c " @@ -2992,7 +2992,7 @@ create_lxc_container() { ) pveam update >/dev/null 2>&1 || msg_warn "Could not update template catalog (pveam update failed)." - + msg_ok "Template search completed" #echo "[DEBUG] pveam available output (first 5 lines with .tar files):" @@ -3081,7 +3081,7 @@ create_lxc_container() { exit 225 fi else - msg_info "Installation cancelled" + msg_custom "🚫" "${YW}" "Installation cancelled" exit 0 fi else @@ -3174,7 +3174,7 @@ create_lxc_container() { exit 220 } else - msg_info "Installation cancelled" + msg_custom "🚫" "${YW}" "Installation cancelled" exit 1 fi else @@ -3187,9 +3187,9 @@ create_lxc_container() { # Validate that we found a template if [[ -z "$TEMPLATE" ]]; then msg_error "No template found for ${PCT_OSTYPE} ${PCT_OSVERSION}" - msg_info "Please check:" - msg_info " - Is pveam catalog available? (run: pveam available -section system)" - msg_info " - Does the template exist for your OS version?" + msg_custom "ℹ️" "${YW}" "Please check:" + msg_custom " •" "${YW}" "Is pveam catalog available? (run: pveam available -section system)" + msg_custom " •" "${YW}" "Does the template exist for your OS version?" exit 225 fi @@ -3227,7 +3227,7 @@ create_lxc_container() { TEMPLATE="$ONLINE_TEMPLATE" NEED_DOWNLOAD=1 else - msg_info "Continuing with local template $TEMPLATE" + msg_custom "ℹ️" "${BL}" "Continuing with local template $TEMPLATE" fi fi diff --git a/misc/core.func b/misc/core.func index d4e288483..699ac1168 100644 --- a/misc/core.func +++ b/misc/core.func @@ -231,11 +231,24 @@ ssh_check() { local client_ip=$(awk '{print $1}' <<<"$SSH_CLIENT") local host_ip=$(hostname -I | awk '{print $1}') - if [[ "$client_ip" == "127.0.0.1" || "$client_ip" == "$host_ip" ]]; then + # Check if connection is local (Proxmox WebUI or same machine) + # - localhost (127.0.0.1, ::1) + # - same IP as host + # - local network range (10.x, 172.16-31.x, 192.168.x) + if [[ "$client_ip" == "127.0.0.1" || "$client_ip" == "::1" || "$client_ip" == "$host_ip" ]]; then return fi + # Check if client is in same local network (optional, safer approach) + local host_subnet=$(echo "$host_ip" | cut -d. -f1-3) + local client_subnet=$(echo "$client_ip" | cut -d. -f1-3) + if [[ "$host_subnet" == "$client_subnet" ]]; then + return + fi + + # Only warn for truly external connections msg_warn "Running via external SSH (client: $client_ip)." + msg_warn "For better stability, consider using the Proxmox Shell (Console) instead." fi }