Skip to content

feat: Renaming and unifying of config parameter names - #2720

Merged
sruehl merged 5 commits into
developfrom
feat/config-param-naming
Aug 28, 2026
Merged

feat: Renaming and unifying of config parameter names#2720
sruehl merged 5 commits into
developfrom
feat/config-param-naming

Conversation

@chrisdutz

Copy link
Copy Markdown
Contributor

feat: Introduction of @secret annotation, that causes config parameters with these markers be output redacted.

feat: Made all drivers log unknown config options.

feat: Introduction of @secret annotation, that causes config parameters with these markers be output redacted.

feat: Made all drivers log unknown config options.
@chrisdutz
chrisdutz marked this pull request as draft August 27, 2026 22:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Unifies PLC4J and PLC4Go configuration names, introduces secret-aware redaction, and reports ignored connection options.

Changes:

  • Standardizes timeout, TLS, and transport parameter names.
  • Adds secret metadata and connection-string redaction.
  • Adds PLC4Go unknown-option reporting and parity tests.

Reviewed changes

Copilot reviewed 133 out of 136 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
website/asciidoc/modules/users/partials/umas.adoc Updates UMAS parameter names.
website/asciidoc/modules/users/partials/slmp.adoc Updates SLMP parameter names.
website/asciidoc/modules/users/partials/s7.adoc Updates S7 and COTP names.
website/asciidoc/modules/users/partials/profinet.adoc Renames raw-socket timeout.
website/asciidoc/modules/users/partials/plc4x.adoc Updates PLC4X and TLS names.
website/asciidoc/modules/users/partials/open-protocol.adoc Updates timeout names.
website/asciidoc/modules/users/partials/opcua.adoc Documents OPC UA renames.
website/asciidoc/modules/users/partials/modbus-tcp.adoc Updates Modbus TCP transport names.
website/asciidoc/modules/users/partials/modbus-rtu.adoc Updates Modbus RTU transport names.
website/asciidoc/modules/users/partials/modbus-ascii.adoc Updates Modbus ASCII transport names.
website/asciidoc/modules/users/partials/logix.adoc Updates Logix timeout names.
website/asciidoc/modules/users/partials/knxnet-ip.adoc Updates KNX timeout names.
website/asciidoc/modules/users/partials/iec-60870-5-104.adoc Updates IEC timeout names.
website/asciidoc/modules/users/partials/genericcan.adoc Updates CAN timeout name.
website/asciidoc/modules/users/partials/firmata.adoc Updates Firmata transport names.
website/asciidoc/modules/users/partials/eip.adoc Updates EIP timeout names.
website/asciidoc/modules/users/partials/canopen.adoc Updates CANopen timeout name.
website/asciidoc/modules/users/partials/c-bus.adoc Updates TCP parameter names.
website/asciidoc/modules/users/partials/bacnet-ip.adoc Updates UDP timeout name.
website/asciidoc/modules/users/partials/ads.adoc Standardizes ADS timeout name.
website/asciidoc/modules/users/partials/ab-eth.adoc Updates AB-Ethernet names.
website/asciidoc/modules/users/pages/tools/plc4x-server.adoc Updates TLS examples.
website/asciidoc/modules/users/pages/tools/event-pump.adoc Updates timeout examples.
website/asciidoc/modules/users/pages/protocols/opcua.adoc Updates OPC UA security guidance.
website/asciidoc/modules/users/pages/getting-started/plc4go.adoc Corrects Modbus unit option.
RELEASE_NOTES Documents incompatible configuration changes.
protocols/modbus/src/test/resources/protocols/modbus/tcp/ManualFactoryModbusTCPDriverTest-testsuite.xml Updates Modbus fixture.
protocols/canopen/src/test/resources/protocols/canopen/CANOpenDriverSDOIT.xml Updates CANopen SDO fixture.
protocols/canopen/src/test/resources/protocols/canopen/CANOpenDriverNMTIT.xml Updates CANopen NMT fixture.
plc4j/transports/udp/src/main/java/org/apache/plc4x/java/transport/udp/config/UdpTransportConfiguration.java Renames UDP timeout.
plc4j/transports/tls/src/test/java/org/apache/plc4x/java/transport/tls/TlsTransportInstanceTest.java Updates TLS test wording.
plc4j/transports/tls/src/main/java/org/apache/plc4x/java/transport/tls/TlsTransportInstance.java Updates TLS logs and errors.
plc4j/transports/tls/src/main/java/org/apache/plc4x/java/transport/tls/TlsTransport.java Updates TLS diagnostic naming.
plc4j/transports/tls/src/main/java/org/apache/plc4x/java/transport/tls/PskTlsTransportInstance.java Updates PSK audit naming.
plc4j/transports/tls/src/main/java/org/apache/plc4x/java/transport/tls/config/TlsTransportConfiguration.java Renames options and marks passwords.
plc4j/transports/tls/src/main/java/org/apache/plc4x/java/transport/tls/config/PskTlsTransportConfiguration.java Marks PSK keys secret.
plc4j/transports/tcp/src/main/java/org/apache/plc4x/java/transport/tcp/config/TcpTransportConfiguration.java Standardizes TCP names.
plc4j/transports/serial/src/main/java/org/apache/plc4x/java/transport/serial/config/SerialTransportConfiguration.java Standardizes serial timeouts.
plc4j/transports/raw-socket/src/main/java/org/apache/plc4x/java/transport/rawsocket/config/RawSocketTransportConfiguration.java Renames raw-socket timeout.
plc4j/transports/pcap-replay/src/main/java/org/apache/plc4x/java/transport/pcapreplay/config/PcapReplayTransportConfiguration.java Renames replay timeout.
plc4j/transports/cotp/src/main/java/org/apache/plc4x/java/transport/cotp/config/CotpTransportConfiguration.java Simplifies COTP names.
plc4j/transports/can-socketcan/src/main/java/org/apache/plc4x/java/transport/can/socketcan/config/SocketCanTransportConfiguration.java Renames CAN timeout.
plc4j/tools/event-pump/src/main/java/org/apache/plc4x/java/tools/eventpump/TagBatch.java Updates timeout examples.
plc4j/tools/event-pump/src/main/java/org/apache/plc4x/java/tools/eventpump/config/BatchConfiguration.java Updates configuration documentation.
plc4j/spi/drivers/src/test/java/org/apache/plc4x/java/spi/drivers/DriverBaseUnknownParameterTest.java Updates known-name tests.
plc4j/spi/drivers/src/test/java/org/apache/plc4x/java/spi/drivers/DriverBaseTest.java Relocates redaction tests.
plc4j/spi/drivers/src/test/java/org/apache/plc4x/java/spi/drivers/ConnectionStringRedactorTest.java Tests annotation-driven redaction.
plc4j/spi/drivers/src/main/java/org/apache/plc4x/java/spi/drivers/ConnectionStringRedactor.java Implements Java URL redaction.
plc4j/spi/config/src/test/java/org/apache/plc4x/java/spi/config/SecretParametersTest.java Tests secret reflection.
plc4j/spi/config/src/main/java/org/apache/plc4x/java/spi/config/SecretParameters.java Discovers secret fields and names.
plc4j/spi/config/src/main/java/org/apache/plc4x/java/spi/config/annotations/Secret.java Introduces secret annotation.
plc4j/drivers/umas/src/main/java/org/apache/plc4x/java/umas/configuration/UmasConfiguration.java Renames UMAS timeout.
plc4j/drivers/slmp/src/test/java/org/apache/plc4x/java/slmp/SlmpConnectionFailurePathTest.java Updates SLMP assertion text.
plc4j/drivers/slmp/src/test/java/org/apache/plc4x/java/slmp/config/SlmpConfigurationTest.java Tests renamed SLMP timeout.
plc4j/drivers/slmp/src/main/java/org/apache/plc4x/java/slmp/SlmpConnection.java Updates validation error.
plc4j/drivers/slmp/src/main/java/org/apache/plc4x/java/slmp/config/SlmpConfiguration.java Renames and documents options.
plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/manual/ManualWallS71500HFailover.java Updates HA example URL.
plc4j/drivers/s7/src/test/java/org/apache/plc4x/java/s7/manual/ManualS7Inventory.java Updates inventory timeout.
plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/S7HCotpConnection.java Updates HA documentation.
plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/configuration/S7Configuration.java Renames S7 durations.
plc4j/drivers/plc4x/src/main/java/org/apache/plc4x/java/plc4x/config/Plc4xConfiguration.java Renames timeout and marks password.
plc4j/drivers/open-protocol/src/main/java/org/apache/plc4x/java/openprotocol/config/OpenProtocolConfiguration.java Renames request timeout.
plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java Updates OPC UA TLS options.
plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/context/ChannelLifetimeTest.java Updates lifetime tests.
plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/security/RejectingCertificateVerifier.java Updates security guidance.
plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/context/SecureChannel.java Updates lifetime diagnostics.
plc4j/drivers/opcua/src/main/java/org/apache/plc4x/java/opcua/context/OpcuaDriverContext.java Reverses verification option semantics.
plc4j/drivers/modbus/src/test/java/org/apache/plc4x/java/modbus/ModbusDockerIT.java Updates TLS integration URLs.
plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/tcp/config/ModbusTcpConfiguration.java Renames TCP request timeout.
plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/rtu/config/ModbusRtuConfiguration.java Renames RTU request timeout.
plc4j/drivers/modbus/src/main/java/org/apache/plc4x/java/modbus/ascii/config/ModbusAsciiConfiguration.java Renames ASCII request timeout.
plc4j/drivers/knxnetip/src/main/java/org/apache/plc4x/java/knxnetip/configuration/KnxNetIpConfiguration.java Marks password and renames timeout.
plc4j/drivers/iec-60870/src/main/java/org/apache/plc4x/java/iec608705104/configuration/Iec608705014Configuration.java Renames IEC timeout.
plc4j/drivers/firmata/src/test/java/org/apache/plc4x/java/firmata/FirmataVirtualAvrIT.java Updates Firmata URL.
plc4j/drivers/firmata/src/main/java/org/apache/plc4x/java/firmata/configuration/FirmataConfiguration.java Renames Firmata timeout.
plc4j/drivers/eip/src/main/java/org/apache/plc4x/java/eip/base/configuration/EIPConfiguration.java Renames EIP timeout.
plc4j/drivers/ctrlx/src/main/java/org/apache/plc4x/java/ctrlx/readwrite/CtrlXDriver.java Adds unknown-option reporting.
plc4j/drivers/ctrlx/src/main/java/org/apache/plc4x/java/ctrlx/readwrite/configuration/CtrlXConfiguration.java Marks trust-store password.
plc4j/drivers/canopen/src/main/java/org/apache/plc4x/java/canopen/configuration/CANOpenConfiguration.java Renames CANopen timeout.
plc4j/drivers/can/src/main/java/org/apache/plc4x/java/can/generic/configuration/GenericCANConfiguration.java Renames generic CAN timeout.
plc4j/drivers/ads/src/main/java/org/apache/plc4x/java/ads/configuration/AdsConfiguration.java Standardizes ADS timeout.
plc4j/drivers/ab-eth/src/main/java/org/apache/plc4x/java/abeth/configuration/AbEthConfiguration.java Renames AB-Ethernet timeout.
plc4go/tools/plc4xGenerator/main.go Generates redacted secret renderings.
plc4go/tests/configparity/parameter_names_test.go Adds cross-binding parity tests.
plc4go/spi/transports/tcp/TransportInstanceDeadline_test.go Updates timeout terminology.
plc4go/spi/transports/tcp/Transport.go Renames TCP connect timeout.
plc4go/spi/transports/tcp/Transport_test.go Updates TCP option tests.
plc4go/spi/transports/serial/TransportInstance_test.go Updates serial integration options.
plc4go/spi/transports/serial/TransportInstance_pty_test.go Updates PTY timeout options.
plc4go/spi/transports/serial/options.go Renames serial timeout options.
plc4go/spi/transports/serial/options_test.go Updates serial parser tests.
plc4go/spi/options/Redaction.go Adds Go connection-string redaction.
plc4go/spi/options/Redaction_test.go Tests Go redaction.
plc4go/spi/options/OptionReader.go Centralizes option consumption/reporting.
plc4go/spi/options/OptionReader_test.go Tests unknown-option handling.
plc4go/pom.xml Adds protocol test artifacts.
plc4go/pkg/api/PlcDriverManager.go Redacts manager logging.
plc4go/pkg/api/cache/PlcConnectionCache.go Redacts cache logging.
plc4go/pkg/api/cache/connectionContainer.go Redacts container logging.
plc4go/internal/umas/Driver_test.go Updates UMAS driver test.
plc4go/internal/umas/Configuration.go Renames options and reports unknowns.
plc4go/internal/umas/Configuration_test.go Updates UMAS parser tests.
plc4go/internal/slmp/Configuration.go Renames options and reports unknowns.
plc4go/internal/slmp/Configuration_test.go Updates SLMP parser tests.
plc4go/internal/s7/Configuration.go Adds S7 unknown-option reporting.
plc4go/internal/opcua/SecureChannel.go Marks channel password secret.
plc4go/internal/opcua/SecureChannel_plc4xgen.go Redacts generated channel output.
plc4go/internal/opcua/Configuration.go Marks secrets and warns on unknowns.
plc4go/internal/opcua/Configuration_test.go Tests warnings and secret output.
plc4go/internal/opcua/Configuration_plc4xgen.go Redacts generated configuration output.
plc4go/internal/modbus/Configuration.go Unifies Modbus names and warnings.
plc4go/internal/modbus/Configuration_test.go Updates Modbus parser tests.
plc4go/internal/knxnetip/Writer_test.go Updates KNX timeout tests.
plc4go/internal/knxnetip/MessageCodec_test.go Updates KNX terminology.
plc4go/internal/knxnetip/ConnectionHelper.go Renames KNX timeout lookup.
plc4go/internal/knxnetip/ConnectionDriverSpecificOperations.go Updates KNX documentation.
plc4go/internal/knxnetip/Connection.go Updates timeout documentation.
plc4go/internal/knxnetip/Connection_test.go Updates KNX timeout tests.
plc4go/internal/iec608705104/Driver_test.go Updates IEC driver test.
plc4go/internal/iec608705104/Configuration.go Renames options and reports unknowns.
plc4go/internal/iec608705104/Configuration_test.go Updates IEC parser tests.
plc4go/internal/firmata/Driver_test.go Updates Firmata driver test.
plc4go/internal/firmata/Configuration.go Renames options and reports unknowns.
plc4go/internal/firmata/Configuration_test.go Updates Firmata parser tests.
plc4go/internal/eip/Configuration.go Centralizes EIP option reading.
plc4go/internal/cbus/Configuration.go Centralizes C-Bus option reading.
plc4go/internal/cbus/Configuration_test.go Removes obsolete helper test.
plc4go/internal/bacnetip/Configuration.go Centralizes BACnet option reading.
plc4go/internal/bacnetip/Configuration_test.go Removes obsolete helper test.
plc4go/internal/abeth/Configuration.go Renames options and reports unknowns.
plc4go/internal/abeth/Configuration_test.go Updates AB-Ethernet parser tests.
plc4go/assets/testing/protocols/modbus/tcp/ManualFactoryModbusTCPDriverTest-testsuite.xml Updates generated Go test fixture.
.gitignore Ignores locally built Go tools.
Files not reviewed (2)
  • plc4go/internal/opcua/Configuration_plc4xgen.go: Generated file
  • plc4go/internal/opcua/SecureChannel_plc4xgen.go: Generated file
