
CHANGE LOG OF SNMP4J-Agent-DB
=============================

[2026-07-17] v3.9.2 (Requires SNMP4J-Agent v3.9.2 or later)

* SECURITY: Removed full read-write access for SNMPv3 noAuthNoPriv "unsec" users from SampleAgent's
  sample configuration. Limted all auhtNoPriv users to read-only access limited to system group.
* SECURITY: Further improved SampleAgentConfig.properties VACM configuration: Removed 'unsec' noAuthNoPriv
  access from broader "viewer" views and assigned it to "minaccessgroup" (like all noPriv users).
* Added: New org.snmp4j.agent.io.prop.PropertyMOTreeBuilder builds an in-memory MIBTree from an MOInput
  formatted property configuration (e.g. SampleAgentConfig.properties), reusing PropertyMOInput for value
  parsing. Values that reference runtime instances which cannot be resolved statically (e.g. {$oid}) are
  preserved as UnresolvedReference placeholders (through the new ReferenceVariableProvider) so that the
  configured reference remains visible.
* Added: New org.snmp4j.agent.util.MIBTreeFormatter interface with a MarkdownMIBTreeFormatter implementation
  that renders a MIBTree as a compact GitHub flavored Markdown overview (collapsed OID tree, scalars with
  their SMI syntax, and conceptual tables as Markdown tables).
* Added: The SampleAgent accepts the optional "-write-init-config <file>" command line option that writes a
  human readable Markdown overview of the initial MIB configuration (using PropertyMOTreeBuilder and
  MarkdownMIBTreeFormatter) before the agent starts. Any provided "-viewer"/"-admin" pass keys are reflected
  in the overview.

[2026-06-24] v3.9.1 (Requires SNMP4J-Agent v3.9.1 or later)

* Added: Transparent encryption of SecretOctetString values in MOXodusPersistence. When a master
  password is supplied to the new constructors, secret values are protected on disk using PBKDF2 key
  derivation and AES/GCM authenticated encryption (default
  PBKDF2WithHmacSHA256:600000:AES/GCM/NoPadding:256). The algorithm is configurable through
  setDefaultEncryptionAlgorithm and its identifier is stored with each value, so previously written
  data stays decryptable after the default changes. Loading encrypted data without a master password
  aborts the load by default, or passes the encrypted bytes through unchanged when
  setIgnoreEncryptedDataWithoutPassword(true) is set.
* Added: MOXodusPersistenceProvider constructor accepting an AgentAuditPolicy so that file load, save,
  create and delete operations can be audited. The former constructor without audit-policy is now
  deprecated.
* Added: Unit test MOXodusPersistenceEncryptionTest covering store and restore of encrypted scalar and
  tabular SecretOctetString values with matching, missing, and differing master passwords.
* Added: src/scripts/generate-certificate-chain.sh sample script to generate a certificate chain.
* Improved: SampleAgent now configures an AgentAuditPolicy and propagates it to the persistence
  provider.
* Improved: Javadoc of MOXodusPersistence (load, EncryptionSpec) and the VersionInfo constants.

[2025-04-05] v3.8.3 (Requires SNMP4J-Agent v3.8.3 or later)

* Updated: Dependency of SNMP4J-Agent to 3.8.3 and SNMP4J to 3.9.1.

[2025-02-06] v3.8.2 (Requires SNMP4J-Agent v3.8.2 or later)

* Updated: Dependency of SNMP4J-Agent to 3.8.2.
* Updated: slfj-api and -nop to 2.0.16.

[2024-04-27] v3.8.1 (Requires SNMP4J-Agent v3.8.1 or later)

* Updated: Dependency of SNMP4J-Agent to 3.8.1.

[2024-04-23] v3.8.0 (Requires SNMP4J-Agent v3.8.0 or later)

* SECURITY: Updated dependency to SNMP4J-Agent to 3.8.0.
* Added: SampleAgent VACM configuration that shows on vacmAccessTable how to exclude a column and a single row
  from a read-view named colRowExclReadView excluding the vacmAccessReadViewName column and the dhKickstart row.

[2024-04-11] v3.7.2 (Requires SNMP4J-Agent v3.7.2 or later)

