#!/bin/bash
# Instalar como /usr/local/sbin/lims-reboot-server (root:root, modo 750).
# Solo recibe el id numerico de una solicitud ya autorizada por la aplicacion.
set -euo pipefail

REQUEST_ID="${1:-}"
MYSQL_BIN="/usr/bin/mysql"
MYSQL_CNF="/etc/lims-reboot.cnf"

if [[ ! "$REQUEST_ID" =~ ^[1-9][0-9]*$ ]]; then
  echo "Id de solicitud invalido" >&2
  exit 64
fi

if [[ ! -x "$MYSQL_BIN" || ! -r "$MYSQL_CNF" ]]; then
  echo "Configuracion de MySQL para reinicio no disponible" >&2
  exit 78
fi

# La fila se actualiza antes de apagar el SO: asi el historial conserva que el
# reinicio fue efectivamente iniciado, incluso si el navegador se desconecta.
"$MYSQL_BIN" --defaults-extra-file="$MYSQL_CNF" --batch --skip-column-names \
  -e "UPDATE tb_reinicio_servidor
        SET estado = 'EJECUTANDO',
            fecha_ejecucion = NOW(),
            detalle_sistema = 'Reinicio del sistema iniciado.'
      WHERE id_reinicio = ${REQUEST_ID}
        AND estado = 'PROGRAMADO'"

# Da tiempo a que PHP devuelva la confirmacion al navegador.
sleep 5
/usr/sbin/shutdown -r now "Reinicio solicitado desde LIMS (solicitud ${REQUEST_ID})"
