mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-10-01 23:56:18 +00:00
Update share-common.func
This commit is contained in:
@@ -428,70 +428,65 @@ select_container_mount_point() {
|
|||||||
# CLIENT MOUNT FUNCTIONS (NFS/SAMBA COMMON)
|
# CLIENT MOUNT FUNCTIONS (NFS/SAMBA COMMON)
|
||||||
# ==========================================================
|
# ==========================================================
|
||||||
|
|
||||||
# Check if container is privileged (required for client mounts)
|
|
||||||
pmx_check_container_privileged() {
|
|
||||||
local ctid="$1"
|
|
||||||
local conf="/etc/pve/lxc/${ctid}.conf"
|
|
||||||
|
|
||||||
if [[ ! -f "$conf" ]]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local unpriv=$(grep "^unprivileged:" "$conf" | awk '{print $2}')
|
|
||||||
|
|
||||||
if [[ "$unpriv" == "1" ]]; then
|
|
||||||
return 1 # Unprivileged
|
|
||||||
else
|
|
||||||
return 0 # Privileged
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Select and validate LXC container for client mounts
|
|
||||||
pmx_select_privileged_container() {
|
|
||||||
local ctid
|
|
||||||
ctid=$(select_lxc_container)
|
# Check if container is privileged (required for client mounts)
|
||||||
local select_result=$?
|
select_privileged_lxc() {
|
||||||
|
# === Select CT ===
|
||||||
if [[ $select_result -ne 0 ]]; then
|
local ct_list ctid ct_status conf unpriv
|
||||||
|
|
||||||
|
ct_list=$(pct list | awk 'NR>1 {print $1, $3}')
|
||||||
|
if [[ -z "$ct_list" ]]; then
|
||||||
|
dialog --backtitle "ProxMenux" --title "$(translate "Error")" \
|
||||||
|
--msgbox "$(translate "No CTs available in the system.")" 8 50
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
ctid=$(dialog --backtitle "ProxMenux" --title "$(translate "Select CT")" \
|
||||||
|
--menu "$(translate "Select the CT to manage NFS/Samba client:")" 20 70 12 \
|
||||||
|
$ct_list 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
if [[ -z "$ctid" ]]; then
|
if [[ -z "$ctid" ]]; then
|
||||||
|
dialog --backtitle "ProxMenux" --title "$(translate "Error")" \
|
||||||
|
--msgbox "$(translate "No CT was selected.")" 8 50
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if container is privileged
|
# === Start CT if not running ===
|
||||||
if ! pmx_check_container_privileged "$ctid"; then
|
ct_status=$(pct status "$ctid" | awk '{print $2}')
|
||||||
whiptail --title "Privileged Container Required" \
|
|
||||||
--msgbox "Network share mounting (NFS/SAMBA) requires a PRIVILEGED container.\n\nSelected container $ctid is UNPRIVILEGED.\n\nFor unprivileged containers, use:\n• Configure LXC mount points\n• Mount shares on HOST first\n• Then bind-mount to container" \
|
|
||||||
16 80
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Start container if not running
|
|
||||||
local ct_status=$(pct status "$ctid" 2>/dev/null | awk '{print $2}')
|
|
||||||
if [[ "$ct_status" != "running" ]]; then
|
if [[ "$ct_status" != "running" ]]; then
|
||||||
if whiptail --yesno "Container $ctid is not running.\n\nDo you want to start it now?" 10 60 --title "Start Container"; then
|
show_proxmenux_logo
|
||||||
if pct start "$ctid" 2>/dev/null; then
|
echo -e
|
||||||
sleep 3
|
msg_info "$(translate "Starting CT") $ctid..."
|
||||||
ct_status=$(pct status "$ctid" 2>/dev/null | awk '{print $2}')
|
pct start "$ctid"
|
||||||
if [[ "$ct_status" != "running" ]]; then
|
sleep 2
|
||||||
whiptail --title "Error" --msgbox "Failed to start container $ctid" 8 50
|
if [[ "$(pct status "$ctid" | awk '{print $2}')" != "running" ]]; then
|
||||||
return 1
|
msg_error "$(translate "Failed to start the CT.")"
|
||||||
fi
|
|
||||||
else
|
|
||||||
whiptail --title "Error" --msgbox "Failed to start container $ctid" 8 50
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
msg_ok "$(translate "CT started successfully.")"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# === Check privileged/unprivileged ===
|
||||||
|
conf="/etc/pve/lxc/${ctid}.conf"
|
||||||
|
unpriv=$(awk '/^unprivileged:/ {print $2}' "$conf" 2>/dev/null)
|
||||||
|
|
||||||
|
if [[ "$unpriv" == "1" ]]; then
|
||||||
|
dialog --backtitle "ProxMenux" --title "$(translate "Privileged Container Required")" \
|
||||||
|
--msgbox "\n$(translate "Network share mounting (NFS/Samba) requires a PRIVILEGED container.")\n\n$(translate "Selected container") $ctid $(translate "is UNPRIVILEGED.")\n\n$(translate "For unprivileged containers, use instead:")\n • $(translate "Configure LXC mount points")\n • $(translate "Mount shares on HOST first")\n • $(translate "Then bind-mount to container")" 15 75
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Export CTID if all good
|
||||||
echo "$ctid"
|
echo "$ctid"
|
||||||
|
CTID="$ctid"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Common mount point selection for containers
|
# Common mount point selection for containers
|
||||||
pmx_select_container_mount_point() {
|
pmx_select_container_mount_point() {
|
||||||
local ctid="$1"
|
local ctid="$1"
|
||||||
|
Reference in New Issue
Block a user