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:
@@ -222,58 +222,47 @@ pmx_choose_or_create_group() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Requiere bash
|
||||||
pmx_ensure_host_group() {
|
pmx_ensure_host_group() {
|
||||||
local group_name="$1"
|
local group_name="$1"
|
||||||
local suggested_gid="${2:-}"
|
local suggested_gid="${2:-}"
|
||||||
local base_gid=101000
|
local base_gid=101000
|
||||||
local new_gid
|
local new_gid gid
|
||||||
|
|
||||||
# Helper: return 0 if GID is in use, 1 otherwise
|
# Si ya existe, devuelve su GID
|
||||||
local _gid_in_use() {
|
|
||||||
local gid="$1"
|
|
||||||
# getent group prints "name:x:GID:members"; check numeric field 3
|
|
||||||
getent group | awk -F: -v G="$gid" '$3==G {found=1} END{exit !found}'
|
|
||||||
}
|
|
||||||
|
|
||||||
# If the group already exists, return its GID
|
|
||||||
if getent group "$group_name" >/dev/null 2>&1; then
|
if getent group "$group_name" >/dev/null 2>&1; then
|
||||||
getent group "$group_name" | cut -d: -f3
|
gid="$(getent group "$group_name" | cut -d: -f3)"
|
||||||
|
echo "$gid"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create with suggested GID (if provided)
|
|
||||||
if [[ -n "$suggested_gid" ]]; then
|
if [[ -n "$suggested_gid" ]]; then
|
||||||
if _gid_in_use "$suggested_gid"; then
|
# Verifica que el GID sugerido esté libre
|
||||||
|
if getent group "$suggested_gid" >/dev/null 2>&1; then
|
||||||
msg_error "$(translate "GID already in use:") $suggested_gid"
|
msg_error "$(translate "GID already in use:") $suggested_gid"
|
||||||
echo ""
|
echo ""
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
if groupadd -g "$suggested_gid" "$group_name" >/dev/null 2>&1; then
|
if ! groupadd -g "$suggested_gid" "$group_name" >/dev/null 2>&1; then
|
||||||
msg_ok "$(translate "Group created:") $group_name"
|
|
||||||
else
|
|
||||||
msg_error "$(translate "Failed to create group:") $group_name"
|
msg_error "$(translate "Failed to create group:") $group_name"
|
||||||
echo ""
|
echo ""
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
msg_ok "$(translate "Group created:") $group_name"
|
||||||
else
|
else
|
||||||
# Auto-pick first free GID >= 101000
|
# Busca el primer GID libre >= 101000
|
||||||
new_gid="$base_gid"
|
new_gid="$base_gid"
|
||||||
while _gid_in_use "$new_gid"; do
|
while getent group "$new_gid" >/dev/null 2>&1; do
|
||||||
new_gid=$((new_gid+1))
|
new_gid=$((new_gid+1))
|
||||||
done
|
done
|
||||||
|
if ! groupadd -g "$new_gid" "$group_name" >/dev/null 2>&1; then
|
||||||
if groupadd -g "$new_gid" "$group_name" >/dev/null 2>&1; then
|
|
||||||
msg_ok "$(translate "Group created:") $group_name"
|
|
||||||
else
|
|
||||||
msg_error "$(translate "Failed to create group:") $group_name"
|
msg_error "$(translate "Failed to create group:") $group_name"
|
||||||
echo ""
|
echo ""
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
msg_ok "$(translate "Group created:") $group_name"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Resolve and return the GID
|
|
||||||
local gid
|
|
||||||
gid="$(getent group "$group_name" | cut -d: -f3)"
|
gid="$(getent group "$group_name" | cut -d: -f3)"
|
||||||
if [[ -z "$gid" ]]; then
|
if [[ -z "$gid" ]]; then
|
||||||
msg_error "$(translate "Failed to resolve group GID for") $group_name"
|
msg_error "$(translate "Failed to resolve group GID for") $group_name"
|
||||||
@@ -293,6 +282,7 @@ pmx_ensure_host_group() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
pmx_prepare_host_shared_dir() {
|
pmx_prepare_host_shared_dir() {
|
||||||
|
|
||||||
local dir="$1" group_name="$2"
|
local dir="$1" group_name="$2"
|
||||||
|
Reference in New Issue
Block a user