ogagent/CHANGELOG.md

588 lines
11 KiB
Markdown

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [8.5.9] - 2026-07-23
### Fixed
- Preserve original exit code in Windows PowerShell script wrapper when redirecting streams, ensuring ogcore receives failure status (e.g., CommandNotFoundException).
- Prevent raw PowerShell CLIXML output from leaking into stderr on Windows when a command fails non-interactively.
- Removed the `START_SCRIPT` webhook entirely from the script launching process for both admin (`client=false`) and user-session (`client=true`) paths. This eliminates the race condition that caused duplicate traces in `ogcore`, as `ogcore` now marks traces as `IN_PROGRESS` synchronously.
## [8.5.6] - 2026-07-21
### Added
- Notify `ogcore` via webhook when natively executed scripts finish, bringing `ogagent` in line with `ogLive` functionality (resolves stuck traces in "Enviada" state).
## [8.5.5] - 2026-05-13
### Changed
- Promote all ogLive action handlers (`process_CrearImagen`, `process_RestaurarImagen`, `process_EjecutarScript`, etc.) from `DEBUG` to `INFO` so that the action trace is visible without enabling verbose logging. Polling operations (`process_status`, `process_Sondeo`) remain at `DEBUG`.
- Promote job completion log in `oglive_worker.mon()` from `DEBUG` to `INFO`, now including the job result.
- When `interfaceAdmin()` fails, log the script stdout at `WARNING` in addition to the existing `ERROR` for stderr, providing full diagnostic context without requiring a debug-level rerun.
## [8.5.5] - 2026-05-20
### Changed
- On machines with multiple network interfaces, the agent now selects the interface whose IP the OS routing table would use to reach ogcore, instead of always picking the first interface returned by the OS. This ensures the agent registers with the correct IP on multi-homed machines. If the routing query fails (network not ready yet) the detection loop keeps retrying rather than accepting a wrong interface. Falls back to the first available interface only when the routing query succeeds but no interface matches (e.g. NAT or VPN).
## [8.5.4] - 2026-05-11
### Fixed
- Network interface detection no longer blocks activation with a hard 5-minute timeout. `onActivation()` now returns immediately and launches a background thread (`_setup_network`) that retries indefinitely until a network interface is available, then registers with ogcore. This fixes a race condition on Windows machines where the network stack was not ready when the service started; the workaround of configuring a delayed service start is no longer needed. The same improvement applies to Linux and macOS where the service could also start before DHCP had assigned an address.
- Guard against `AttributeError` in `onDeactivation()`, `onLogin()` and `onLogout()` if the service is stopped or a session event fires before the network interface has been detected.
## [8.5.3] - 2026-05-07
### Added
- Report `busy` and `st` fields in the periodic heartbeat ping to ogCore, so ogCore can update the client status without waiting for a command response. `busy` is `true` while a job is running; `st` indicates the base OS type (`OGL`, `LNX`, `WIN`, `OSX`)
## [8.5.2] - 2026-04-28
### Fixed
- Reconnect to ogcore after a connection loss: the monitoring thread now detects when contact is restored and re-sends `ogagent/started` so ogcore re-learns the agent's secret and marks it as active
- Fix crash in REST client when a network-level error (timeout, connection refused) occurred: `e.response` was accessed unconditionally but is `None` for non-HTTP errors
## [8.5.1] - 2026-04-28
### Fixed
- Start the HTTP server after all modules complete activation, so that ogcore commands never arrive before the new secret has been communicated via `ogagent/started`
## [8.5.0] - 2026-03-23
### Added
- Write the authentication token to /tmp/ogagent.token on oglive startup
### Changed
- Write the authentication token only in oglive mode, not in OS mode
## [8.4.3] - 2026-03-23
### Fixed
- Fix script execution on Windows when C:\tmp does not exist: replace hardcoded /tmp path with tempfile.gettempdir() for the EjecutarScript job_id handoff file
## [8.4.2] - 2025-10-16
- Wrt the last change, also log the condition
- Refresh the menu after calling getConfiguration
## [8.4.1] - 2025-10-15
### Fixed
- Don't return 500 on POST requests with an empty body
## [8.4.0] - 2025-09-29
### Changed
- Show a user-friendly error if the agent fails to start
## [8.3.3] - 2025-09-23
### Fixed
- Exit from the infinite loop
## [8.3.2] - 2025-09-18
### Fixed
- Wait for children within a loop, not just once
## [8.3.1] - 2025-09-11
### Fixed
- Fix EOF bug in interfaceAdm()
## [8.3.0] - 2025-08-29
### Changed
- Put InventarioHardware to work
## [8.2.0] - 2025-08-29
### Changed
- Do git stuffs
## [8.1.1] - 2025-08-28
### Changed
- Make Configurar with gen-script=true both synchronous and faster
## [8.1.0] - 2025-08-28
### Changed
- Pass a new parameter "gen-script" to Configurar
## [8.0.0] - 2025-08-08
### Changed
- Return HTTP 409 on more than one background jobs
## [7.3.3] - 2025-08-07
### Fixed
- wait() for the browser
## [7.3.2] - 2025-08-04
### Fixed
- Fix syntax
## [7.3.1] - 2025-08-04
### Fixed
- On user logout, write the user to the log
- On EjecutarScript with client=true, return a job ID
## [7.3.0] - 2025-07-31
### Fixed
- Wait for zombies
### Changed
- Change "jobid" for "job_id" for consistency
## [7.2.2] - 2025-07-30
### Added
- Add missing file stop-agent.ps1
## [7.2.1] - 2025-07-29
### Changed
- Run process in a new POSIX session and group, send termination signals to the whole process group
## [7.2.0] - 2025-07-28
### Added
- Log whether we are in ogLive or not
## [7.1.0] - 2025-07-24
### Changed
- Don't pass the "tag" parameter to CrearImagenGit
## [7.0.0] - 2025-07-18
### Changed
- Run the new extension-less scripts from the cloning engine
## [6.3.0] - 2025-07-18
### Added
- Add new parameter for Configurar
## [6.2.0] - 2025-07-18
### Added
- Add endpoint for GetGitData
## [6.1.1] - 2025-06-26
### Changed
- Write output of launch_browser into a file
## [6.1.0] - 2025-06-25
### Added
- Added ModificarImagenGit
## [6.0.0] - 2025-06-19
### Changed
- Changed the names of some endpoints for consistency between oglive and OS
- Changed label in the windows installer
## [5.9.0] - 2025-06-16
### Added
- Added changes for oggit
## [5.8.1] - 2025-06-13
### Fixed
- Improve fail condition when no network is detected
## [5.8.0] - 2025-06-12
### Changed
- Agents aren't being sent any signals on user logout. On the server side, assume that client disconnection == logout
## [5.7.1] - 2025-06-05
### Fixed
- Correcly handle UNIX signals in the user instance of the agent
## [5.7.0] - 2025-05-27
### Changed
- Use TLS again
## [5.6.0] - 2025-05-21
### Changed
- Launch QT6 browser
- Change URLs using dbus
## [5.5.0] - 2025-05-19
### Changed
- Revert to the QT4 browser again
## [5.4.0] - 2025-05-19
### Changed
- Disabled TLS on request
## [5.3.0] - 2025-05-16
### Changed
- Execute 'launch_browser' rather than 'browser'
## [5.2.0] - 2025-05-14
### Added
- Log duration of user sessions
## [5.1.1] - 2025-05-06
### Fixed
- Fixed URL for notifying stop to ogcore
## [5.1.0] - 2025-05-06
### Added
- Added powershell helper script for logging out from windows
## [5.0.0] - 2025-05-06
### Added
- Use TLS
## [4.0.0] - 2025-04-24
### Added
- Authn/authz to the oglive agent
## [3.3.0] - 2025-04-14
### Added
- Log stuff to a new json log
## [3.2.0] - 2025-04-10
### Added
- Operating system: periodically ping ogcore
## [3.1.0] - 2025-04-07
### Added
- Oglive: periodically ping ogcore
## [3.0.0] - 2025-03-31
### Changed
- Ignore module provided in the URLs to the API
## [2.0.0] - 2025-03-26
### Changed
- EjecutarScript/ConsolaRemota: expect "scp" parameter encoded in base64
## [1.7.1] - 2025-03-25
### Fixed
- Make cfg2obj more robust
## [1.7.0] - 2025-03-21
### Removed
- Delete the new "ptt" parameter. It's not needed.
## [1.6.0] - 2025-03-12
### Changed
- Don't invoke bash code for some functionalities
## [1.5.0] - 2025-03-12
### Changed
- Accept new "ptt" parameter in /ogAdmCli/Configurar
### Removed
- No longer recognise the unused "che" parameter in /ogAdmCli/Configurar
## [1.4.9] - 2025-02-20
### Changed
- Notify ogcore when agent shuts down within oglive
## [1.4.8] - 2025-02-18
### Changed
- Optionally return disk config in /status
## [1.4.7] - 2025-02-04
### Changed
- Merge server modules
### Added
- Track the progress of children
## [1.4.6] - 2025-01-14
### Changed
- Point to the new menu browser
## [1.4.5] - 2024-11-29
### Added
- Kill long running jobs in oglive
## [1.4.5~pre8] - 2024-11-27
### Added
- Add Configurar() to the CloningEngine module
## [1.4.5~pre7] - 2024-11-20
### Changed
- Use old browser again
## [1.4.5~pre6] - 2024-11-20
### Changed
- Do not use envvars for the operating-system module
## [1.4.5~pre5] - 2024-11-18
### Fixed
- Avoid some KeyErrors
## [1.4.5~pre4] - 2024-11-15
### Fixed
- Don't die when ogcore returns HTTP 4xx or 5xx
### Changed
- Get ogcore IP and port from the environment
## [1.4.5~pre3] - 2024-11-06
- Kill long running jobs in oglive (not-yet-working draft)
## [1.4.5~pre2] - 2024-11-06
### Fixed
- Remove race condition due to several monitoring threads
### Changed
- Include job_id in asynchronous responses
### Removed
- Remove vim swapfiles from the package contents
## [1.4.5~pre1] - 2024-11-06
### Changed
- CrearImagen: return inventory inline
## [1.4.4] - 2024-10-17
### Fixed
- Use logger.debug() to prevent the windows agent from dying
### Changed
- Make status() call synchronous
## [1.4.3] - 2024-10-17
### Changed
- Use new OGBrowser
## [1.4.2] - 2024-10-15
### Added
- Have ogAdmClient/status return information about network and disks
## [1.4.1] - 2024-10-11
### Fixed
- Bugfix: move data structure to the right class
## [1.4.0] - 2024-10-11
- Add more functionality
### Changed
- Begin using semantic versioning
## [1.3.8] - 2024-10-01
### Added
- Add more functionality to the ogAdmClient module
## [1.3.7] - 2024-09-27
### Added
- CloningEngine: RESTfully keep a list of long-running jobs
## [1.3.6] - 2024-09-19
### Added
- Add more functionality to the ogAdmClient module
- Add CloningEngine module
## [1.3.5] - 2024-08-29
### Changed
- Don't unconditionally load modules--dynamically load everything
### Removed
- Remove old, unused code
## [1.3.4] - 2024-07-30
### Added
- Implement JobMgr
## [1.3.1] - 2024-06-26
### Changed
- Migrate the update script from shell to python
- pyinstaller: include the 'img' subdir
- take icons from 'img'
## [1.3.0-2] - 2024-04-25
### Fixed
- Add missing dependency on zenity
## [1.3.0] - 2024-04-25
### Changed
- Upgrade to Qt 6
## [1.2.0] - 2020-05-4
### Changed
- Python 3 and Qt 5 compatibility
## [1.1.1b] - 2020-02-7
### Changed
- Use python-distro to detect the distribution version
## [1.1.1] - 2019-05-23
### Changed
- Set connection timeout
- Compatibility with "Exam Mode" from the University of Seville
## [1.1.0a] - 2019-05-22
### Fixed
- Fix a bug when activating the agent with some network devices
## [1.1.0] - 2016-10-13
### Changed
- Functional OpenGnsys Agent interacting with OpenGnsys Server 1.1.0
## [1.0.0] - 2015-07-18
### Added
- Initial release for OpenGnsys Agent