feat: Renaming and unifying of config parameter names - #2720
Merged
Conversation
feat: Introduction of @secret annotation, that causes config parameters with these markers be output redacted. feat: Made all drivers log unknown config options.
chrisdutz
marked this pull request as draft
August 27, 2026 22:10
Contributor
There was a problem hiding this comment.
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
connectionUrlunredacted 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, andconnectionContainer.String()embedsc.connectionStringverbatim. 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.
chrisdutz
marked this pull request as ready for review
August 28, 2026 09:15
Contributor
There was a problem hiding this comment.
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
…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
approved these changes
Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
feat: Introduction of @secret annotation, that causes config parameters with these markers be output redacted.
feat: Made all drivers log unknown config options.