* Added: MOXodusPersistenceProvider.close() to be able to close the provider.
* Added: DefaultMOServer deadlock prevent usage in SampleAgent.

[2024-04-08] v3.7.1 (Requires SNMP4J-Agent v3.7.1 or later)

* Updated: Dependency to SNMP4J-Agent to 3.7.1.

[2024-04-02] v3.7.0 (Requires SNMP4J-Agent v3.7.0 or later)

* Fixed: Replaced vulnerable Xodus dependency org.apache.commons.commons-compress.1.21 with 1.26.1.
* Updated: Dependency to SNMP4J-Agent to 3.7.0.

[2023-03-27] v3.6.4 (Requires SNMP4J-Agent v3.6.6 or later)

* Updated: Dependency to SNMP4J-Agent 3.6.6.
* Updated: slf4j-nop dependency to 2.0.5.

[2022-11-11] v3.6.3 (Requires SNMP4J-Agent v3.6.5 or later)

* Updated: Dependency to SNMP4J-Agent 3.6.5.
* Updated: slf4j-nop dependency to 2.0.3.
* Improved: Log config of SampleAgent to allow optionally disable any logging (used by unit-tests).

[2022-10-08] v3.6.2 (Requires SNMP4J-Agent v3.6.3 or later)

* Fixed: Java 9 API compatibility by adding maven.compiler.release option the maven-compiler-plugin.

[2022-09-30] v3.6.1 (Requires SNMP4J-Agent v3.6.1 or later)

* Fixed: StackOverflow caused by calling MOScalar.setValue in method in MOScalar.getValue through debugging
  log output code in MOXodusPersistence.afterMOChange.

[2022-06-14] v3.6.0 (Requires SNMP4J-Agent v3.6.0 or later)

* Updated: Dependencies. Now Xodus 2.0.1 is used.
* Added: MOXodusPersistenceProvider.saveDumpAll(..) to save all RandomAccessManagedObjects (optionally
  including volatile objects) regardless of the currently set SavingStrategy.
* Added: MOXodusPersistenceProvider.load(..,boolean includeVolatile) and .save(..,boolean includeVolatile)
  to be able to generally save and restore volatile objects too (not used by default).
* Changed: slf4j-api and -nop version 2.0.0-alpha7 to avoid warning logs about missing static logger binding.
  Xodus log output can be still activated through its ServiceLoader mechanism though. That is why
  version 2.x is used instead 1.7.x as required by Xodus 2.0.1.
* Improved: MOXodusPersistence.runSynchronization now explicitly closes any opened cursor (Store.openCursor()).

[2021-12-31] v3.5.5 (Requires SNMP4J-Agent v3.5.5 or later)

* Updated: Dependency to SNMP4J-Agent (now 3.5.5), to add the following improvements.
* Improved [AS-28]: Added getter and setter for modifying AgentConfigManager configuration factory and
  persistence provider.

[2021-12-15] v3.5.4 (Requires SNMP4J-Agent v3.5.4 or later)

* Improved [AS-26]: Added unit test for use case of resetting configuration to properties.
* Fixed: Error handling when config directory (Xodus DB files) not exists, but agent tries to read
  them (no exception is thrown anymore, but warn log is written).

[2021-12-04] v3.5.3 (Requires SNMP4J-Agent v3.5.3 or later)

* Fixed [AS-24]: Made sure that authPassword and privPassword hidden columns are null if user is localised.
  This fixes a regression caused by SFJ-222 that generated wrong keys if users were initially loaded
  from properties file and localisation key was given.
* Improved: Suppressed redundant usmUserChange event processing on USM entries created by UsmMIB itself.
* Changed: Re-enabled secret logging in SampleAgent by default.

[2021-11-23] v3.5.2 (Requires SNMP4J-Agent v3.5.2 or later)

* Updated dependency to SNMP4J-Agent 3.5.2 (with SNMP4J 3.6.2).

[2021-11-16] v3.5.1 (Requires SNMP4J-Agent v3.5.1 or later)

