From 8d61a564a4768179fb2d24f43ab11dca431f55a7 Mon Sep 17 00:00:00 2001 From: Nicolas Arenas Date: Tue, 22 Apr 2025 11:08:37 +0200 Subject: [PATCH 1/5] Add cronjob to check client status --- debian/ogcore.postinst | 55 ++++++++++++++++++++++++++---- debian/ogcore.preinst | 29 +++++++++++++++- etc/cron.d/opengnsys-check-clients | 1 + 3 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 etc/cron.d/opengnsys-check-clients diff --git a/debian/ogcore.postinst b/debian/ogcore.postinst index c4d8150..5173ede 100644 --- a/debian/ogcore.postinst +++ b/debian/ogcore.postinst @@ -4,8 +4,30 @@ set -e set -x . /usr/share/debconf/confmodule +restore_config_if_modified() { + local new="$1" + local backup="$1.bak" + + if [ -f "$backup" ]; then + if ! cmp -s "$new" "$backup"; then + echo ">>> Archivo modificado por el usuario detectado en $new" + echo " - Guardando archivo nuevo como ${new}.new" + mv -f "$new" "${new}.new" + echo " - Restaurando archivo anterior desde backup" + mv -f "$backup" "$new" + else + echo ">>> El archivo $new no ha cambiado desde la última versión, eliminando backup" + rm -f "$backup" + fi + fi +} + USER="opengnsys" + + + + # Detectar si es una instalación nueva o una actualización if [ "$1" = "configure" ] && [ -z "$2" ]; then # Detectar IP de la interfaz de red asociad a la ruta por defecto. @@ -90,29 +112,48 @@ if [ "$1" = "configure" ] && [ -z "$2" ]; then echo ">>> Usuario administrador $ADMIN_USER creado." fi - + # Install crontab + echo ">>> Configurando cron para comprobar disponibilidad de clientes" + cp /opt/opengnsys/ogcore/etc/cron.d/opengnsys-check-clients /etc/cron.d/opengnsys-check-clients + chmod 644 /etc/cron.d/opengnsys-check-clients + chown root:root /etc/cron.d/opengnsys-check-clients elif [ "$1" = "configure" ] && [ -n "$2" ]; then echo ">>> Actualización detectada desde la versión $2" - cd /opt/opengnsys/ogcore/api + # Restaurar archivos de configuración si han sido modificados + restore_config_if_modified "/opt/opengnsys/ogcore/etc/nginx/sites-available/ogcore.conf" + restore_config_if_modified "/opt/opengnsys/ogcore/etc/nginx/sites-available/mercure.conf" + restore_config_if_modified "/opt/opengnsys/ogcore/etc/php/8.3/fpm/pool.d/ogcore-fpm.conf" + restore_config_if_modified "/opt/opengnsys/ogcore/etc/systemd/system/og-mercure.service" + restore_config_if_modified "/opt/opengnsys/ogcore/api/env.json" + cd /opt/opengnsys/ogcore/api echo ">>> Aplicando migraciones de base de datos" php bin/console doctrine:migrations:migrate --no-interaction echo ">>> Configurando servidor web y servicios" - ln -s /opt/opengnsys/ogcore/etc/nginx/sites-available/ogcore.conf /etc/nginx/sites-enabled/ogcore.conf - ln -s /opt/opengnsys/ogcore/etc/php/8.3/fpm/pool.d/ogcore-fpm.conf /etc/php/8.3/fpm/pool.d/ogcore-fpm.conf - ln -s /opt/opengnsys/ogcore/etc/systemd/system/og-mercure.service /etc/systemd/system/og-mercure.service + [ ! -L /etc/nginx/sites-enabled/ogcore.conf ] && ln -s /opt/opengnsys/ogcore/etc/nginx/sites-available/ogcore.conf /etc/nginx/sites-enabled/ogcore.conf + [ ! -L /etc/php/8.3/fpm/pool.d/ogcore-fpm.conf ] && ln -s /opt/opengnsys/ogcore/etc/php/8.3/fpm/pool.d/ogcore-fpm.conf /etc/php/8.3/fpm/pool.d/ogcore-fpm.conf + [ ! -L /etc/systemd/system/og-mercure.service ] && ln -s /opt/opengnsys/ogcore/etc/systemd/system/og-mercure.service /etc/systemd/system/og-mercure.service echo ">>> Configurando permisos de archivos" chown opengnsys:www-data /opt/opengnsys/ chown -R opengnsys:www-data /opt/opengnsys/ogcore + if [ ! -f /etc/cron.d/opengnsys-check-clients ]; then + echo ">>> Configurando cron para comprobar disponibilidad de clientes" + cp /opt/opengnsys/ogcore/etc/cron.d/opengnsys-check-clients /etc/cron.d/opengnsys-check-clients + chmod 644 /etc/cron.d/opengnsys-check-clients + chown root:root /etc/cron.d/opengnsys-check-clients + else + echo ">>> El archivo de cron ya existe, no se realizan cambios se ajustan permisos" + chmod 644 /etc/cron.d/opengnsys-check-clients + chown root:root /etc/cron.d/opengnsys-check-clients + fi systemctl daemon-reload systemctl enable og-mercure systemctl restart og-mercure systemctl restart nginx systemctl restart php8.3-fpm -fi - +fi # Recargar systemd y reiniciar servicios en ambos casos diff --git a/debian/ogcore.preinst b/debian/ogcore.preinst index dc60472..5fd2cfc 100644 --- a/debian/ogcore.preinst +++ b/debian/ogcore.preinst @@ -2,6 +2,19 @@ set -e +backup_file_if_exists() { + local original="$1" + local backup="$1.bak" + + if [ -e "$original" ]; then + echo " - Guardando backup de $original en $backup" + cp -a "$original" "$backup" + fi +} + +CONFIG_FILE="/opt/opengnsys/ogcore/api/env.json" +BACKUP_FILE="/opt/opengnsys/ogcore/api/env.json.bak" + # Asegurarse de que el usuario exista USER="opengnsys" HOME_DIR="/opt/opengnsys" @@ -12,4 +25,18 @@ else useradd -m -d "$HOME_DIR" -s /bin/bash "$USER" fi -exit 0 \ No newline at end of file +CONFIG_FILE="/opt/opengnsys/ogcore/api/env.json" +BACKUP_FILE="/opt/opengnsys/ogcore/api/env.json.bak" + +# Solo hacemos backup si el archivo existe y es una actualización (posición 1 = upgrade) +if [ "$1" = "upgrade" ]; then + echo ">>> Backup de archivos de configuración reales en /opt/opengnsys" + backup_file_if_exists "/opt/opengnsys/ogcore/etc/nginx/sites-available/ogcore.conf" + backup_file_if_exists "/opt/opengnsys/ogcore/etc/nginx/sites-available/mercure.conf" + backup_file_if_exists "/opt/opengnsys/ogcore/etc/php/8.3/fpm/pool.d/ogcore-fpm.conf" + backup_file_if_exists "/opt/opengnsys/ogcore/etc/systemd/system/og-mercure.service" + backup_file_if_exists "/opt/opengnsys/ogcore/api/env.json" +fi + +exit 0 + diff --git a/etc/cron.d/opengnsys-check-clients b/etc/cron.d/opengnsys-check-clients new file mode 100644 index 0000000..e762794 --- /dev/null +++ b/etc/cron.d/opengnsys-check-clients @@ -0,0 +1 @@ +*/5 * * * * opengnsys php -d memory_limit=512M /opt/opengnsys/ogcore/api/bin/console opengnsys:check-client-availability >> /opt/opengnsys/ogcore/api/var/log/cron.log 2>&1 From fbb694581e48b0bfd2808fc75907a3ce7815b94c Mon Sep 17 00:00:00 2001 From: Manuel Aranda Date: Wed, 23 Apr 2025 17:17:42 +0200 Subject: [PATCH 2/5] Updated ogAgent ping updatedAt. Fixed server date --- config/api_platform/CommandTaskSchedule.yaml | 0 src/Command/TestCommand.php | 21 +++++++++++++++++++ .../OgAgent/Webhook/StatusController.php | 4 +--- src/Dto/Input/CommandTaskScheduleInput.php | 8 +++++++ src/Dto/Output/CommandTaskScheduleOutput.php | 8 +++++++ .../CommandTaskScheduleProcessor.php | 8 +++++++ .../Provider/CommandTaskScheduleProvider.php | 8 +++++++ .../Constraints/RemoteCalendarRuleUnique.php | 8 +++++++ .../RemoteCalendarRuleUniqueValidator.php | 8 +++++++ 9 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 config/api_platform/CommandTaskSchedule.yaml create mode 100644 src/Command/TestCommand.php create mode 100644 src/Dto/Input/CommandTaskScheduleInput.php create mode 100644 src/Dto/Output/CommandTaskScheduleOutput.php create mode 100644 src/State/Processor/CommandTaskScheduleProcessor.php create mode 100644 src/State/Provider/CommandTaskScheduleProvider.php create mode 100644 src/Validator/Constraints/RemoteCalendarRuleUnique.php create mode 100644 src/Validator/Constraints/RemoteCalendarRuleUniqueValidator.php diff --git a/config/api_platform/CommandTaskSchedule.yaml b/config/api_platform/CommandTaskSchedule.yaml new file mode 100644 index 0000000..e69de29 diff --git a/src/Command/TestCommand.php b/src/Command/TestCommand.php new file mode 100644 index 0000000..285bee9 --- /dev/null +++ b/src/Command/TestCommand.php @@ -0,0 +1,21 @@ + 'Client not found'], Response::HTTP_NOT_FOUND); } - $updateAt = (new \DateTime())->setTimestamp((int)$data['timestamp']); - - $client->setUpdatedAt($updateAt); + $client->setUpdatedAt(new \DateTime()); $this->entityManager->persist($client); $this->entityManager->flush(); } diff --git a/src/Dto/Input/CommandTaskScheduleInput.php b/src/Dto/Input/CommandTaskScheduleInput.php new file mode 100644 index 0000000..ea8b688 --- /dev/null +++ b/src/Dto/Input/CommandTaskScheduleInput.php @@ -0,0 +1,8 @@ + Date: Wed, 23 Apr 2025 17:29:05 +0200 Subject: [PATCH 3/5] Updated changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5103799..9324f93 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,9 @@ # Changelog +## [0.11.2] - 2025-04-23 +### Fixed +- Se ha cambiado la forma en guardar la fecha al recibir "ping" de los clientes. + +--- ## [0.11.1] - 2025-04-16 ### Fixed - Se ha corregido un error al crear imagen versionada. Si la particion de origen era diferente, no dejaba crear. From ed13a7adecb18c8ac9ef94cf9c0671fe1435f93c Mon Sep 17 00:00:00 2001 From: Manuel Aranda Date: Wed, 23 Apr 2025 17:42:36 +0200 Subject: [PATCH 4/5] Deleted test command --- src/Command/TestCommand.php | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 src/Command/TestCommand.php diff --git a/src/Command/TestCommand.php b/src/Command/TestCommand.php deleted file mode 100644 index 285bee9..0000000 --- a/src/Command/TestCommand.php +++ /dev/null @@ -1,21 +0,0 @@ - Date: Tue, 29 Apr 2025 15:41:02 +0200 Subject: [PATCH 5/5] updated control --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 6439d95..565e5bf 100644 --- a/debian/control +++ b/debian/control @@ -12,5 +12,5 @@ Depends: ${misc:Depends}, mariadb-server, systemd, nginx, libzip-dev, zip, unzip php8.3-gd, php8.3-ldap, php8.3-mbstring, php8.3-mysql, php8.3-common, php8.3-xml, php8.3-zip, mercure Description: OpenGnsys Core - This is a longer description of the ogcore package. + OgCore package is responsible about management of Opengnsys platform OpenGnsys Core is a platform for system management.