Suppressed comments (2)

plc4go/pkg/api/PlcDriverManager.go:194

  • The initial log is redacted, but this function logs connectionUrl unredacted at lines 201 and 213. url.URL.String() includes both RawQuery and Userinfo, so the same password or PSK is still emitted immediately afterward. Redact those renderings too.
    plc4go/pkg/api/cache/PlcConnectionCache.go:215
  • This event still leaks the raw connection string through conn: plcConnectionLease.String() renders its container, and connectionContainer.String() embeds c.connectionString verbatim. The newly redacted field therefore does not protect successful cache acquisitions; omit this Stringer or make that rendering redact first.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread plc4go/pkg/api/PlcDriverManager.go Outdated
Comment thread plc4go/pkg/api/cache/PlcConnectionCache.go Outdated
Comment thread plc4go/spi/options/Redaction.go Outdated
Comment thread plc4go/spi/options/OptionReader.go Outdated
Comment thread plc4go/tests/configparity/parameter_names_test.go Outdated
Comment thread RELEASE_NOTES Outdated
@chrisdutz
chrisdutz marked this pull request as ready for review August 28, 2026 09:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 142 out of 145 changed files in this pull request and generated 14 comments.

Files not reviewed (2)
  • plc4go/internal/opcua/Configuration_plc4xgen.go: Generated file
  • plc4go/internal/opcua/SecureChannel_plc4xgen.go: Generated file

