From 866eb4eb825e62914bc559ab3dffb54dcd612369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leopoldo=20Rodr=C3=ADguez?= Date: Tue, 27 Oct 2026 14:28:55 -0600 Subject: [PATCH] =?UTF-8?q?cambiar-entrada.sh:=20crear=20el=20secreto=20de?= =?UTF-8?q?=20sesi=C3=B3n=20antes=20de=20la=20prueba=20con=20cookie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit En el primer despliegue (27-oct) el servicio todavía no había creado /srv/projects/drogheda/.sesion-secreto (lo crea la primera vez que firma o revisa una cookie), la cookie de prueba salió vacía y las 3 pruebas «con sesión» fallaron; nginx regresó solo al anterior. Ahora la prueba obliga al servicio a crearlo y, si aun así no hay cookie válida, lo dice con claridad. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013SfRSvDd335NPYEbBrDFGE --- backend/nginx/cambiar-entrada.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/backend/nginx/cambiar-entrada.sh b/backend/nginx/cambiar-entrada.sh index b3a9a0f..de441ce 100755 --- a/backend/nginx/cambiar-entrada.sh +++ b/backend/nginx/cambiar-entrada.sh @@ -33,6 +33,9 @@ probar_backend() { prueba "standup cargado" '"ok":true' "curl -s -H 'X-Remote-User: vigia' http://127.0.0.1:8081/api/standup/estado" } cookie_de_prueba() { # sesión de 5 minutos para leo, firmada con el secreto del servicio (sin contraseña) + # El servicio crea su secreto la primera vez que firma o revisa una cookie; en el primer despliegue aún no existe + # (27-oct: por eso fallaron las 3 pruebas «con sesión»). Una cookie falsa «vigente» lo obliga a crearlo (responde 401). + [ -s "$DATOS/.sesion-secreto" ] || curl -s -o /dev/null --max-time 5 -b 'hbox_sesion=x~9999999999~x~x' http://127.0.0.1:8081/api/_auth python3 - "$DATOS/.sesion-secreto" "$HTP" <<'PY' import sys, time, hmac, hashlib sec = open(sys.argv[1]).read().strip().encode() @@ -54,6 +57,9 @@ probar_nginx() { prueba "entrar con contraseña mala → 401" '"codigo":"' "$C -H 'Content-Type: application/json' -d '{\"usuario\":\"vigia-prueba\",\"password\":\"x\"}' https://$HOST/api/entrar" prueba "curl -u (Basic) ya no entra" '"sesion":false' "$C -A curl -u leo:x https://$HOST/api/whoami" local CK; CK="$(cookie_de_prueba 2>/dev/null)" + if [[ ! "$CK" =~ ^leo~[0-9]+~[0-9a-f]{12}~[0-9a-f]{40}$ ]]; then + mal=$((mal+1)); echo " ✕ no pude armar la sesión de prueba de leo: ¿existe $DATOS/.sesion-secreto? ¿está leo en $HTP?" + fi prueba "con sesión: /api/whoami = leo" '"user":"leo"' "$C -b hbox_sesion=$CK https://$HOST/api/whoami" prueba "con sesión: la página abre (200)" "200" "$C -b hbox_sesion=$CK -o /dev/null -w '%{http_code}' https://$HOST/tableros/pendientes/" prueba "POST desde otro sitio → 403" "otro sitio" "$C -b hbox_sesion=$CK -H 'Origin: https://malo.example' -H 'Content-Type: application/json' -d '{}' https://$HOST/api/incidencias"