Files
egutierrez 50013b0ecb feat: pipeline completo de eliminacion de agentes y robots
Nuevos scripts que revierten todo lo que create-full.sh genera:
- deactivate-matrix.sh: desactiva usuario via Synapse admin API
- remove-launcher-import.sh: elimina blank import del launcher
- remove-env-vars.sh: limpia las 4 env vars del .env
- delete-full.sh: orquestador de 7 pasos (validate, stop, deactivate,
  remove import, remove env, delete files, rebuild)

Flags: --force (sin confirmacion), --keep-matrix (preserva usuario).
Actualiza remove.sh con referencia a delete-full.sh.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:44:38 +00:00

48 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# deactivate-matrix.sh — desactiva un usuario Matrix via Synapse admin API
#
# Uso:
# ./dev-scripts/agent/deactivate-matrix.sh <agent-id>
#
# Desactiva la cuenta del bot en el homeserver. La accion es irreversible
# desde la API (el usuario no podra volver a loguearse).
#
# Requiere en .env:
# MATRIX_ADMIN_TOKEN, MATRIX_HOMESERVER, MATRIX_SERVER_NAME
source "$(dirname "$0")/../_common.sh"
load_env
need_arg "${1:-}"
ID="$1"
NORM="$(normalize_id "$ID")"
[[ -n "${MATRIX_ADMIN_TOKEN:-}" ]] || fail "MATRIX_ADMIN_TOKEN no esta en .env"
[[ -n "${MATRIX_HOMESERVER:-}" ]] || fail "MATRIX_HOMESERVER no esta en .env"
[[ -n "${MATRIX_SERVER_NAME:-}" ]] || fail "MATRIX_SERVER_NAME no esta en .env"
USER_ID="@${ID}:${MATRIX_SERVER_NAME}"
info "Desactivando $USER_ID en $MATRIX_HOMESERVER..."
# Synapse admin API: deactivate user
# https://element-hq.github.io/synapse/latest/admin_api/user_admin_api.html#deactivate-account
HTTP_CODE=$(curl -s -o /tmp/_deactivate_response.json -w '%{http_code}' \
-X POST \
"${MATRIX_HOMESERVER}/_synapse/admin/v1/deactivate/${USER_ID}" \
-H "Authorization: Bearer ${MATRIX_ADMIN_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"erase": false}')
if [[ "$HTTP_CODE" == "200" ]]; then
ok "$USER_ID desactivado exitosamente"
elif [[ "$HTTP_CODE" == "404" ]]; then
warn "Usuario $USER_ID no encontrado en el servidor (ya eliminado?)"
else
BODY=$(cat /tmp/_deactivate_response.json 2>/dev/null || echo "(sin respuesta)")
fail "Error al desactivar $USER_ID — HTTP $HTTP_CODE: $BODY"
fi
rm -f /tmp/_deactivate_response.json