* Fixed [AS-23]: USM persistent data using SNMP4J-Agent-DB was not correctly restored for authNoPriv and
  authPriv users that have been changed using UsmKeyChange method via SNMP (authPriv was only affected if
  only a single key (auth or priv) was changed. Only DefaultMOTable instances with hidden columns were
  affected by this bug.
* Fixed [AS-22]: Provided jar-with-dependencies for easier JAR usage for non-maven builds.
* Fixed [SFJ-244]: Removed secret information (keys and passwords) from any log output. To reactivate
  output use SNMP4JSettings.setSecretLoggingEnabled(true).
* Added: Unit test testing save and restore cycles for primary and hidden columns.
* Improved: JavaDoc.

[2021-05-27] v3.5.0 (Requires SNMP4J-Agent v3.5.0 or later)

* Added SFJ-201: Allow ordering of ManagedObjects for store/restore by priorities using
  SNMP4J-CONFIG-MIB snmp4jCfgStorageSeqTable.
* Updated dependency to SNMP4J-Agent 3.5.0 (with SNMP4J 3.5.1).

[2020-11-14] v3.3.6 (Requires SNMP4J-Agent v3.3.6 or later)

* Updated dependency to SNMP4J-Agent 3.3.6 (with SNMP4J 3.4.4).

[2020-09-21] v3.3.5 (Requires SNMP4J-Agent v3.3.5 or later)

* Updated dependency to SNMP4J-Agent 3.3.5 (with SNMP4J 3.4.3).

[2020-07-16] v3.3.4 (Requires SNMP4J-Agent v3.3.4 or later)

* Updated dependency to SNMP4J-Agent 3.3.4.
* Updated Xodus dependency to 1.3.232.

[2020-03-12] v3.3.2 (Requires SNMP4J-Agent v3.3.2 or later)

* Updated dependency to SNMP4J-Agent 3.3.2.

[2020-03-12] v3.3.1 (Requires SNMP4J-Agent v3.3.1 or later)

* Updated dependency to SNMP4J-Agent 3.3.1.

[2020-03-05] v3.3.0 (Requires SNMP4J-Agent v3.3.0 or later)

* Updated Xodus dependency to 1.3.124, SNMP4J-Agent to 3.3.0, and SNMP4J to 3.4.0.
* Fixed: TLS configuration in sample agent.

[2019-04-18] v3.2.0 (Requires SNMP4J-Agent v3.2.0 or later)

* Fixed [SFJ-200]: SNMP4J-Agent-DB persistently stores rows with StorageType volatile.

[2019-04-01] v3.1.1 (Requires SNMP4J-Agent v3.1.0 or later)

* Fixed SFJ-198: When changes to a MOScalar are saved based on MOChangeEvent, the value is redundantly saved
  and not always the correct value is restored after restart.

[2019-03-13] v3.1.0 (Requires SNMP4J-Agent v3.1.0 or later)

* Updated: Adapted 3.1 SNMP4J and SNMP4J-Agent changes.

[2018-10-15] v3.0.3 (Requires SNMP4J-Agent v3.0.3 or later)

* Updated: Dependency to SNMP4J-Agent 3.0.3 and SNMP4J 3.0.3
* Fixed [SFJ-185]: SampleAgent of snmp4j-agent-db does not specify its DTLS server role which breaks DTLS handshakes.
* Added: TLS fingerprint of SNMP4J DTLS test certificate for integration testing in SNMP-TLS-TM-MIB.

[2018-10-07] v3.0.2 (Requires SNMP4J-Agent v3.0.2 or later)

* Updated: Dependency to SNMP4J-Agent 3.0.2
* Fixed: Possible NullPointerException while storing MIB data if a new context has been added during agent
  runtime.
* Fixed: Added missing VersionInfo class.
* Removed: Obsolete dependencies in SampleAgent to EngineBootsCounterFile.
* Added: MOXodusPersistence.isContextLoadable(OctetString) to check if there already exists persistent data
  for a context.

[2018-09-24] v3.0.0 (Requires SNMP4J-Agent v3.0.0 or later)

Initial version. Version numbers of this package are coupled to SNMP4J-Agent version numbers and are therefore
not continuously increasing. If there is no version of SNMP4J-Agent-DB for a corresponding SNMP4J-Agent version, then
the previous SNMP4J-Agent-DB version will although work.