Comment thread plc4go/pkg/api/PlcDriverManager.go
Comment thread plc4go/pkg/api/cache/PlcConnectionCache.go
Comment thread plc4go/spi/options/Redaction.go Outdated
Comment thread plc4go/internal/opcua/Configuration.go Outdated
Comment thread plc4go/internal/opcua/Configuration.go
Comment thread plc4go/spi/transports/tcp/Transport.go Outdated
Comment thread plc4go/spi/transports/serial/options.go Outdated
Comment thread plc4go/internal/bacnetip/Configuration.go Outdated
chrisdutz and others added 2 commits August 28, 2026 14:06
…t does not read

The unknown-option report excused every linked transport's registered
names on every connection, so "serial.baud-rate" on a TCP URL was
silently ignored - the very failure the report exists to surface.

Narrowing the exemption does not need the transport instance, only its
code, and that is known before any configuration is parsed: it is the
scheme of the transport URL. The driver manager now stamps it into the
options as "~active-transport". ReportUnknown consumes the marker,
excuses the active transport's own options, keeps excusing unprefixed
injected names (defaultTcpPort), and calls out another transport's
option as misdirected, naming both the owning and the active transport.
Options parsed outside a manager connect - discovery among them - carry
no marker and keep the wide exemption.

The marker is matched without regard to case because the c-bus driver
title-cases the shared option map in place, which duplicates the marker
as "~Active-Transport". The OPC UA driver's reflection-based reporter
skips it explicitly.
@sruehl
sruehl merged commit 5793ca7 into develop Aug 28, 2026
28 of 31 checks passed
@sruehl
sruehl deleted the feat/config-param-naming branch August 28, 2026 14:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants