mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-06-28 04:06:54 +00:00
89 lines
2.4 KiB
Bash
89 lines
2.4 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
# ==============================================================
|
||
|
# ProxMenux - Windows ISO Selector (Dialog Edition)
|
||
|
# ==============================================================
|
||
|
|
||
|
BASE_DIR="/usr/local/share/proxmenux"
|
||
|
UTILS_FILE="$BASE_DIR/utils.sh"
|
||
|
VENV_PATH="/opt/googletrans-env"
|
||
|
ISO_DIR="/var/lib/vz/template/iso"
|
||
|
|
||
|
[[ -f "$UTILS_FILE" ]] && source "$UTILS_FILE"
|
||
|
load_language
|
||
|
initialize_cache
|
||
|
mkdir -p "$ISO_DIR"
|
||
|
|
||
|
function select_windows_iso() {
|
||
|
local CHOICE
|
||
|
CHOICE=$(dialog --backtitle "ProxMenux" --title "$(translate "Windows ISO")" \
|
||
|
--menu "$(translate "Select how to provide the Windows ISO:")" 15 60 5 \
|
||
|
1 "$(translate "Use existing ISO from storage")" \
|
||
|
2 "$(translate "Download ISO using UUP Dump")" \
|
||
|
3 "$(translate "Return to Main Menu")" 3>&1 1>&2 2>&3)
|
||
|
|
||
|
[[ $? -ne 0 ]] && return 1 # ESC o cancelar
|
||
|
|
||
|
case "$CHOICE" in
|
||
|
1)
|
||
|
select_existing_iso || return 1
|
||
|
;;
|
||
|
2)
|
||
|
if source <(curl -fsSL "$UUP_REPO/uupdump_creator.sh"); then
|
||
|
run_uupdump_creator || return 1
|
||
|
detect_latest_iso_created || return 1
|
||
|
else
|
||
|
msg_error "$(translate "UUP Dump script not found.")"
|
||
|
return 1
|
||
|
fi
|
||
|
;;
|
||
|
3)
|
||
|
return 1
|
||
|
;;
|
||
|
esac
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
function select_existing_iso() {
|
||
|
ISO_LIST=()
|
||
|
while read -r line; do
|
||
|
FILENAME=$(basename "$line")
|
||
|
SIZE=$(du -h "$line" | cut -f1)
|
||
|
ISO_LIST+=("$FILENAME" "$SIZE")
|
||
|
done < <(find "$ISO_DIR" -type f -iname "*.iso" ! -iname "virtio*" | sort)
|
||
|
|
||
|
if [[ ${#ISO_LIST[@]} -eq 0 ]]; then
|
||
|
msg_error "$(translate "No ISO images found in $ISO_DIR.")"
|
||
|
sleep 2
|
||
|
return 1
|
||
|
fi
|
||
|
|
||
|
ISO_FILE=$(dialog --backtitle "ProxMenux" --title "$(translate "Available ISO Images")" \
|
||
|
--menu "$(translate "Choose a Windows ISO to use:")" 20 70 10 \
|
||
|
"${ISO_LIST[@]}" 3>&1 1>&2 2>&3)
|
||
|
|
||
|
[[ -z "$ISO_FILE" ]] && msg_warn "$(translate "No ISO selected.")" && return 1
|
||
|
|
||
|
ISO_PATH="$ISO_DIR/$ISO_FILE"
|
||
|
ISO_NAME="$ISO_FILE"
|
||
|
|
||
|
export ISO_PATH ISO_FILE ISO_NAME
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
function detect_latest_iso_created() {
|
||
|
ISO_FILE=$(find "$ISO_DIR" -maxdepth 1 -type f -iname "*.iso" ! -iname "virtio*" -printf "%T@ %p\n" | sort -n | awk '{print $2}' | tail -n 1)
|
||
|
|
||
|
if [[ -z "$ISO_FILE" ]]; then
|
||
|
msg_error "$(translate "No ISO file detected after UUP Dump process.")"
|
||
|
sleep 2
|
||
|
return 1
|
||
|
fi
|
||
|
|
||
|
ISO_NAME=$(basename "$ISO_FILE")
|
||
|
ISO_PATH="$ISO_FILE"
|
||
|
|
||
|
export ISO_PATH ISO_FILE ISO_NAME
|
||
|
return 0
|
||
|
}
|