Files
calendario_contactos/radicale_users.sh
T
2025-11-13 01:11:01 +01:00

102 lines
2.4 KiB
Bash

#!/usr/bin/env bash
set -e
USERS_FILE="config/users"
# --- Funciones auxiliares ---
function ensure_users_file() {
if [ ! -f "$USERS_FILE" ]; then
echo "⚠️ No existe $USERS_FILE. Creándolo..."
mkdir -p config
touch "$USERS_FILE"
fi
}
function restart_radicale() {
echo ""
echo "🔄 Reiniciando contenedor Radicale..."
docker compose restart radicale >/dev/null 2>&1 || true
echo "✅ Radicale reiniciado correctamente."
echo ""
}
function list_users() {
ensure_users_file
echo "👥 Usuarios actuales:"
if [ -s "$USERS_FILE" ]; then
cut -d':' -f1 "$USERS_FILE"
else
echo "(ninguno)"
fi
echo ""
}
function add_user() {
ensure_users_file
read -rp "Ingrese el nombre de usuario nuevo: " user
if grep -q "^$user:" "$USERS_FILE"; then
echo "⚠️ El usuario '$user' ya existe."
return
fi
htpasswd -B "$USERS_FILE" "$user"
restart_radicale
}
function edit_user() {
ensure_users_file
read -rp "Ingrese el usuario a modificar: " user
if ! grep -q "^$user:" "$USERS_FILE"; then
echo "⚠️ El usuario '$user' no existe."
return
fi
echo "✏️ Cambiando contraseña para '$user'..."
htpasswd -B "$USERS_FILE" "$user"
restart_radicale
}
function delete_user() {
ensure_users_file
read -rp "Ingrese el usuario a eliminar: " user
if ! grep -q "^$user:" "$USERS_FILE"; then
echo "⚠️ El usuario '$user' no existe."
return
fi
read -rp "¿Estás seguro de eliminar '$user'? (s/n): " confirm
if [[ "$confirm" =~ ^[sS]$ ]]; then
sed -i "/^$user:/d" "$USERS_FILE"
restart_radicale
echo "❌ Usuario '$user' eliminado."
else
echo "🚫 Operación cancelada."
fi
echo ""
}
# --- Menú interactivo ---
while true; do
echo "========================================"
echo "🔐 GESTOR DE USUARIOS RADICALE"
echo "========================================"
echo "1️⃣ Listar usuarios"
echo "2️⃣ Crear nuevo usuario"
echo "3️⃣ Editar contraseña de usuario"
echo "4️⃣ Eliminar usuario"
echo "5️⃣ Salir"
echo "----------------------------------------"
read -rp "Selecciona una opción [1-5]: " opt
echo ""
case "$opt" in
1) list_users ;;
2) add_user ;;
3) edit_user ;;
4) delete_user ;;
5) echo "👋 Saliendo..."; exit 0 ;;
*) echo "❗ Opción no válida." ;;
esac
echo ""
read -rp "Presiona ENTER para continuar..." pause
clear
done