Repository navigation
Expand file tree
/
Copy pathCHANGELOG
More file actions
4736 lines (4605 loc) · 339 KB
/
Copy pathCHANGELOG
File metadata and controls
4736 lines (4605 loc) · 339 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Cacti CHANGELOG
1.3.0-dev
-security: Use a shared locked plugin test harness and cache Composer downloads in coverage jobs
-security#GHSA-2fhv-c794-v433: Authorize Data Source enable/disable against the owning device before mutating
-security#GHSA-4p7f-qcc2-vmx7: Escape path_php_binary before the resource-cache PHP syntax-check shell command
-security#GHSA-967c-6qj7-q7rh: Confirm the rrdtool control-character strip closes the RRD-create |query_*| injection path
-security#GHSA-f7jw-gfhr-cxwm: Escape the automation tree-rule preview Resulting Branch values
-security#GHSA-rp5g-r5vp-q7j6: Quote the db_column_exists() LIKE term so the SQLi-defense helper is not itself injectable
-security#GHSA-vx2m-q53g-hmrf: Escape host_snmp_cache.field_name in the automation pivot CASE WHEN builders
-security#GHSA-h5wg-qf6f-7f6r: Confine plugin DDL table identifiers in api_plugin_drop_table and api_plugin_db_table_create
-security#GHSA-929h-4c93-hxcg: Quote the aggregate_make_sql_where() LIKE filter term
-security#GHSA-mfw8-r3jx-67ff: Use db_qstr() instead of addslashes() for the cli add_graphs REGEXP clause
-security#GHSA-m49v-hr7h-wwcj: Restrict the user_admin sort_column to displayed columns so ORDER BY cannot pivot onto user_auth secrets
-security#GHSA-mpfm-qhvj-5879: Validate the theme in rrdtool_create_error_image() through the theme allowlist
-security#GHSA-m3fh-gxqj-76hq: Strip control characters from the SNMPv3 credential device fields
-security#GHSA-cg45-2mww-g98p: Revoke the server-side remember-me row on the auth_changepassword nopassword path
-security#GHSA-xq26-f282-f998: Enforce a retention window on the remember-me cookie token check
-security#GHSA-m67r-fcmw-gvv7: Confine the imported data-query xml_path to the Cacti tree
-security#GHSA-4gph-8x7q-h365: Confirm the report-add device description status message is escaped (regression test)
-security#GHSA-977w-79m7-xjc4: CVE-2026-40307 Confirm the graph export legend columns are html-escaped (regression test)
-security#GHSA-mgcq-r6vm-4xhw: Confirm the Reports Data Query name is html-escaped (regression test)
-security#GHSA-5p79-q5q3-84vw: CVE-2024-34705 Confirm die_html_input_error escapes the echoed variable and value (regression test)
-security#GHSA-cfhh-pwvx-gp5g: CVE-2026-40940 Confirm the aggregate rfilter is no longer echoed into a raw HTML attribute (regression test)
-security#GHSA-wfcf-2x67-2jxg: Confirm the user_admin group filter is a bound parameter (regression test)
-security#GHSA-pjq5-3268-g222: Confirm path_dsstats_log is escaped before the dsstats shell redirect (regression test)
-security#GHSA-wp33-g6gc-444m: Confirm the data_templates rrd_maximum/rrd_minimum validator is anchored (regression test)
-security#GHSA-69vw-qxxv-p8w2: Stop auto-granting an admin session when auth_method is None and fail closed pending a manual reset
-security#GHSA-r7hc-hrpv-52gf: Validate host_id before it is concatenated into the graph_view list and preview filter WHERE clauses (#8100) - Special Thanks to Jiecub3, Aur0ra-m and lz2y
-security#GHSA-6mjm-5vwr-3fr2: Validate and bind local_graph_id in the aggregate graph item sequence query (#8099) - Special Thanks to Jiecub3, Aur0ra-m and lz2y
-security#GHSA-fxfg-j995-j69j: Grant AllowOverride All in docker/apache.conf so shipped .htaccess denies on log/cache/scripts/cli take effect
-security#GHSA-fc82-w6xq-4jg7: Authorize the bulk Change Data Source Profile action against the owning device
-security#GHSA-5x27-wqpm-m24v: Confine Reports format_file to a bare filename to close a path traversal/LFI regression
-security#GHSA-8j73-cvf6-jrvx: Reject ORDER BY sort_column subquery payloads that bypassed the GHSA-q9xg-p762-9jm3 fix
-security#GHSA-8f5c-3h59-q7gc: Authorize Report save/edit against report ownership to close an authenticated IDOR
-security#GHSA-f88m-q789-g22j: Stop building the Realtime RRD create command through a shell and validate DS bounds are numeric before they reach it
-security#GHSA-j5jh-fhwg-r56x: Authorize single-item Report actions (remove/move) against report ownership to close a guest-bind IDOR
-security#GHSA-c725-4jm5-9fx5: Use validate_redirect_url() for the CSRF timeout redirect to close a tab-based open redirect bypass
-security#GHSA-gxgm-8rhv-r7jv: Require Package Management permission to trust new package signers
-security#GHSA-rjvj-r52f-8v5q: Harden cmd.exe shell sinks and strip %VAR% from hostnames on win32 (#8056)
-security#8158: Harden - Reject SHA-1 signatures across every package import path
-security#8158: Harden - Confine automation sorting and pagination before SQL and HTML rendering
-security#8158: Harden - Replace sibling password-reset links and revoke authentication state after reset
-security#GHSA-3jj2-v5ch-wmq5: Fail closed on a posted LDAP realm that is not a configured domain
-issue#8221: Align the Deepness theme console menu icon sizing and alignment with the Modern theme and remove the sub-menu indentation
-issue#8219: Fix the Deepness theme rendering the modern filter bar controls stacked vertically by porting the missing .filterRow/.filterColumn table-display rules from the other themes
-issue#8220: Skin the modern filter Edit dialog (.ui-dialog.cactiFilterDialog titlebar/content/buttonpane) for the Deepness theme using its emerald palette so the dialog matches the theme instead of the default jQuery UI themeroller look
-issue#8224: Restyle the Deepness theme login page with a flat deep-dark background and a bordered, slightly-greyer login box
-issue#8171: SNMPv3 devices using an auth/privacy protocol the running PHP cannot service natively (e.g. AES-256 before PHP 8.6) now collect through the Net-SNMP binary via a binary-delegating session instead of fataling the poller/device-edit, and the vendored classSNMP.php compatibility shim is removed
-issue#8120: Do not replicate repository and tooling metadata files (.gitignore, .htaccess.dist, .mdl_style.rb, .mdlrc) to remote data collectors during file replication
-issue#8116: Restore legacy unique_keys[] support in db_table_create() and db_update_table() so plugins that declare UNIQUE indexes with that definition style keep them across a schema refresh
-issue#8105: Add a Force Uninstall action to remove an orphaned plugin whose directory is missing
-issue#8073: Render a separate password reset link on local login errors while keeping error text escaped
-issue#7969: Restore excluded integration and mutation regression coverage
-issue#7969: Align Rocky Linux compatibility checks with the supported PHP runtime
-issue#8063: Support searching by graph ID on the Graphs list/preview and Aggregate Graphs pages
-issue: Fail closed when OAuth callback state is absent or mismatched
-issue#7979: Fail closed on invalid, cyclic, or oversized CDEF definitions
-issue#7959: Stop source checkouts from loading a partial Composer dependency tree
-issue#7775: Add plugin-extensible notification API
-issue#7746: Make PHP 8.1 dependency builds reproducible
-issue#7672: Block loopback/link-local SSRF targets in call_remote_data_collector
-issue#7670: Escape LIKE wildcards in poller_automation and plugins.php filters
-issue#7663: Strip control characters from rrdtool command line
-issue#7662: Stage nonce CSP migration and gated enforcement
-issue#7657: Escape database sourced names in report and package export output
-issue#7656: Contain plugin archive writes and validate the repository URL
-issue#7655: Validate graph item fields before they reach the RRDtool command line
-issue#7637: Optimize group access authorization queries
-issue#7636: Recognize RRDtool 1.10 and 1.11
-issue#7633: Remove dead per-file metadata queries
-issue#7631: Harden remote graph transport and response validation
-issue#7629: Track all 1.3.0 migration writes
-issue#7616: Stop overriding no-store with a one year max-age
-issue#7614: Repair regressions found in recent develop audit
-issue#7613: Preserve session errors and enforce 100% coverage
-issue#7612: Bind template IDs and enforce 100% coverage
-issue#7609: Escape RRDfile paths passed to the shell
-issue#7605: Emit structured security events for validation failures
-issue#7603: Launch cactid without a shell
-issue#7601: Expire persistent auth tokens when permissions change
-issue#7597: Honor alternate frame ancestors on develop
-issue#7594: Default binary paths to empty strings
-issue#7592: Centralize request URI fallback
-issue#7589: Batch db_update_table schema alters
-issue#7548: Tolerate a microtime string with no fractional part
-issue#7546: Remove dead E_STRICT and always-true constant guards
-issue#7545: Escape the RRDfile path in RRDtool commands
-issue#7517: Consolidate htmx loader and renderer abstraction global.php includes
-issue#7515: Consolidate image conversion and notification payload hardening
-issue#7513: Scope build context to docker/ so it builds standalone
-issue#7506: Close open select menus when their scroll container moves
-issue#7502: Guard null messages array in raise_message()
-issue#7438: Validate measure/order before ORDER BY concatenation in get_allowed_graphs()
-issue#7432: Correct KILL CONNECTION typo in db_close
-issue#7412: Assemble 64-bit volume value from high and low words
-issue#7411: Compute variance in CLI stats table
-issue#7381: Memoize db_get_table_column_types to cut redundant SHOW COLUMNS
-issue#7363: Normalize trusted-proxy match with inet_pton
-issue#7350: Repair mikrotik branch, guard task filter, escape table metadata
-issue#7342: Reject wall-clock snmpEngineTime values when selecting device uptime
-issue#7338: Restore item-override saves and bulk-action input names
-issue#7337: Map empty value to NULL for nullable numeric columns in sql_save
-issue#7336: Drop duplicate --slope-mode emission
-issue#7254: Centralize items filter state
-issue#7253: Render input attributes safely
-issue#2205: Allow admins to disable RRDtool watermark
-issue#3066: Enable the secure flag on cookies when HTTPS is enabled.
-issue#3074: ss_net_snmp_disk_bytes.php and ss_net_snmp_disk_io.php do now report mmcblk data.
-issue#3141: Fix FreeBSD IPv6 ping
-issue#3547: Database Audit utility does not check database permissions
-issue#3559: When a developer uses backtracing, HTML output can be seen from command line
-issue#3560: When using `input_validate_xxx`, calls to `die_html_input_error()` do not pass variable name
-issue#5019: Install SQL Statements with Database name should be quoted
-issue#5191: Improve poller recovery by the addition of a secondary index
-issue#5216: 1.3.0 - QA DSSTATS does not use the RRDtool Proxy stateful socket connection
-issue#5221: ss_fping.php script times out when there is a lot of packet loss
-issue#5264: The Net-SNMP Disk I/O Templates are not Cluster Aware
-issue#5481: Attempting to edit a Data Query that does not exist throws warnings and not an GUI error
-issue#5511: Allow automation network to be saved when the IP Addresses to ignore box is empty
-issue#5517: Cacti 1.3.x will not support 'Remember me' functionality without using https
-issue#5565: Unable to change a device's community at command line
-issue#5567: Incorrect variable name in change_device cli script
-issue#5570: RRDChecker is started very often
-issue#5573: Incorrect URL for editing graph template
-issue#5639: Add tooltip info about IPv6 address
-issue#5657: Consolidation Functions must be available in COMMENT for nth percentile and bandwidth summations comment types
-issue#5679: Attempt SNMP in Ping-OR-SNMP availability checks when ping fails
-issue#5680: Fix Spikekill not following correct time in schedule
-issue#5776: Undefined array key "description" in file settings.php
-issue#5844: Automation fails when using MySQL 8
-issue#5885: Fix Fortigate and Aruba OSCX switch template, improve Clearpass template
-issue#5899: Tooltip remain on page after page is refreshed
-issue#5900: Please add the ability to select compiled RRDtool v1.9+
-issue#5936: If a Remote Data Collector has not devices, poller.php does not properly register any collectors
-issue#5964: Graph Timespans too far into the past generate RRDtool crashes
-issue#5967: Removing dygraph-combined.js as we are not using it and have adequate charting libraries
-issue#5968: Removing jQuery Sparklines API as we are not using it and have adequate charting libraries
-issue#5969: If System Level Browser TimeZone Support is disabled don't show the User Profile Option
-issue#5973: Multiple Issues with database API function db_update_table() preventing correct update of an existing table
-issue#6165: Update billboard.js and billboard.css to resolve servcheck graph legend overlapping issue.
-issue#6177: autodiscovery use dns name in description field
-issue#6210: Fix Error: You have an error in your SQL syntax due to using table field without backtick.
-issue#6240: Fix sorting exception in rrdtool_function_create function
-issue#6255: Fix not showing any graphs in the subtree if there are only graphs without devices
-issue#6258: Rename 'Data' to 'Data/Statistics' per customer request
-issue#6515: Serialize process registry admission with database-backed Symfony locks
-issue#6545: Add 30 and 60 second timeout options for Remote Agent and Poller settings
-issue#6573: Create new device_change_javascript hook for THOLD plugin by xmacan
-issue#6669: Show on the Technical Support page whether php-snmp is in use or disabled by $php_snmp_support
-issue#6682: Fix column exclusion silently skipping first element due to loose array_search comparison
-issue#6742: Fix loose $db_conn comparison in db_table_exists and db_column_exists
-issue#6760: Harden link.php: apply sanitize_uri() to HTTP_REFERER before redirect
-issue#6761: Harden auth_changepassword.php: apply sanitize_uri() to HTTP_REFERER in all redirect paths
-issue#6762: Harden lib/ping.php: apply cacti_escapeshellarg() to hostname in native ping and fping shell commands
-issue#7070: Align percentile rank with observed samples and expose missing export rows
-issue#7131: Fix data_input_data column-expansion bugs in change_data_template and api_data_source_duplicate
-issue#7135: Reset loop-scoped $oid and $script_path between iterations when building the poller cache
-issue#7137: Fix eleven PHPStan Level 6 errors in form_save error-redirect URLs and lib/html.php right-tab block
-issue#7202: Removed plugins may leave orphan entries in plugin tables
-issue#7211: Correct the Nth percentile and bandwidth summation divisor on base-1024 graphs
-issue#7214: Fix TypeError in boost_graph_set_file when sending reports
-issue#7216: Aggregate totalling legend printed untotalled single data source values
-issue#7261: Parameterize aggregate_graphs.php SQL and harden reflected request values
-issue#7343: Install wizard silently fails to advance after CSRF token expires
-issue#7380: Batch graph-create task_item_id wiring to reduce template graph creation queries
-issue#7424: Correct SNMP disk counter wrap delta calculations
-issue#7425: Guard process registration and cleanup against PID reuse
-issue#7426: Stop tracking the generated CSRF secret so each install creates its own
-issue#7427: Update device status by host id instead of non-unique hostname
-issue#7429: Prevent monthly automation schedules from resetting next_start to 1970
-issue#7493: SNMP walk for output_format fields used max OIDs instead of the device bulk walk size
-issue#7518: Replace the DsstatsMeasure enum in lib/html_utility.php with const arrays for PHP 8.0 compatibility
-issue#7519: Fix Boost archive-table cleanup deleting still-open-round rows instead of forwarding them to the live table
-issue#7520: Gate Boost archive-table drop on shard completeness instead of the partial-success status sum
-issue#7521: Purge the old remote poller's poller_item row when api_data_source_change_host() moves a data source to a new device
-issue#7522: Fix cmd.php SELECT * poller_item/host join defeating poller_item's SNMP-credential caching
-issue#7523: Fix dead duplicate-record guard in boost_process_poller_output
-issue#7524: Mirror poller_item deletes to the remote poller in data_query_remove_disabled_items() and data_source_to_data_template()
-issue#7525: Fix cmd.php --allhost invocation ignoring cron_interval when resetting rrd_next_step
-issue#7526: Apply Boost's child-completion startup barrier to dsstats and rrdcheck launch loops
-issue#7527: Skip update_poller_cache()'s poller_id JOIN query when callers already know it
-issue#7528: Replace cmd.php's redundant script-server-call COUNT(*) join with an in-PHP count
-issue#7529: Scope poller.php's global aggregate scans to the central poller
-issue#7530: Rewrite poller.php's process-leveling rrd_next_step predicate to be sargable
-issue#7531: Batch update_data_query_cache()'s poller cache writes instead of committing per row
-issue#7532: Add USING BTREE to poller_output_boost_local_data_ids indexes to prevent filesort in Boost
-issue#7533: Skip the UNION ALL derived table wrapper in Boost's flush query when only one archive table exists
-issue#7534: Batch-prefetch RRD field name lookups in Boost and poller output processing instead of querying per row
-issue#7536: Consolidate the four hand-written poller_output_boost inserts into one shared helper
-issue#7535: Consolidate the poller_item delete call sites behind poller_item_delete_for_data_source() and poller_item_delete_for_host()
-issue#7576: Stop passing an unset path_php_binary into string parameters
-issue#7718: Discover files recursively for the MD5 listing with Symfony Finder
-issue#7673: Require a POST and a CSRF token for the delete actions that were reachable over GET
-issue#7674: Enforce tree access when creating, deleting and renaming tree nodes
-issue#7682: Revoke the remember-me token and terminate other sessions on logout
-issue#7683: Harden login brute-force defenses with an atomic lockout counter and constant-time unknown-user handling
-issue#7684: Scope the local-login password rehash to realm 0 and only rehash after a successful login
-issue#7685: Validate the post-login referer redirect to close an open-redirect gap
-issue#7686: Confine index.php external-link content includes to include/content and escape the filename
-issue#7688: Force the SNMP port to an integer before it reaches the net-snmp command line
-issue#7694: Cover the shell escaping helpers and their call sites
-issue#7695: Keep an empty argument on the command line
-issue#7696: Repair the string sanitisers in lib/functions.php
-issue#7697: Guard two divisions PHP 8 made fatal
-issue#7707: Bind the MIB column names in MibCache::select()
-issue#7719: Spike Kill text output applied the large value scientific notation format to the column left of the value it belonged to, starting with Variance
-issue#7732: Bind device IDs and escape graph and device HTML sinks
-issue#7646: Remove PHP 8.5 reflection and authenticator deprecations
-issue#7715: Refuse to serve the REST scaffold unless it is explicitly enabled
-issue#7701: Confine names used as SQL identifiers in automation
-issue#7665: Confine local RRD paths while preserving remote RRDProxy storage
-issue#7861: Repair confirmed poller, database, automation, export, filtering, theme, and arithmetic defects
-issue#7751: Declare the translation helper before the disabled-i18n fallback returns
-issue#7476: Escape path_boost_log before it reaches the Boost debug shell redirect
-issue#7782: Allow one notification to address several recipients through the email 'to' option
-issue#7473: Escape path_rrdcheck_log before it reaches the rrdcheck poller shell redirect
-issue#7469: Escape path_php_binary before it reaches shell_exec in test_data_source
-issue#7466: Escape path_stderrlog before it reaches the poller stderr shell redirect
-issue#7658: Resolve client addresses only through explicitly trusted proxies
-issue#7720: Data Source item fields imported from a Template XML are not held to the data_sources.php field rules
-issue#7355: Add a vendor-neutral ENTITY-SENSOR-MIB script data query for physical sensors
-issue#7355: Add a JUNIPER-MIB jnxOperatingTable script data query for RE and FPC health
-issue#7355: Add an F5-BIGIP-SYSTEM-MIB script data query for per-CPU utilization
-issue#7904: Device changes are silently skipped when --bulk_walk is passed to change_device.php
-issue#7744: Replace the unmaintained csrf-magic library with symfony/security-csrf
-issue#7975: Reject malformed remember-me cookies without warnings or mutations
-issue#7978: Revoke remember-me tokens before clearing browser state
-issue#7328: Align graph, CSV export, percentile, and summation sample windows
-issue#7981: Require POST tokens for state-changing item, tree and RRD actions
-issue#7809: Avoid reading a missing source key on output-only data query fields
-issue#7812: Clarify that missing SNMP notification receivers need no action when traps are disabled
-issue#8040: Regenerate the vendored DOMPurify asset to match the pinned 3.4.15 release and keep node_modules during CI
-issue#8041: Detect a real TTY instead of a dead github_actions check before calling stty size
-issue#8043: Regenerate the vendored DOMPurify asset to match the pinned 3.4.15 release and keep node_modules during CI
-issue#8370: When drilling a Site Branch into a Device Template, the Tree view Graph Templates filter now lists only the Graph Templates present on that Device Template's devices
-feature#8166: Add a cross-process shared SNMP authentication cache (disabled by default) that pre-hardens SNMPv3 credential arguments once per credential change and seals them with the per-installation AES-256-GCM key, so poller, cmd and script server processes reuse them instead of rebuilding them on every request
-feature#8166: Route SNMPv3 get/getnext through the in-process php-snmp extension when the running PHP version supports the configured auth/privacy protocols and no context/engine id is set, bypassing a per-request Net-SNMP binary spawn
-feature#8166: Add an "Enable MD5 and DES for SNMPv3" setting (off by default) that removes the legacy MD5/DES algorithms from the Device and Automation SNMP Option pickers when disabled, and default new Devices to SHA/AES
-feature#7884: Manage front-end JavaScript libraries with npm and Dependabot
-feature#7884: Build release artifacts from managed dependencies, including DOMPurify 3.4.14 and phpseclib 4, and a reduced runtime tree
-feature#7835: Add cacti_snmp_session_from_host() to build SNMP sessions from a device row
-feature#412: Import Export for Graph and Tree rules
-feature#1214: Move Tree Create/Remove/Modify Functions to lib/api_tree.php
-feature#1361: UI should update alternate row colors
-feature#1398: Implement an interactive web based Plugin upgrade process
-feature#1442: Add validation to GUI inputs
-feature#1523: Value above RRD maximum value
-feature#1585: Confirmation screen should show what options have been picked
-feature#1773: Lock installer to single admin
-feature#1987: Plugins should be able to be downloaded, installed, and upgraded from Plugin Management
-feature#2166: LDAP configuration should only use 'user_domains_ldap'
-feature#2333: The ability to export/import preset data profiles
-feature#2429: Allow Device SNMP Options to be Templated
-feature#2437: Create system-wide Proxy settings for plugins
-feature#2439: Allow CDEF to be used as a filter for Graph/Graph Templates
-feature#2474: Enable better version reporting for GitHub/Source/Package editions
-feature#2550: Enable use of authenticator codes for Two-Factor Authentication
-feature#2572: Support Sorting of Tree or Graph View by Data Source
-feature#2607: Allow adding sites from command line
-feature#2738: Set cache rebuild process indicator for the Cacti UI
-feature#2767: Plugins should be temporarily disabled if a required plugin is also disabled
-feature#2959: Add multi threading for push out hosts (cli)
-feature#3048: Allow different log settings for remote pollers
-feature#3139: Added option in CLI tool remove_graphs for deletion of single graph
-feature#3187: Feature: rra path should be configurable
-feature#3192: Add ability to change options in AUTOM8 networks
-feature#3260: When a device is added, populate the created date/time
-feature#3332: Remove files graph_items.php and graph_templates_items.php
-feature#3333: Allow sequential network scans via AUTOM8
-feature#3417: Add worst poller hosts to support page, log and email warning when poller time reached defined threshold
-feature#3419: Automation should show network in discovered devices
-feature#3430: Automation should report on devices added
-feature#3513: Add hooks for plugins to show customize graph source and customize template url
-feature#3518: Allow for 2 Levels of Poller sync
-feature#3558: Allow copy_user cli script to set various additional fields
-feature#3568: Allow exclusion of snmp fields / value(s) when adding graphs via CLI
-feature#3584: Verify passwords against Pwned databases using API
-feature#3585: CLI script to show database permissions that Cacti has
-feature#3608: Graphs should be able to use |input_field_name| replacement variables
-feature#3677: Relocate the delete button for collectors to the edit page
-feature#3679: Allow searching logs by name, not just id
-feature#3696: Allow use of ifDescr variable in Tree rules
-feature#3724: Create Spikekill method to kill values over an absolute maximum
-feature#3725: Create the ability for Spikekill to modify only certain DSes within an RRD
-feature#3738: Ability to see MySQL permissions associated with current database user
-feature#3740: Ability to disable a site
-feature#3744: Warn when data input commands contain unresolved substitution variables
-feature#3749: Clone a network automation
-feature#3766: Bulk Export / Import Templates from Front-end
-feature#3832: Exclude IP addresses in Automation Networks
-feature#3833: Dry-run Automation Device Rule
-feature#3845: Allow non-standard Remote Agent port to be used
-feature#3904: Enhance automation to allow someone to view all recently discovered devices
-feature#3943: Add hooks for plugins to show customize graph source and customize template url (List View)
-feature#4157: Allow admin emails to utilise CLOG-style ID to name/link replacements
-feature#4202: Editing State=Down device - mark online when editing device when responding by all required probes
-feature#4296: Add hyperlink from graph edit page to graph-view
-feature#4300: Allow GPrint/CDef/VDef to be visibile in graph template item lists
-feature#4339: Change CLI progress output for rebuilding poller cache
-feature#4778: Add devices sysName and sysLocation name as a Device description
-feature#4811: Performance Issues on Template and Presets Pages on Large Installs and Drilldowns
-feature#5020: Introduce script timeout for cmd.php
-feature#5021: Allow form input validation to be reported to GUI
-feature#5025: Add Least Squares Special Data Types to Cacti
-feature#5027: Add Service Check Filter and Column and Device Thread Column
-feature#5039: Add host_poller_id replacement variable
-feature#5083: Make user log ask for confirmation on purge
-feature#5120: Define cacti system paths as constants for better code checking
-feature#5129: Add an option to skip table sync to remote pollers during upgrade process of Cacti
-feature#5130: Add parameter "version" for Graph Templates
-feature#5148: Allow theme-based include paths with master location
-feature#5149: Allow CSS files to be loaded async #5149
-feature#5163: DSSTATS - Add Additional Data Source Statics to Cacti
-feature#5165: DSSTATS - Change data_source_stats_hourly_cache from Memory to INNODB
-feature#5178: DSSTATS - Allow Retention of Daily, Weekly, Monthly and Yearly data for varying periods
-feature#5212: Gradient Support drops Alpha translparency values from Areas and Does not Support Stack
-feature#5215: DSSTATS - Cache the RRDtool Logic in a table to speed calculation of the staticis gathering
-feature#5222: Allow Cacti Log to be Displayed in 'Raw Log' Format
-feature#5225: When your Database server has TB of memory, memory calculation returns incorrect data in Cacti
-feature#5231: When editing a Device show in state/uptime as a date in the header
-feature#5267: Gradient Support does not work correctly on Aggregate Graphs
-feature#5273: Add support for RRD --left-axis-format Options
-feature#5278: Enhance Cacti's ping to use fping if it's installed to take advantage of sub-second timeouts
-feature#5294: Allow Ignored Errors to be Logged such as 'No Route to host'
-feature#5305: Remove files aggregate_items.php and color_templates_items.php and consolidate into their parents
-feature#5316: Allow for searching in settings/menu
-feature#5321: cli/push_out_hosts.php is deprecated, redirect to rebuild_poller.cache.php
-feature#5328: Search through Data Query fields when searching for Graphs in Tree
-feature#5368: Allow all key searching calls to be delayed by defined amount
-feature#5378: When reload page in browser with graphs created scroll window always return to top
-feature#5389: Forgot password function and email notification about new user or reset user password
-feature#5406: Cacti connection handling should forcibly close connections to work around PDO uncertainty
-feature#5407: Add last_updated column to the boost table to increase diagnostics in Cacti
-feature#5416: Display device class before package import
-feature#5463: When building Automation Rules, show the 'effective sql' on the page for users who know SQL
-feature#5578: Provide new templates for Aruba switch, Aruba wifi controller and HPE iLO to be available during install
-feature#5588: When upgrading Cacti deprecated/removed libraries and files still exist
-feature#5596: Add template Aruba OSCX switch 6x00
-feature#5601: Order Graph Item Inputs Naturally (MariaDB 10.7++, no MySQL support)
-feature#5640: Boost log file visibility and rotation not as expected
-feature#5681: Add poller information to graph-variables
-feature#5717: Add Aruba Clearpass template
-feature#5804: Remove the Classic Theme in Cacti
-feature#5833: Add button for remove all data and configuration/settings
-feature#5837: Remote poller installer should test version of cacti and new poller
-feature#5838: Reduce the number of default log from automation
-feature#5849: Separate Logging related settings to a new settings tab
-feature#5855: Replace Plugin Images with FontAwesome Glyphs
-feature#5857: Create a Reporting Queue for Cacti and Plugins to schedule reports
-feature#5858: Create a Reporting log table to hold various data from Cacti Reports for base Cacti and from Plugins
-feature#5860: When Cacti is running on MariaDB move the Data Source statistics partitions to the ARIA table format
-feature#5861: In Cacti Utilities, be able to view the MariaDB/MySQL processeslist and active background tasks
-feature#5862: Change logging message around remote agent timeout
-feature#5866: Add 'database' to the permission structure in db_get_permissions() function
-feature#5871: Make it possible for splice_rrd.php to run from outside of Cacti
-feature#5889: Make it so that Cacti does not share sessions between browser tabs
-feature#5892: Enable Authentication Cookies by Default in New Installs
-feature#5907: Add Filter for Data Input Method on Data Templates
-feature#5908: Add Searching of Notes and External ID when Searching for a Device
-feature#5909: Add 'legend shorthand' for Graph Template Items
-feature#5920: Remove the use of tables for alignment on graphs page and move to flex alignment
-feature#5922: Add HPE Nimble/Alletra template
-feature#5923: If RRDtool crashes due to a segmentation fault, report that and retry a few times
-feature#5931: Make it easier to connect content in the table data_input_data to the host and data source
-feature#5935: Add additional detail to the Admin Email to trace the server's impacted by the errors
-feature#5941: Implement Drag and Drop on Graph Templates Edit Page
-feature#5942: Improve Speed of Graph Template Editing Through Bulk Updates
-feature#5948: Allow Graph Template Classes to be changed enmass
-feature#5952: Create a new form dropdown type called drop_icon
-feature#5954: Add Check boxes to Graph Templates Change Page
-feature#5955: When Changing a Profile Update Other Data
-feature#5958: When archiving a plugin, give the user the ability to add a note
-feature#5959: Debounce the Poller Output Not Empty Warning
-feature#5965: Merge packaging plugin with Cacti and add archiving and restore capabilities
-feature#5966: Add snmp retries at the device level
-feature#5970: Import/Export Automation should take THold into account
-feature#5971: Add a method to mark missing Data in all graphs globally
-feature#5993: Allow Automation Rules to Search through Site Information
-feature#5997: Add filter for devices in maintenance plan, add icon to device list
-feature#6001: Extend SYSTEM STATS log entry
-feature#6033: Allow Admins to see when a template was last modified
-feature#6034: Allow Users to Drill Up from CDEF's and VDEF's to Graphs and Graph Templates
-feature#6044: Enable the capabilities to view historical Classical Cacti Report from the GUI
-feature#6063: Change installer page Input Validation Whitelist Protection to Recommendations
-feature#6066: Enable Drag and Drop for External Links
-feature#6191: Adding Natural sorting options for Hostname
-feature#6228: Add admin's email to installer and enable "Notify primary admin of issues"
-feature#6454: Create a logging recursion ticket that helps against recusion loops in cacti_log
-feature#6456: Add Composer binary path setting with installer detection
-feature#6495: Add bulk change data source profile functionality with automatic RRD rebuild
-feature#6539: Allow Standard Cacti Log Files to be Rotated on Demand from the Cacti UI
-feature#7324: Harden Basic Authentication by allowing for the specification of trusted proxies
-feature: Allow messages to be popup notifications
-feature: Upgrade billboard.js to version 3.14.1
-feature: Upgrade jQueryUI to version 1.14.1
-feature: Upgrade d3.js to version 7.8.2
-feature: Upgrade ua-parser.js to version 1.0.35
-feature: Upgrade jquery.tablednd.js to version 1.0.5
-feature: Upgrade FontAwesome to version 6.7.2
-feature: Add parsedown to vendor library for plugin CHANGELOG and README viewing support
-feature: Add year display to get_daysfromtime function
-feature: Add class and version columns to Graph Template to support Streams feature
-feature: Allow Reports to be sent to a Notification List if thold is installed
-feature: Remove legacy Lotus Notes Attachment Types from Reports
-feature: Fortigate firewall template extension with SDWAN tests
-feature: Continue to support MD5() for the password verifications but also support SHA256
-feature: Harden authentication system correctness including 2FA logic, password reset token security, and basic auth status checks
-feature: Extract remote agent reverse DNS forward-confirmation into the remote_agent_fcrdns_confirmed() helper
-feature#7190: Replace PHPMailer with Symfony Mailer for native mail, sendmail, and SMTP (including OAuth2)
-feature#7252: Add output-context helpers and a safe local URL builder
-feature#7368: Add a Cacti-native form API and migrate the Site editor
-feature#7370: Allow plugins to register process tables for the technical support view
-feature#7372: Add installer domain foundation types and lifecycle tests
-feature#7634: Add indexes for host-template and session lookup queries
-feature#7681: Add fail2ban support with a stable authentication-failure log line and a bundled filter
-feature#8281: Log user actions (create, delete, ...)
1.2.32
-security#GHSA-fq9x-x3vf-3vf2: Substitute data-input field tokens in a single pass so a composed value cannot re-inject an escaped payload into the script command line
-security#GHSA-54hx-hxc4-jq7j: Numeric-cast the graph-item value for TICK fraction and SHIFT statements before the RRDtool command line
-security#GHSA-hh7r-464j-rf39: Neutralize CSV formula injection and sanitize the Content-Disposition filename in the graph data export
-security#GHSA-v99q-57w7-mpmg: Escape the page title rendered in the HTML title element
-security#GHSA-f5f5-h85v-6m3h: Render user administration tooltip content as escaped text
-security#GHSA-p3rg-7pc3-2h86: Dummy-verify passwords for unknown users to close a login-timing enumeration side channel
-security#GHSA-92jm-r83q-cjr8: Validate the hgd graph-template id as a number before the tree-view graph SQL filter
-security#GHSA-4j2v-vxgp-83ch: Validate the hgd graph-template id for host-leaf Graph Template grouping before the SQL filter
-security#GHSA-q46f-rxh6-8pw2: Bind the reverse-DNS hostname when updating automation_ips
-security#GHSA-gf3f-mwjj-vj2v: Validate the automation tree rule item field against existing columns before storage
-security#GHSA-jv53-qfw3-v2fh: Validate the automation graph rule item field against existing columns before storage
-security#GHSA-mgcq-r6vm-4xhw: Escape SNMP and Data Query names in Reports tree titles
-security#GHSA-v2mq-mxpw-55pf: CVE-2026-46530 Escape graph preset names rendered in the gprint presets list
-security#GHSA-4fr7-45gj-5cx6: Validate and escape data_source_path before RRDtool execution
-security#GHSA-fgwr-944r-wg98: Validate rrd and data_source path tokens in the CLI maintenance tools and Boost
-security#GHSA-p5xj-48vc-mqrf: Cap remember-me token lifetime to 90 days via the login-time predicate and the poller_maintenance authcache purge
-security#GHSA-69vw-qxxv-p8w2: Remove the No Authentication mode and its auto-admin grant, migrating legacy auth_method=0 to Builtin login
-security#GHSA-jpf3-w6p4-pjrf: CVE-2026-44480 Validate the automation tree rule item field against existing columns before storage
-security#GHSA-4p7f-qcc2-vmx7: Escape path_php_binary in the resource-cache PHP syntax-check system() call
-security#GHSA-hcj6-pmvx-fwgr: Strip CR/LF in escape_command so interpolated data cannot inject a second rrdtool command
-security#GHSA-967c-6qj7-q7rh: Close the rrd_maximum |query_*| newline injection via the escape_command control-character strip
-security#GHSA-9ffc-rr2g-c8hh: Reject spoofable Remote-User and PHP_AUTH_USER headers under web basic auth
-security#GHSA-c3wx-gf8r-j4m7: Escape the device Location option value in host.php
-security#GHSA-34x4-x9jp-6w4c: Escape the RRD file path arguments in the CLI maintenance tools
-security#GHSA-m49v-hr7h-wwcj: Constrain the user_admin sort_column to displayed columns to block an ORDER BY pivot
-security#GHSA-q8j8-p456-wr4f: Escape LIKE wildcards in the sites.php name filter
-security#GHSA-fchr-jrc7-94v5: Authorize tree node modify and lock actions against per-tree access
-security#GHSA-hc4f-f236-v98q: Authorize Reports item read and write against report ownership
-security#GHSA-62fx-cvfm-wqx7: Anchor the rrd_maximum and rrd_minimum validation regex on the data source form
-security#GHSA-wp33-g6gc-444m: Anchor the rrd_maximum and rrd_minimum validation regex on the data template form
-security#GHSA-227p-wv52-pjg5: Escape the spike-removal RRD path passed to the removespikes shell command
-security#GHSA-2x86-jpm8-9vgp: Confine the data-query XML file existence check to the Cacti base path
-security#GHSA-4gph-8x7q-h365: Escape the device description in the report-add status message
-security#GHSA-73qf-hq23-c4m7: Authorize the tree copy, lock and unlock actions against per-tree access before mutating
-security#GHSA-929h-4c93-hxcg: Quote the aggregate graph filter LIKE term
-security#GHSA-cg45-2mww-g98p: Revoke the server-side remember-me row on the auth_changepassword nopassword path
-security#GHSA-f7jw-gfhr-cxwm: Escape the Resulting Branch value in the automation tree-rule matching preview
-security#GHSA-h5wg-qf6f-7f6r: Reject unsafe identifiers in the plugin table create and drop helpers
-security#GHSA-m3fh-gxqj-76hq: Strip control characters from the SNMPv3 credential device fields
-security#GHSA-m57p-vf3v-cpgg: Escape the SNMP-sourced device description in the automation tree-rule matching preview
-security#GHSA-m67r-fcmw-gvv7: Confine the imported data-query xml_path to the Cacti tree
-security#GHSA-m6wx-f538-m6q3: Enforce the .log extension on the Boost debug log path setting
-security#GHSA-mpfm-qhvj-5879: Validate the theme in rrdtool_create_error_image() through the theme allowlist
-security#GHSA-r6jp-ff29-v9qw: Escape the imported template name in the template-import preview
-security#GHSA-vx2m-q53g-hmrf: Escape host_snmp_cache.field_name in the automation pivot CASE WHEN builders
-security#GHSA-xq26-f282-f998: Enforce a retention window on the remember-me cookie token check
-security#GHSA-4rmr-wvjq-qxc2: Run the per-page realm check after Basic Auth and guest login instead of returning early
-security#GHSA-j67j-wpm4-9g3x: Require a CSRF-token POST for the user and group update_policy action
-security#GHSA-2p3x-f5jm-rg6p: Break the View-Graphs to poller remote code execution chain
-security#GHSA-x5pw-cg7j-mj4r: Run the bundled webhits poller script wc through a shell-free open
-security#GHSA-9737-rqh3-h7fh: Escape interpolated names in raise_message across the UI
-security#GHSA-9x9h-2577-9w86: Build the colordropdown autocomplete from nodes and text, not HTML strings
-security#GHSA-h96j-8xhc-2p3w: Authorize remote_agent on the genuine peer address, not forwarded headers
-security#GHSA-9qff-xccr-rrc5: Contain data_source_path within the RRA directory
-security#GHSA-vp35-4h28-r883: CVE-2026-39939 Harden package import path traversal defenses
-security#GHSA-pqrp-v752-mc4f: Stop disabled accounts authenticating and revoke tokens on disable
-security#GHSA-3466-fp7g-c9rf: Prefer base_url over the client Host header for the force_https redirect
-security#GHSA-prxj-84qq-v5jq: Authorize tree node create/delete/move/rename/copy against per-tree access before mutating
-security#GHSA-xvwr-hvpm-67jw: Escape template name and dependency path in the Template Import preview
-security#GHSA-77pr-g949-4v5f: Authorize the target graph before Spike Kill rewrites its RRD history
-security#GHSA-w3qw-762w-6g9v: Reject array-form GET actions that bypass the POST and CSRF guard
-security#GHSA-xhpr-w454-cc9w: Cast the stored data-query output_type before building the poller cache query
-security#GHSA-j3px-vw6r-g25x: Escape stored snmp_index values in the New Graphs data-query pivot
-security#GHSA-h745-3r76-g253: Escape the data-query and field names in the New Graphs parse error messages
-security#GHSA-297h-95ff-r767: Escape the log-file names in the log viewer file selector
-security#8055: Harden - Strip cmd.exe metacharacters from SNMP, script query, and data query arguments on win32
-security#8055: Harden - Strip CR/LF from escape_command to stop rrdtool-protocol injection
-security#GHSA-5c9j-rhf5-rj4h: Harden Net-SNMP command execution and SNMP cache processing
-security#8055: Harden - Escape the device Location filter option value to stop stored XSS
-security#8055: Harden - Drop client-forgeable HTTP_PHP_AUTH_USER/HTTP_REMOTE_USER headers from HTTP Basic Auth
-security#7990: Harden - Reject clean-client login requests when the session cookie was not accepted
-security#8008: Harden - Fail closed on a posted LDAP realm that is not a configured domain
-security#8008: Harden - Keep LDAP directory errors out of the login page
-security#8008: Harden - Demand TLS certificates for new LDAP installs
-security#8008: Harden - Restore the Cacti error handler on LDAP bind-only and empty-password paths
-security#7972: Harden - Harden CLI shell arguments, database credentials, and temporary RRD files
-security#7847: Harden - Revoke anonymous access when the guest account is disabled
-security#7847: Harden - Cast graph and device ids to int in get_allowed_* permission filters
-security#7847: Harden - Set the Secure session cookie behind a trusted TLS-terminating proxy
-security#7847: Harden - Escape path_dsstats_log before logging
-security#7847: Harden - Escape aggregate graph local_graph_id before SQL use
-security#7847: Harden - Reject Windows-special log filename forms in the clog purge validation
-security#7845: Harden - Substitute query data before escaping graph titles and axis labels
-security#7832: Harden - Build forced-HTTPS redirects from the server-configured name
-security#7817: Harden - Constrain external-link includes to regular files inside the configured content directory
-security#7235: Harden - Harden advisory command execution and database DDL sink validation
-security#GHSA-2pmj-f26c-3ghv: Restrict graph input fields across the template, graph and import handoffs
-security#7675: Harden - Treat a non-boolean signature result as a failure in import_package
-issue#5679: Attempt SNMP in Ping-OR-SNMP availability checks when ping fails
-issue#6609: Return a controlled empty export when RRDtool XPORT omits metadata
-issue#6684: Prevent VDEF-backed aggregate graph items from being emitted as XPORT data sources
-issue#7027: Refuse to signal a process table PID that pid_t cannot hold
-issue#7027: Detect reused process IDs before treating registry tasks as live
-issue#7029: Propagate replacement database handles to reconnecting callers
-issue#7212: Address a few small memory leaks in realtime graphing
-issue#7216: Aggregate totalling legend printed untotalled single data source values
-issue#7245: Raise execution time limit for bulk graph creation (PR #7378)
-issue#7328: Align graph, CSV export, percentile, and summation sample windows
-issue#7342: Reject wall-clock snmpEngineTime values when selecting device uptime
-issue#7344: Share and preserve realtime graph sizing in Inline and New Window modes
-issue#7359: Undefined variables detected with legacy plugins
-issue#7382: Memoize db_get_table_column_types to cut redundant SHOW COLUMNS
-issue#7385: Keep Automation Network schedule times in the server timezone
-issue#7403: Scale lm-sensors get values consistently with query values
-issue#7409: Commit transaction check uses the passed connection
-issue#7410: Correct octet carry in automation_get_next_host for wide ranges
-issue#7424: Correct SNMP disk counter wrap delta calculations
-issue#7425: Guard process registration and cleanup against PID reuse
-issue#7426: Stop tracking the generated CSRF secret so each install creates its own
-issue#7427: Update device status by host id instead of non-unique hostname
-issue#7429: Prevent monthly automation schedules from resetting next_start to 1970
-issue#7430: Remove inert Automatically Trust Signer control from package import
-issue#7456: Bind the selected operating system in automation discovery filters
-issue#7490: Require complete graph template filter matches
-issue#7493: SNMP walk for output_format fields used max OIDs instead of the device bulk walk size
-issue#7506: Close open select menus when their scroll container moves
-issue#7552: HTMLPurifier definition cache written inside the read-only library tree
-issue#7553: Drop down menus do not update page content after upgrading to 1.2.31
-issue#7591: Honor alternate frame ancestors
-issue#7593: Guard request URI reads on 1.2.x
-issue#7598: Bind host template ID filters as prepared parameters
-issue#7600: Expire persistent auth tokens when permissions change
-issue#7602: Launch cactid without a shell
-issue#7604: Emit structured security events for validation failures
-issue#7606: Log the reason a session read failed
-issue#7617: Allow the graph tree sidebar to shrink with collapsed content
-issue#7624: Restore select-all controls on 1.2.x
-issue#7625: Fail closed on incomplete installer schemas
-issue#7628: Reject incomplete selection payloads
-issue#7630: Propagate background installation failures
-issue#7666: cacti_exec() returned the wrong exit code and warned about a missing exit_code key
-issue#7699: Guard three divisors that PHP 8 makes fatal
-issue#7702: CSP report endpoint size limit never triggers and rate-limit buckets accumulate
-issue#7708: Bind the MIB column names in MibCache::select()
-issue#7711: Install the matrix PHP MySQL driver in the 1.2.x integration workflow
-issue#7727: Log entry for Data Source validation has a double space
-issue#7728: Fail closed during Boost handoff and preserve the direct-RRD fallback
-issue#7747: Make 1.2 dependency builds reproducible
-issue#7747: Keep missing PHP extensions visible to the Cacti installer
-issue#7777: Url encode the base64 regex filter before it reaches the query string
-issue#7801: Harden CSRF secret storage and state-changing browser request handoffs
-issue#7809: Undefined array key "source" warning reindexing SNMP data queries with output-only fields
-issue#7810: Stop using null as a graph CF cache offset on PHP 8.5
-issue#7812: Clarify that missing SNMP notification receivers need no action when traps are disabled
-issue#7819: Remove obsolete pre-PHP 8 compatibility branches
-issue#7829: Report a missing session cookie instead of redirecting into a login loop
-issue#7868: Apply Boost process-table columns on the 1.2.32 upgrade path
-issue#7907: Reject CLI RLIKE patterns, remove the unused remove_graphs --graph-type option, and improve cli argument handling and exit status
-issue#7954: Guard applySkin when cactiNonce is not defined
-issue#7957: Stop treating every PID in a container as a reserved system PID
-issue#7958: Repair batchgapfix --force, which aborted on PHP 8 and killed nothing
-issue#7961: Preserve the full Plugin Management layout after dependency errors
-issue#7967: Fail CSP Pest jobs when no tests execute
-issue#7975: Harden malformed remember-me cookies and protocol-aware UI cookie flags
-issue#7978: Revoke remember-me tokens before clearing cookies on every logout path
-issue#7979: Fail closed on invalid, cyclic, or oversized CDEF definitions
-issue#7981: Require a POST token for actions that reorder or delete items, trees and link pages
-issue#7986: Preserve child exit codes observed by cacti_exec
-issue#8025: An enum type in a table definition can cause problems when creating the table
-issue#8042: Detect a real TTY instead of a dead github_actions check before calling stty size
-issue#8063: Support searching by graph ID on the Graphs list/preview and Aggregate Graphs pages
-issue#8104: Hash the debounce notification key to stop 50-character truncation errors
-issue#8105: Add a Force Uninstall action to remove an orphaned plugin whose directory is missing
-issue#8121: Do not replicate repository and tooling metadata files to remote data collectors during file replication
-issue#8115: db_update_table() now reconciles unique_keys, so a plugin's UNIQUE index is no longer dropped (and a missing one is added) when an existing table is refreshed
-issue#7826: Restore qualified plugin table metadata lookups (plugin_syslog#331)
-issue#7804: Restore RRDproxy encryption with Composer-managed phpseclib 4
-issue#7930: Commit transactions on MySQL as well as MariaDB
-issue#8173: Restore selected preset and custom date ranges for graph lists while preserving detailed panel ranges (PR#8178)
-feature#7246: It should be possible to change the Device of a Graph if both Devices include the Data Query
-feature#7364: Allow Users to Choose to Hide Graph Template on Site Trees
-feature#7388: Allow admin to pass CSV file to change device script for bulk changes
-feature#8032: Update phpseclib to version 4.0.1
-feature#7887: Update bundled jQuery UI to 1.14.2 and jQuery Tablesorter to 2.31.3
-feature#8159: Update bundled DOMPurify to 3.4.16
-feature#8159: Update bundled d3 to 7.9.0
-feature#8159: Update bundled billboard.js to 4.1.0
-feature#8159: Update bundled jQuery Tablesorter to 2.32.0
-feature#8159: Update bundled screenfull to 5.2.0
-feature#8159: Manage bundled front-end JavaScript libraries through npm so Dependabot can track them
-feature#8166: Add a cross-process shared SNMP authentication cache (disabled by default) that pre-hardens SNMPv3 credential arguments once per credential change and seals them with the per-installation AES-256-GCM key, so poller, cmd and script server processes reuse them instead of rebuilding them on every request
-feature#8166: Rework cacti_exec() to use an idle (output-refilling) timeout and drop the fixed 50ms per-iteration sleep, so fast commands return immediately while a genuinely stalled child is still reaped, without misreading a just-terminated child as a timeout
-feature#8166: Route SNMPv3 gets through the in-process php-snmp extension when it is available, bypassing the Net-SNMP binaries and their credential cache
-feature#8166: Collect each device's SNMP data sources in cmd.php in a single max_oids-sized batched request over the persistent session, replacing one SNMP round trip per OID with one per max_get_size OIDs
-feature#8166: Add an "Enable MD5 and DES for SNMPv3" setting (off by default) that removes the legacy MD5/DES algorithms from the Device and Automation SNMP Option pickers when disabled, matching hardened (FIPS) PHP and Net-SNMP builds
1.2.31
-security#GHSA-6RVG-2VM8-5WRF: CVE-2026-22802 Authentication Bypass leads to information disclosure
-security#GHSA-9wvp-cfx6-hj7p: CVE-2026-24482 1st argument to preg_replace is not sanitized and given from user_inputs
-security#GHSA-j3p9-q28q-8j33: CVE-2026-24483 Unsafe serialization usage in the maint plugin on user supplied POST data
-security#GHSA-23g4-vf2j-94w4: CVE-2026-39894 RRDtool metric shift via LC_NUMERIC locale comma decimal formatting
-security#GHSA-wpjq-m269-mghj: CVE-2026-39895 Second-order RCE via unescaped log path in exec_background shell redirection
-security#GHSA-hr82-h9vr-587w: CVE-2026-39896 TOCTOU race in auth_process_lockout allows brute-force lockout bypass
-security#GHSA-2j98-xfjq-gw39: CVE-2026-39897 Reflected XSS in html_auth_footer error message output
-security#GHSA-fwh3-8c8r-378r: CVE-2026-39898 Reflected XSS via rfilter parameter in aggregate_graphs.php input value
-security#GHSA-pr9x-34w8-4mf7: CVE-2026-39899 Path traversal via filename parameter in package_import.php
-security#GHSA-34rf-frc3-v48r: CVE-2026-39900 Reflected XSS via tab parameter in auth_profile.php JavaScript context
-security#GHSA-w47c-53f9-w47g: CVE-2026-39947 RRDtool IPC pipe poisoning via is_numeric newline bypass in rrdtool_function_update
-security#GHSA-9jqv-4cpm-vm2c: CVE-2026-39948 SQL Injection via rfilter parameter in RLIKE clauses
-security#GHSA-xq98-376r-hv9j: CVE-2026-40079 Command Injection via escape_command() no-op in RRDtool execution
-security#GHSA-69gg-mjfm-jjpc: CVE-2026-39893 Pre-authentication SQL injection via rfilter RLIKE clause in graph_view.php
-security#GHSA-c4qp-j9r9-fq24: CVE-2026-39902 Authenticated RCE on Data Input
-security#GHSA-r7hc-hrpv-52gf: Validate host_id before it reaches the graph template query
-security#GHSA-rm7p-qcqm-x5m6: CVE-2026-39938 Unauthenticated LFI via graph_theme and rrdtool IPC serialization hardening
-security#GHSA-vp35-4h28-r883: CVE-2026-39939 Path traversal in Package Import file write allows arbitrary file creation in webroot
-security#GHSA-8522-5p3m-754c: CVE-2026-39949 Authenticated Remote Code Execution via Host Variable Injection
-security#GHSA-j696-m433-87qq: CVE-2026-39950 Arbitrary PHP file write via Plugin Archive extraction leading to RCE
-security#GHSA-pf37-v86f-5xwp: CVE-2026-39951 Stored SQL Injection via graph_name_regexp in Reports feature
-security#GHSA-6233-v5hc-6gvf: CVE-2026-39952 Stored XSS in Report Tree expansion titles
-security#GHSA-xrh3-6pfg-ff35: CVE-2026-39953 Unauthenticated Stored SQL Injection via graph_name_regexp in reports.php
-security#GHSA-gp82-qhrg-crv7: CVE-2026-39955 Pre-Authentication SQL Injection via unanchored FILTER_VALIDATE_REGEXP in graph_view.php
-security#GHSA-84q3-92xc-c3pf: CVE-2026-40078 Backend ORDER BY SQL Injection
-security#GHSA-6gr7-53g8-vchq: CVE-2026-40080 Open Redirect via HTTP_REFERER substring check in auth_login_redirect
-security#GHSA-8p2f-6jvx-j75j: CVE-2026-40081 Reports IDOR allows any authenticated user to modify other users' reports (CWE-639)
-security#GHSA-273r-qr93-wgcp: CVE-2026-40082 Session Fixation via missing session_regenerate_id() after login
-security#GHSA-j9jv-6xjq-9hhj: CVE-2026-40083 SQL Injection in managers.php via uncast array values in IN clauses
-security#GHSA-mjvw-mhj5-9jcj: CVE-2026-40084 Arbitrary File Read via path traversal in Report format_file parameter
-security#GHSA-274c-97hj-pv2v: CVE-2026-40941 Package Import Signature Validation Bypass allows self-signed packages
-security#GHSA-g37j-39f4-6r4j: CVE-2026-41884 Arbitrary File Read via Reports format_file path traversal
-security: CVE-2026-1513 billboard.js before 3.18.0 Improper Input Sanitization Allows Remote JavaScript Execution
-security: CVE-2026-40194, CVE-2026-32935 in phpseclib - This is breaking change for RRDProxy
-security: CVE-2026-XXXXX - SQL Injection in automation_tree_rules.php
-issue#6168: When purging RRD files, paths are not correctly handled
-issue#6202: When using automation, devices may not be added as expected
-issue#6204: Attempting to match a field in automation may cause unexpected errors
-issue#6210: Ensure column names are escaped to prevent reserved word issues
-issue#6240: Improve sort order for incorrect RRA's
-issue#6249: Unable to send Email to users without a domain name
-issue#6251: Cacti can issue a warning in a case where a user attempts to view a graph that no longer exists
-issue#6253: Unification of i18n behaviour when the input is null
-issue#6257: Fix archive rrd with structural path, remove only rrd file check
-issue#6262: If the database service restarts during polling or other activities errors occur
-issue#6270: Select list using special characters for the current value can not be displayed in thold
-issue#6271: Improve validation logging to give administrators a clue where the error came from
-issue#6283: Divide by Zero if the $rows variable is not set
-issue#6292: Fatal validation errors occur if a request variable default value is null
-issue#6294: Undefined variable $params in lib/api_automation.php
-issue#6296: Issue with posix_kill function using Windows as your Cacti server
-issue#6297: Enhance SMTP Security Settings to Higher Order TLS
-issue#6299: Support SMTPUTF8 for modern Email Servers
-issue#6313: Errors when editing multiple devices with unset value
-issue#6314: Newly Added Items in Aggregation Chart Don’t Reflect in Item Count
-issue#6315: Undefined function error duplicating a data input method
-issue#6326: Issues with Cisco Devices and Higher Levels of Privacy
-issue#6327: Update Browser Login and Change Password Autocomplete to new Browser Standard
-issue#6329: PHP Error on LDAP access
-issue#6331: Upgrading from old versions of Cacti prior to 1_0_5 generates errors
-issue#6334: Unable to hide HRULE and COMMENT items for Aggregate of Interface Traffic graph (which includes 95th percentile)
-issue#6335: Fix incorrect parsing of email address containing whitespace
-issue#6441: Spikekill Purge Using the wrong variable
-issue#6444: Applying Title Cache Changes for Data Input Methods using |data_xxxx| not working
-issue#6490: Selective Debug Setting in Cacti 'Clear All' button results in selecting the first item
-issue#6507: Fix incorrect cli parameter when loading template information
-issue#6508: PHP Error when exporting data
-issue#6516: SQL Errors in Automation Graph Rules processing
-issue#6518: Ensure that the csrf-secret file is written in a less permissive way
-issue#6519: Realtime generates errors in the Cacti Log after a Graph has been removed
-issue#6546: Add missing xml and script files for NetSNMP LMSensor
-issue#6551: Fix paths in audit_database script (FreeBSD)
-issue#6574: Add hook device_change_javascript, necessarily for thold
-issue: Correct some PHPStan issues found in audit of Aggregate that can lead to warnings
-issue: Using the rrd_splice.php cli can result in the loss of data
-issue: Defect in SpikeKill algorithm was causing a loss of data for Gap Fill and Float methods
-issue: Make local modifications to the phpdiff vendor package for backwards compatibility
-feature#6523: When disabling a users, ensure that their stored authentication cookies are remove and any sessions cleared
-feature#6524: When changing your password, logout from all sessions
-feature: Close user sessions after a password change is forced
-feature: Update PHPMailer to 6.10 to support SMTPUTF8
-feature: Update phpseclib for the Service Check plugin
-feature: Update DOMPurify to 3.3.0
1.2.30
-issue#6089: Cannot Add New User due to incorrect array structure
-issue#6090: Undefined function warnings in Automation
-issue#6099: When transferring a system from a backup if the poller has not run recently rrdtool issues are found
-issue#6172: Quoting issues leading to translation issue in form messaging in Chinese language
-issue#6173: Deprecation warning when using boost for the first time
-issue#6183: Checkbox is displayed always on in some cases
1.2.29
-security#GHSA-pv2c-97pp-vxwg: CVE-2024-45598 Local File Inclusion (LFI) Vulnerability via Poller Standard Error Log Path
-security#GHSA-f9c7-7rc3-574c: CVE-2025-24368 SQL Injection vulnerability when using tree rules through Automation API
-security#GHSA-vj9g-P7F2-4wqj: SQL Injection vulnerability when view host template
-security#GHSA-fh3x-69rr-qqpp: CVE-2024-54145 SQL Injection vulnerability when request automation devices
-security#GHSA-c5j8-jxj3-hh36: CVE-2025-22604 Authenticated RCE via multi-line SNMP responses
-security#GHSA-fxrq-fr7h-9rqq: CVE-2025-24367 Arbitrary File Creation leading to RCE
-issue#5843: Issue with temporary tables with use of microtime
-issue#5847: Presets Time in Cacti 1.2.28 Not Automatically Updating...
-issue#5848: RRDfile Auto Clean not working
-issue#5856: Help HTML file is incorrect for Automation Networks
-issue#5867: Disabling a Tree does not function as expected
-issue#5868: Error when remove Orphaned Graphs from GUI
-issue#5870: CLI utility splice_rrd.php generates an error in PHP8+
-issue#5874: IPV6 address colon format causes the snmp query to not work
-issue#5884: Fix Fortigate and Aruba OSCX switch template, improve Clearpass template
-issue#5927: Unable to re-enable a plugin using plugin_manage.php
-issue#5932: When upgrading Cacti, the replicate_out() process runs repeatedly
-issue#5961: Issues with Replication of Tables and Misleading Full Sync Time
-issue#5963: Cacti caching for db_table_exists() and db_column_exists() is not connection aware and replication does not replicate empty table structures
-issue#5986: PHP ERRORS with php8.4 while including global_arrays.php
-issue#5987: Please add a new line to upgrade_database script
-issue#6065: Preview page no longer refreshes
-issue#6078: Convert tables errors when using default mariadb collation settings
-feature#5921: Add HPE Nimble/Alletra template
-feature#5933: Only attempt to change the table type and character encoding for built-in Cacti tables
1.2.28
-security#GHSA-49f2-hwx9-qffr: CVE-2024-43365 XSS vulnerability when creating external links with the consolenewsection parameter
-security#GHSA-fgc6-g8gc-wcg5: CVE-2024-43364 XSS vulnerability when creating external links with the title parameter
-security#GHSA-gxq4-mv8h-6qj4: CVE-2024-43363 RCE vulnerability can be executed via Log Poisoning
-security#GHSA-wh9c-v56x-v77c: CVE-2024-43362 XSS vulnerability when creating external links with the fileurl parameter
-issue#5636: When using LDAP authentication the first time, warnings may appear in logs
-issue#5754: When installing, a replication loop for plugin_realms may occur
-issue#5759: When installing, remote poller may attempt to sync with other pollers
-issue#5768: When a Data Query has a space, indexes may not be properly escaped
-issue#5771: Boost does not always order data source records properly
-issue#5772: Add IP address to the login audit for successful logins by xmacan
-issue#5773: Undefined variable error may sometimes occur when dealing with RRD output by MSS970
-issue#5777: When export to CSV, only the first line of notes is included
-issue#5780: When rendering forms, missing default value can cause errors
-issue#5782: Allow hosted content to be executable for the links page
-issue#5783: When closing database connections, some may linger incorrectly
-issue#5785: When changing passwords, an infinite loop may occur by ddb4github
-issue#5790: When using Cacti Daemon, a "Cron out of sync" message may be reported
-issue#5791: Add ability to filter/sort users by group or last login time
-issue#5792: When using List View, unable to add Graphs to a Report
-issue#5797: When using SNMPv3, some devices may show polling issues
-issue#5802: Limit table conversion to Cacti core tables
-issue#5806: Fix issues with posix-based kills on Windows
-issue#5813: When installing, password changes may fail on new installations
-issue#5814: When using structured RRD folders, permission issues may be flagged incorrectly
-issue#5823: When unable to locate a valid theme, new default will be Modern
-issue#5824: Properly cache the data source information for dsstats processing
-issue#5840: Reindex Method 'Verify all Fields' does not work for OID/INDEX parse method
-feature#5784: Add ability to log database connections/disconnections
-feature#5796: Add Ping Method where connection refused assumes host is up
-feature#5819: When displaying graphs, default end time does not show full 24 hour period
-feature#5825: Add --id to remove_device.php
-feature#5828: Add Location and Site to Graph List View
-feature#5830: Add more verbose logging to Boost
-feature: Update jQuery to 3.7.1
-feature: Update jQueryUI to 1.14.0
-feature: Update Purify.js to 3.1.6
-feature: Update billboard.js to 3.13.0
-feature: Improve the performance of the repopulation of the poller cache
1.2.27
-security#GHSA-37x7-mfjv-mm7m: CVE-2024-34340 Authentication Bypass when using using older password hashes
-security#GHSA-7cmj-g5qc-pj88: CVE-2024-25641 RCE vulnerability when importing packages
-security#GHSA-cx8g-hvq8-p2rv: CVE-2024-31459 RCE vulnerability when plugins include files
-security#GHSA-gj3f-p326-gh8r: CVE-2024-31460 SQL Injection vulnerability when using tree rules through Automation API
-security#GHSA-grj5-8fcj-34gh: CVE-2024-29894 XSS vulnerability when using JavaScript based messaging API
-security#GHSA-jrxg-8wh8-943x: CVE-2024-31458 SQL Injection vulnerability when using form templates
-security#GHSA-p4ch-7hjw-6m87: CVE-2024-31444 XSS vulnerability when reading tree rules with Automation API
-security#GHSA-rqc8-78cm-85j3: CVE-2024-31443 XSS vulnerability when managing data queries
-security#GHSA-vjph-r677-6pcc: CVE-2024-31445 SQL Injection vulnerability when retrieving graphs using Automation API
-issue#5622: Improve PHP 8.3 support
-issue#5628: When importing packages via command line, data source profile could not be selected
-issue#5629: When changing password, returning to previous page does not always work
-issue#5636: When using LDAP authentication the first time, warnings may appear in logs
-issue#5638: When editing/viewing devices, add IPv6 info to hostname tooltip
-issue#5645: Improve speed of polling when Boost is enabled
-issue#5648: Improve support for Half-Hour time zones
-issue#5649: Improve support of ping on Windows
-issue#5655: When user session not found, device lists can be incorrectly returned
-issue#5660: On import, legacy templates may generate warnings
-issue#5661: Improve support for alternate locations of Ping
-issue#5662: Improve PHP 8.1 support for Installer
-issue#5669: Fix issues with number formatting
-issue#5677: Improve PHP 8.1 support when SpikeKill is run first time
-issue#5693: Improve PHP 8.1 support for SpikeKill
-issue#5696: When using Chinese to search for graphics, garbled characters appear.
-issue#5701: When importing templates, preview mode will not always load
-issue#5720: When remote poller is installed, MySQL TimeZone DB checks are not performed
-issue#5723: When Remote Poller installation completes, no finish button is shown
-issue#5725: Unauthorized agents should be recorded into logs
-issue#5726: Poller cache may not always update if hostname changes
-issue#5727: When using CMD poller, Failure and Recovery dates may have incorrect values
-issue#5731: Saving a Tree can cause the tree to become unpublished
-issue#5732: Web Basic Authentication does not record user logins
-issue#5733: When using Accent-based languages, translations may not work properly
-issue#5743: Fix automation expressions for device rules
-issue#5748: Improve PHP 8.1 Support during fresh install with boost
-feature#5692: Add a device "enabled/disabled" indicator next to the graphs
-feature#5710: Notify the admin periodically when a remote data collector goes into heartbeat status
-feature#5716: Add template for Aruba Clearpass
-feature#5730: Add fliter/sort of Device Templates by Graph Templates
1.2.26
-issue#5464: PHP warning when view Data Source Info mode with new Data Source
-issue#5481: Attempting to edit a Data Query that does not exist throws warnings and not an GUI error
-issue#5483: cacti 1.2.25 ubuntu server 22.04.3 php8.1 add device error
-issue#5485: Selecting a host device in System Utilities - View Data Query Cache raises error in cacti log
-issue#5489: remove_graphs.php does not handle "--preserve" option
-issue#5490: Database failure causes infinite recursion in cacti_log() followed by machine lockup
-issue#5492: Cacti 1.2.25 ss_host_cpu.php CPU graphs not updating anymore on Windows servers
-issue#5493: Multi select drop down list box not rendered correctly in Chrome and Edge
-issue#5494: typo error in name used in inserts array for selective_plugin_debug
-issue#5495: Upon upgrade, cacti falsely assumes that a plugin is not compatible, when it could simply not be present
-issue#5496: Plugin Management CLI does not work when multiple plugins are specified
-issue#5502: Errors related to php 8.3 and page generation including a checkbox
-issue#5503: Note, we could not process all your actions. Details are below
-issue#5514: DS Stats issues warnings when the RRDfile has not been initialized
-issue#5527: Upgrade from 0.8.8 to 1.2.25 (latest) fails on db upgrade due to missing data source profile id
-issue#5534: When deleting a single Data Source the table data_debug is not purged
-issue#5542: When a form element does not include a 'value' column, provide a more helpful warning message
-issue#5554: Interface description with equal sign (=) in ifAlias does not show Alias
-issue#5555: Aggregate graph does not show other percentiles
-issue#5561: Settings table custom size reverted by database repair
-issue#5572: RRD Checker timeouts to low
-issue#5573: Incorrect URL for editing graph template
-issue#5581: Due to previously never completed upgrade, future upgrades fail due to missing color table keys
-issue#5583: On install ensure Default Device is either Net-SNMP or Cisco Router or allow user to define during install
-issue#5585: Refix Issue #4649 using more appropriate method
-issue#5586: CSV export displays data shifted by rrd step interval
-issue#5589: When a graph has a real long cdef in graph debug mode, it forces an undesirable scroll
-issue#5590: Secondary LDAP server not evaluated when the first one has failed
-issue#5602: When adding a device, using the bulk walk option can make version information appear
-issue#5609: When parsing a Data Query resource, an error can be reported if no direction is specified
-issue#5612: Database reconnection can cause errors to be reported incorrectly
-issue#5613: Fix returned value if $sau is empty
-issue#5641: Cmd poller - add availability test for devices without poller items
-issue#6194: Latest PHP 8.4 causes deprecation warnings in plugins
-feature#5577: Add Aruba switch, Aruba controller and HPE iLO templates
-feature#5597: Add OSCX 6x00 templates
1.2.25
-security#GHSA-77rf-774j-6h3p: CVE-2023-30534 Protect against Insecure deserialization of filter data
-security#GHSA-gx8c-xvjh-9qh4: CVE-2023-39360 Protect against Cross-Site Scripting vulnerability when creating new graphs
-security#GHSA-6r43-q2fw-5wrg: CVE-2023-39361 Protect against Unauthenticated SQL Injection when viewing graphs
-security#GHSA-6jhp-mgqg-fhqg: CVE-2023-39357 Protect against SQL Injection when saving data with sql_save()
-security#GHSA-g6ff-58cj-x3cp: CVE-2023-39362 Protect against Authenticated command injection when using SNMP options
-security#GHSA-q4wh-3f9w-836h: CVE-2023-39359 Protect against Authenticated SQL injection vulnerability when managing graphs
-security#GHSA-gj95-7xr8-9p7g: CVE-2023-39358 Protect against Authenticated SQL injection vulnerability when managing reports
-security#GHSA-v5w7-hww7-2f22: CVE-2023-39365 Protect against SQL Injection when using regular expressions
-security#GHSA-4pjv-rmrp-r59x: CVE-2023-39364 Protect against Open redirect in change password functionality
-security#GHSA-rwhh-xxm6-vcrv: CVE-2023-39366 Protect against Cross-Site Scripting vulnerability with Device Name when managing Data Sources
-security#GHSA-24w4-4hp2-3j8h: CVE-2023-39510 Protect against Cross-Site Scripting vulnerability with Device Name when administrating Reports
-security#GHSA-5hpr-4hhc-8q42: CVE-2023-39511 Protect against Cross-Site Scripting vulnerability with Device Name when editing Graphs whilst managing Reports
-security#GHSA-vqcc-5v63-g9q7: CVE-2023-39512 Protect against Cross-Site Scripting vulnerability with Device Name when managing Data Sources
-security#GHSA-9fj7-8f2j-2rw2: CVE-2023-39513 Protect against Cross-Site Scripting vulnerability with Device Name when debugging data queries
-security#GHSA-6hrc-2cfc-8hm7: CVE-2023-39514 Protect against Cross-Site Scripting vulnerability with Data Source Name when managing Graphs
-security#GHSA-hrg9-qqqx-wc4h: CVE-2023-39515 Protect against Cross-Site Scripting vulnerability with Data Source Name when debugging Data Queries
-security#GHSA-r8qq-88g3-hmgv: CVE-2023-39516 Protect against Cross-Site Scripting vulnerability with Data Source Information when managing Data Sources
-security#GHSA-rf5w-pq3f-9876: CVE-2023-31132 Protect against Privilege escalation when Cacti installed using Windows Installer defaults
-issue#2959: When rebuilding the Poller Cache from command line, allow it to be multi-threaded
-issue#4045: When searching tree or list views, the URL does not update after changes
-issue#5254: When creating a Data Source Template with a specific snmp port, the port is not always applied
-issue#5255: When a Data Query references a file, the filename should be trimmed to remove spurious spaces
-issue#5258: THold plugin may not always install or upgrade properly
-issue#5259: RRD file structures are not always updated properly, if there are more Data Sources in the Data Template than the Graph Template
-issue#5263: When reindexing devices, errors may sometimes be shown
-issue#5272: Boost may loose data when the database server is overloaded
-issue#5275: Boost can sometimes output unexpected or invalid values
-issue#5277: Boost should not attempt to start if there are no items to process
-issue#5279: Rebuilding the poller cache does not always work as expected
-issue#5282: Host CPU items may not work poll as expected when on a remote data collector where hmib is also enabled
-issue#5283: When creating new graphs, invalid offset errors may be generated
-issue#5291: When importing packages, SQL errors may be generated
-issue#5298: When managing plugins from command line, the --plugin option is not properly handled
-issue#5299: When automating an install of Cacti, error messages can be appear
-issue#5300: When performing automated install of a plugin, warnings can be thrown
-issue#5315: Automation references the wrong table name causing errors
-issue#5317: Data Source Info Mode produces invalid recommendations
-issue#5319: Data Source Debug 'Run All' generates too many log messages
-issue#5323: The description of rebuild poller cache in utilities does not display properly
-issue#5324: When reindexing a device, debug information may not always display properly
-issue#5329: Upon displaying a form with errors, the session error fields variable isn't cleared
-issue#5333: MariaDB clusters will no longer support exclusive locks
-issue#5336: RRDtool can fail to update when sources in Data Template and Graph Template data sources do not match
-issue#5338: Compatibility improvements for Boost under PHP 8.x
-issue#5342: When searching the tree, increase the time before querying for items
-issue#5347: Device Location drop down does not always populate correctly
-issue#5354: When viewing Realtime graphs, undefined variable errors may be reported
-issue#5355: SNMP Uptime is not always ignored for spikekills
-issue#5356: Improve detection of downed Devices
-issue#5360: When reporting missing functions from Plugins, ensure messages do not occur too often
-issue#5364: When starting the Cacti daemon, database errors may be reported when there is no problem
-issue#5366: When reporting from RRDcheck, ensure prefix is in the correct casing
-issue#5371: Improve Orphaned Data Source options and display
-issue#5372: Parsing the PHP Configuration may sometimes produce errors
-issue#5376: Security processes attempt to check for a user lockout even if there is no user logged in
-issue#5377: When attempting to edit a tree, the search filter for Graphs remains disabled
-issue#5381: When reindexing, a Data Source that could be un-orphaned may not always be unorphaned
-issue#5382: When parsing a date value, there could be more than 30 chars
-issue#5384: Untemplated Data Sources can fail to update due to lack of an assigned Graph
-issue#5386: When processing items to check, do not include disabled hosts
-issue#5390: When saving a Data Source Template, SQL errors may be reported
-issue#5392: When importing a Template, errors may be recorded
-issue#5402: Some display strings have invalid formatting that cannot be parsed
-issue#5403: When filtering with regular expressions, the 'does not match' option does not always function as expected
-issue#5409: When enabling a plugin, sometimes it can appear as if nothing happens
-issue#5413: Ensure the Rows Per Page option shows limitations set by configuration
-issue#5414: Plugins are unable to modify fields in the setting 'Change Device Settings'
-issue#5417: When reporting emails being sent, ensure BCC addresses are also included
-issue#5420: Improve compatibility of SNMP class trim handling under PHP 8.x
-issue#5426: When importing legacy Data Query Templates, the Template can become unusable
-issue#5427: Provide ability to raise an event when extending the settings form
-issue#5434: Prevent unsupported SQL Mode flags from being set
-issue#5439: The DSStats summary does not always display expected values
-issue#5440: When performing a fresh install, device classification may be missing.
-issue#5446: Duplication functions for Graph/Template and Data Source/Template do not return and id
-issue#5447: Duplication of Device Templates should be an API call
-issue#5450: Unable to convert database to latin1 instead of utf8 if desired
-issue#5451: When creating Graphs, the process may become slower over time as more items exist
-issue#5452: When a bulk walk size is set to automatic, this is not always set to the optimal value
-issue#5453: Update copyright notice on import packages
-issue#5454: When viewing Orphan Graphs, SQL errors may be reported
-issue#5457: When reindexing hosts from command line, ensure only one process runs at once
-issue#5458: When a Data Query has no Graphs, it may not be deletable
-issue#5459: When duplicating a Graph Template, provide an option to not duplicate Data Query association
-issue#5460: When duplicating a Data Template errors can appear in the Cacti log
-issue#5462: When importing a Package, previewing makes unexpected changes to Cacti Templates
-issue#5466: When enabling boost on a fresh install, an error may be reported
-issue#5467: Improve compatibility for backtrace logging under PHP 8.x
-issue#5475: Improve compatibility for Advanced Ping under PHP 8.x
-feature#5375: Provide new templates for Fortigate and Aruba Cluster to be available during install
-feature#5393: Provide new template for SNMP Printer to be available during install
-feature#5418: When importing devices, allow a device classification to be known
-feature#5442: Extend length of maximum name in settings table
-feature#5444: Extend length of maximum name in user settings table
-feature#5448: Data Queries do not have a Duplication function
-feature#5252: Upgrade d3.js v7.8.2 and billboard.js v3.7.4
-feature#5358: Upgrade ua-parser.js to version 1.0.35
-feature#5397: Update Cisco Device Template to include HSRP graph template
-feature: New hook for device template change 'device_template_change'
1.2.24
-issue#5127: Unable to import Local Linux Machine template
-issue#5134: Maximum Memory shows -1 instead of Unlimited
-issue#5135: RRDcleaner and RRDcheck share the same filter details causing errors
-issue#5136: When passed a null value, number_format_i18n() can return a invalid number
-issue#5137: When attempting to update structured paths, SQL errors can occur
-issue#5140: Compatibility changes for SNMP under PHP 8.2
-issue#5142: Fix issues with permission model and warnings
-issue#5143: When a Device has zero Graphs or Data Sources, it does not display a value
-issue#5145: Changing SNMP settings to None leaves Bulk Walk Maximum Repititions visible
-issue#5147: Language handlers may not always be loaded properly
-issue#5150: Wrong parameters are shown for the Import Package script
-issue#5151: Templates appear to lose their suggested name values
-issue#5159: When editing a tree, the tree can not be set to published
-issue#5160: Translations on debian 'bookworm' systems may cause server errors
-issue#5161: Switching language in the settings does not immediately become active
-issue#5166: Plugin permissions may sometimes appear in the wrong section
-issue#5167: Graph template for NetSNMP lmsensors missing
-issue#5168: Import Package is misleading when reviewing Device Template Changes
-issue#5169: Device failure and recovery dates can be misleading
-issue#5170: Prevent remote polling functionality from running on main poller
-issue#5174: When adding a new device, location is not being saved
-issue#5180: Audit Database has issues with storage engine compare
-issue#5181: When working with remote data collectors, some errors may be logged
-issue#5182: Graph Image does not have check for Remote Agent
-issue#5184: When a user has been deleted, checking permissions can cause errors
-issue#5185: Repair Database does not prune old Poller Item Records
-issue#5187: When calling plugin functions, errors can appear if they are not present
-issue#5188: When filtering Device Templates, valid matches are not always shown
-issue#5190: When using Gradient Support GPRINT Text Format is misaligned
-issue#5194: CSRF directory needs to be writeable for creating the csrf-secret.php file
-issue#5195: When removing spikes, errors can be recorded for NaN samples
-issue#5196: Gradient support can break Graphs containing special characters
-issue#5197: Unable to obtain realtime graph from remote poller
-issue#5198: Compability Improvements for PHP Diff under PHP 8.x
-issue#5199: When trying to obtain data, cacti should not long Transport Read errors
-issue#5200: Compatibility improvements for Classic Tab images under PHP 8.x
-issue#5201: Weathermaps can have issues rendering with some themes
-issue#5202: When importing packages, Graph Size does not get updated to Graph Templates
-issue#5203: Host Mib Device package can cause errors with NetSNMP scripts
-issue#5204: Compatibility improvements for Audit Database under PHP 8.x
-issue#5205: When using Diff Viewer, rendering is not always correct under certain themes
-issue#5207: Compatibility improvements for Installer under PHP 8.x
-issue#5208: Some i18n strings are not properly translated
-issue#5209: When disabling a user, no log is recorded
-issue#5211: When creating a new graph, undefined variable errors may be recorded
-issue#5214: Basic Auth is timing out and logging users off automatically
-issue#5223: When using callback form functions, name and id field may not be correctly set
-issue#5224: When poller runtime is exceeded, time should be display as a rounded number
-issue#5227: When debugging a data source, errors may be shown if no RRDfile created yet
-issue#5232: Polling can appear delayed due to early statistics gathering
-issue#5236: When viewing a graph, Edit Graph Template link may open wrong url
-issue#5238: Searching for Poller Items can generates SQL Errors
-issue#5239: Bulk Walk Maximum Repetitions may sometimes be ignored