102 lines
2.4 KiB
Bash
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
|