809 Commits
Author SHA1 Message Date
Weblate 4132ce2bd7 Update translation files
Updated by "Squash Git commits" hook in Weblate.

Translation: Cacti/monitor
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
2026-10-21 14:18:16 -05:00
WeblateandDaniel Nylander 0d08c1e721 Translated using Weblate (Swedish)
Currently translated at 100.0% (311 of 311 strings)

Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/sv/
Translation: Cacti/monitor
2026-10-21 14:18:16 -05:00
Weblate 212ca2dd8d Update translation files
Updated by "Squash Git commits" hook in Weblate.

Translation: Cacti/monitor
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
2026-10-20 11:24:33 -05:00
WeblateandDaniel Nylander c66c8fd2ce Translated using Weblate (Swedish)
Currently translated at 100.0% (311 of 311 strings)

Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/sv/
Translation: Cacti/monitor
2026-10-20 11:24:33 -05:00
Weblate a16fc4751b Update translation files
Updated by "Squash Git commits" hook in Weblate.

Translation: Cacti/monitor
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
2026-10-20 03:18:17 -05:00
WeblateandDaniel Nylander 838017ffae Translated using Weblate (Swedish)
Currently translated at 100.0% (311 of 311 strings)

Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/sv/
Translation: Cacti/monitor
2026-10-20 03:18:17 -05:00
Thomas Vincent e3fc44473d ci: pin the database image and install locked shared test dependencies (#275)
* ci: pin fixtures and install locked shared test dependencies

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

* docs(changelog): list CI hardening as a dev entry

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

* ci: check out the Cacti branch head instead of a pinned commit

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

---------

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
2026-10-19 09:49:34 -04:00
dependabot[bot] 4aee3f5c80 ci(deps): bump the github-actions group with 5 updates (#277)
Bumps the github-actions group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [github/codeql-action/init](https://github.com/github/codeql-action) | `4.38.2` | `4.38.3` |
| [github/codeql-action/autobuild](https://github.com/github/codeql-action) | `4.38.2` | `4.38.3` |
| [github/codeql-action/analyze](https://github.com/github/codeql-action) | `4.38.2` | `4.38.3` |
| [shivammathur/setup-php](https://github.com/shivammathur/setup-php) | `2.37.2` | `2.40.0` |
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `7.0.1` | `7.0.2` |


Updates `github/codeql-action/init` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2...24c54180a607b1449ed407dd24f251e4e9147c8d)

Updates `github/codeql-action/autobuild` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2...24c54180a607b1449ed407dd24f251e4e9147c8d)

Updates `github/codeql-action/analyze` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2...24c54180a607b1449ed407dd24f251e4e9147c8d)

Updates `shivammathur/setup-php` from 2.37.2 to 2.40.0
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/f3e473d116dcccaddc5834248c87452386958240...eb7c497e18156a6bbabfef1d3a82760b9eda3962)

Updates `actions/upload-artifact` from 7.0.1 to 7.0.2
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/043fb46d1a93c77aae656e7c1c64a875d1fc6a0a...cf430e030ddbb5b0abf93d22962f4752f3646cd9)

---
updated-dependencies:
- dependency-name: github/codeql-action/init
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: github/codeql-action/autobuild
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: shivammathur/setup-php
  dependency-version: 2.40.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-16 15:22:11 -04:00
TheWitnessandCopilot bef1ad80a0 Fix alert audio not rendering: resolve sounds dir from plugin root (#278)
getMonitorSound() used __DIR__ . '/sounds/' after the controller moved to includes/, so the sound file was never found and the audio element was never printed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-16 15:20:41 -04:00
TheWitness 487f9b3e09 Fix fatal PRIMARY KEY (Array) on fresh install from array primary key (#276) 2026-10-15 09:37:48 -04:00
Weblate 089e9b121d Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:41 -05:00
Weblate 5d8cf3febd Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:41 -05:00
Weblate 0a6a5d34f9 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:41 -05:00
Weblate b162ed716e Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:41 -05:00
Weblate 423cf7611b Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:41 -05:00
Weblate 221abf54ed Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:41 -05:00
Weblate 524719885f Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:41 -05:00
Weblate ad98c27c7a Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:41 -05:00
Weblate 93acfa185b Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:41 -05:00
Weblate d956bced65 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
Weblate 5143aa0292 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
Weblate 8cf537ff2d Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
Weblate 61c0068bcd Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
Weblate a97f7e24cb Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
Weblate 63652e6dde Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
Weblate be572cde1f Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
Weblate 8aafefee09 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
Weblate 29df48db14 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
Weblate 3a7e88325e Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
Weblate 97185eb5fd Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
Weblate f65c8974cd Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
Weblate 0028bb4cfe Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
Weblate 77ed4da0a9 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-12 05:26:40 -05:00
TheWitness 5f96b8b7e2 Monitor 3.0 board: full-width grouping cards, Tree ordering, and the Status->Events filter model (#274)
* Monitor: flex grouping cards to full width, order Tree cards by device count

* Monitor: drop inaccurate Site/Template ordering comparison from changelog

* CI: install the declared thold dependency so Monitor can install under Cacti's new install-failure reporting

* Monitor: remove the filter-status/criticality footer and prompt from the board

* Monitor: give the busiest grouping cards (span 3-4) a full row so their tiles span the page

* Monitor: changelog for full-width busy cards and footer removal

* Monitor: drop Site grouping header, tighten tile uptime spacing, add List column tips

* Monitor: add clickable List-view thold/servcheck/ping/criticality pills with filter toggles

* Monitor: unit tests for new filter branches and thold/servcheck count helpers

* Monitor: selectable status pill, fallback/empty pills, hide absent plugin columns, tile sizing, dialog UX

* Monitor: center and keep clickable the tile hostname, remove 'Names only' view option (backend retained)

* Monitor: multi-select Events filter + Events column (additive), Status becomes scope-only Show

* Monitor: apply the Events multi-select on dropdown close (and on change for native selects)

* Add All criticality, Device Template multi-select, servcheck scope

- Add an "All" option to the Criticality filter. Its value (-1) matches the
  default and the pill "clear to default" action, which previously set the
  select to a non-existent option and submitted crit=null, tripping
  validate_store_request_vars.
- Convert the Device Template filter to a checkbox multi-select (like Events)
  and actually apply it: renderWhereJoin now adds
  h.host_template_id IN (...) for the template grouping (0 = Non-Templated).
  Previously the template selection was never applied, so all hosts returned.
- Persist the template selection as a user setting and serialize the
  multi-value for request/save payloads.
- Add a "Devices without Service Checks" scope to the Show filter, shown only
  when the servcheck plugin is installed and permitted.
- Tests + regenerated .pot.

* Update template escaping assertions for the multiselect markup

* Cover empty-template branch in renderWhereJoin

* Left-align Actions glyph and harden Device Detail Panels dialog layout

- Left-align the List-view Actions column header and fa-layer-group glyph.
- Stack the detail panels as plain blocks and force the jQuery UI dialog
  content box to always fill the dialog width, so the panels can no longer
  collapse into a narrow right-hand strip.

* Size the detail dialog to its content instead of forcing overflow

The #monitorPanelDialog overflow override (higher specificity than the
theme's .ui-dialog .ui-dialog-content) turned the content into a fixed-height
scroll box that fought the theme's overflow:visible and squashed the panels.
Use height:auto (capped by maxHeight) and stop overriding overflow so the
dialog sizes to its content and the theme governs scrolling.

* Anchor the detail dialog 300px from the top instead of centering

* Make the detail panels dialog non-modal

* Move Notes out of the List view into the detail dialog

The Notes column consumed a lot of horizontal space in List view. Drop it
from the table and surface the notes in the Host Information panel of the
Device Detail Panels dialog instead (shown only when the device has notes).

* Add device-edit action icon and Devices filter button (realm-gated)

List view: add a pen-square action icon linking to host.php?action=edit for
users with the host.php (device edit) realm, beside the detail-panels icon.
Filter bar: add a Devices button (right of Acknowledge) that opens the Cacti
Devices page, shown only to users with the same realm. Also move the detail
dialog anchor from top+300 to top+150.

* Anchor the detail dialog at top+80

* List view: replace Hostname column with a Graphs action glyph

Remove the Hostname column and add an orange fas fa-chart-line Graphs glyph
(.monitorGraph, matching HMIB's colour) to the Actions column, linking to the
device's graphs where the hostname hyperlink used to point.

* List columns + filter layout refinements

- List columns reordered to Description, Location, Site, ID; add a Location
  column; Averages, Length in Status, Last Fail are now the last three
  columns, all right-aligned.
- rfilter Search now also matches the device location.
- Filter: move the Events multiselect to the second row (right of Search) and
  the Rows dropdown to the second row (left of Refresh); rename that dropdown
  from Devices to Rows.
- Add a renderWhereJoin test for the description/location rfilter search.

* Monitor: realm-gate service-check scope/column, persist events+template, legacy status reset, failed_svc independent, defer list counts, pill keyboard a11y, PHPDoc/changelog fixes
2026-10-12 06:26:35 -04:00
TheWitness 417d10a7df Monitor: flow large grouping cards across page, add Tree grouping cards, fix down-group header contrast (#273)
* Monitor: flow large grouping cards across page, add Tree grouping cards, fix down-group header contrast

- Large grouping cards now span multiple grid columns (data-span) so a device template with many devices flows across the page instead of forming one tall, narrow column that scrolls off screen; grid switched to auto-fill + dense flow for predictable spanning.

- Tree grouping now renders as card panels (one per tree, plus a Non-Tree card) consistent with the Site and Device Template groupings, instead of the legacy section layout.

- Grouping card title colours are now !important so Cacti core device-status classes can't override them and leave unreadable text on a coloured header (e.g. a down device template).

* Monitor: address review - cap card spans responsively, size tree trim length from rendered hosts, persist tree card order

- CSS: establish the grouping grid as a query container and cap each card's span to the tracks actually available (container queries) so wide cards never force an implicit track / horizontal overflow on narrow layouts.

- renderTree cards: derive the default-view trim length from the hosts actually rendered (tree + Non-Tree), matching the Site/Template paths, instead of a tree-only measure that could trim against unrelated devices or collapse to 0.

- saveCardOrder: allow the tree grouping and preserve string group ids (tree_<id>/nontree) via a safe character allowlist instead of casting to int, so tree card drags persist.

- Share the Non-Tree label through a helper so the string multiset is unchanged.

* Monitor: harden saveCardOrder id typing and card render formatting

- Cast preg_replace result to string for strict typing.

- Avoid mixing list destructuring with aligned assignments in the tree card builder.
2026-10-11 09:43:27 -04:00
Weblate e6a0a5959b Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:04 -05:00
Weblate 95e048d77a Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:04 -05:00
Weblate 077189ad36 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:04 -05:00
Weblate a3aaf601ab Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:04 -05:00
Weblate a87ae577ae Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:04 -05:00
Weblate 2ec52c5b1f Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:04 -05:00
Weblate 02b2e6e920 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:04 -05:00
Weblate 8977bbed4e Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:04 -05:00
Weblate 7ad90d3938 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:04 -05:00
Weblate 642d74c32a Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:04 -05:00
Weblate da189390a1 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:04 -05:00
Weblate a8420a5ea0 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:04 -05:00
Weblate 0a98c8e474 Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:04 -05:00
Weblate 353c2ef47c Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:03 -05:00
Weblate 6b0f1b975b Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.cacti.net/projects/cacti/monitor/
Translation: Cacti/monitor
2026-10-10 18:13:03 -05:00