-
Notifications
You must be signed in to change notification settings - Fork 1k
Merge master into 1.5.378 #3499
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: release/1.5.378
Are you sure you want to change the base?
Conversation
…#3424) * Initial plan * Add connection stability test with 5-minute token renewal Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com> * Fix code style issues in ConnectionStabilityTest Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com> * Remove unused dictionaries to reduce memory overhead Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com> * Extract magic numbers to named constants for better maintainability Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com> * Add explicit permissions to workflow for security Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com> * Change non-CI test duration to 30 minutes for 6 token renewals Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com> * Set local test to 1 min with 10-second token renewal for 6 renewals Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com> * Fix SecurityTokenLifeTime to be applied for Server & Client before Startup --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com> Co-authored-by: Roman Ettlinger <romanett98@gmail.com>
--- updated-dependencies: - dependency-name: Roslynator.Analyzers dependency-version: 4.15.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
--- updated-dependencies: - dependency-name: NUnit3TestAdapter dependency-version: 6.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
--- updated-dependencies: - dependency-name: NUnit.Console dependency-version: 3.21.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Marc Schier <marcschier@users.noreply.github.com>
--- updated-dependencies: - dependency-name: System.Text.Json dependency-version: 10.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
--- updated-dependencies: - dependency-name: System.Formats.Asn1 dependency-version: 10.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
--- updated-dependencies: - dependency-name: System.Collections.Immutable dependency-version: 10.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Marc Schier <marcschier@users.noreply.github.com>
--- updated-dependencies: - dependency-name: Roslynator.Formatting.Analyzers dependency-version: 4.15.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…te operations (#3411) * Initial plan * Add trust list file size validation with configurable limits Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Fix potential integer overflow in trust list size validation Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Fix integer overflow in client trust list read validation Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Add comprehensive tests for trust list size validation Add TrustListValidationTest with tests for: - Normal-sized trust lists (verify basic functionality) - Trust lists exceeding 16MB limit (verify BadEncodingLimitsExceeded error) - Trust lists just under limit (~15MB) (verify boundary condition) Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Make limits configurable on client side * fix tests --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> Co-authored-by: Roman Ettlinger <romanett98@gmail.com>
--- updated-dependencies: - dependency-name: NUnit.Console dependency-version: 3.22.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* remove all usages of SoftwareCertificates - Client - Server As per spec they are not relevant for security. If an SDK User wants to use the SoftwareCertificates ActivateSession can be overriden * remove from SessionClientBatchTests
Refactor to make OPC UA server subscription and monitored item management fully asynchronous, improving scalability and responsiveness. All key methods in ISubscription, ISubscriptionManager, and related classes are now async, with synchronous counterparts removed.
- Use the subscriptions parameter instead of this.Subscriptions - Add test to verify only specified subscriptions are saved
- Fix bug in MonitoredItem.Publish (for loop was never executed) - MonitoredItem.CacheQueueSize property was not serialized - Add unit tests for MonitoredItems
…Dependency Injection (#3448) * add server interfaces * Add IConfigurationNodeManager, IDiagnosticsNodeManager, IMasterNodeManager, IStandardServer, IApplicationInstance interfaces to Server. Add IMainNodeManagerFactory to create Diagnostics & MainNodeManager * Use IApplicationInstance interface where appropriate * fix review feedback
…n shutdown (#3456) * Initial plan * Fix ObjectDisposedException in SubscriptionManager background tasks Add ObjectDisposedException handling in PublishSubscriptionsAsync and ConditionRefreshWorkerAsync to gracefully handle shutdown race condition where semaphore/events are disposed while background tasks are still running. Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Update log messages to differentiate normal and disposed shutdown paths Added clarification in log messages to indicate when tasks exit due to ObjectDisposedException during shutdown, making it easier to distinguish from normal shutdown in logs. Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
…onfig, not loading OperationLimits due to wrong order. (#3454) * fix ServerSourceTimestamp * fix OperationLimits not being set for ReferenceServer
* Initial plan * Handle BadRequestTimeout gracefully in publish error handling Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
* Initial plan * Suppress BadServerHalted/BadNoCommunication keepalive errors in test logger Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Add null-conditional operators for safer null handling Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
--- updated-dependencies: - dependency-name: Microsoft.AspNetCore.Http dependency-version: 2.3.9 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
--- updated-dependencies: - dependency-name: NUnit3TestAdapter dependency-version: 6.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
… to 2.3.9 (#3466) --- updated-dependencies: - dependency-name: Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets dependency-version: 2.3.9 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Allow status code variant creation from uint * Initial plan * Add comprehensive tests for StatusCode variant creation from uint Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com> * Remove redundant assertions in StatusCode variant tests Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>
* Fix session reconnect handler * Update Libraries/Opc.Ua.Client/Session/SessionReconnectHandler.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Set correct target framework * Split long and short haul tests but maintain most of the current code
…VariableState (#3451) * Initial plan * Add OnReadValue callback to update timestamps on variable reads Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Add test to verify timestamp updates on variable reads Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * fix timestamp for scalar values set loglevel in session publish when no subscriptions ignore more keepalive errors in Client Fixture * Fix timestamp updates for all variables (scalars and arrays) Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * create a proper fix * Add Order parameter to test to check the timestamp before an explicit write was done --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> Co-authored-by: Roman Ettlinger <romanett98@gmail.com>
…iguration details (#3481) * Initial plan * Document certificate validation workflow in Certificates.md - Add comprehensive Certificate Validation section - Document validation workflow and steps - List all configuration settings with defaults and examples - Enumerate suppressible validation errors - Provide examples for registering validation callbacks - Show how to implement custom certificate validators - Include best practices for certificate validation Addresses the issue by documenting the CertificateValidator.cs implementation including config settings and suppressible errors. Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Fix trailing whitespace in Certificates.md per .editorconfig Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Add detailed chain building technical documentation - Add comprehensive Chain Building Process section with diagram - Include ASCII flowchart showing complete validation flow - Add pseudocode for all chain building steps: - Initialization and loop structure - Three-tier issuer search (Trusted → Issuer → Untrusted) - Issuer matching algorithm with criteria - CRL checking logic with revocation handling - X509Chain integration and validation - Document search priority and trust anchoring behavior - Add key behaviors section explaining design decisions - Link from validation workflow to detailed section Addresses feedback requesting more technical detail, diagram, and pseudocode visualization of the chain building process. Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Add certificate list configuration documentation - Add Certificate List Configuration section (~190 lines) - Document configuration sources (XML config and runtime API) - Provide XML configuration structure with examples - Explain certificate store types (Directory and X509Store) - Detail certificate list population process: - Initialization via ApplicationConfiguration - Internal update process - Certificate search behavior and priority - Add runtime certificate management examples - Document certificate store management (file operations) - Explain dual-mode operation (explicit list + store) - Include configuration best practices - Link from Trust Check step to configuration section Addresses feedback requesting details on where certificate lists are configured and populated. Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
…iguration.EnvironmentVariables (#3487) Bumps Microsoft.Extensions.Configuration from 10.0.1 to 10.0.2 Bumps Microsoft.Extensions.Configuration.EnvironmentVariables from 10.0.1 to 10.0.2 --- updated-dependencies: - dependency-name: Microsoft.Extensions.Configuration dependency-version: 10.0.2 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: Microsoft.Extensions.Configuration.EnvironmentVariables dependency-version: 10.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ver.Kestrel.Core (#3485) Bumps Microsoft.AspNetCore.Server.Kestrel from 2.3.0 to 2.3.9 Bumps Microsoft.AspNetCore.Server.Kestrel.Core from 2.3.6 to 2.3.8 --- updated-dependencies: - dependency-name: Microsoft.AspNetCore.Server.Kestrel dependency-version: 2.3.9 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: Microsoft.AspNetCore.Server.Kestrel.Core dependency-version: 2.3.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
--- updated-dependencies: - dependency-name: System.Collections.Immutable dependency-version: 10.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump Microsoft.Extensions.Logging from 10.0.1 to 10.0.2 --- updated-dependencies: - dependency-name: Microsoft.Extensions.Logging dependency-version: 10.0.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * Update --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Marc Schier <marcschier@hotmail.com>
* Initial plan * Add async callback support to TrustList implementation Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Fix redundant security check in OpenAsync Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Fix audit logging parameters in RemoveCertificateAsync Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Refactor TrustList to use async core implementation with sync wrappers Based on feedback, changed approach: - Make internal implementation async (OpenCoreAsync, etc.) - Sync methods now wrap async using .AsTask().GetAwaiter().GetResult() - Both OnCall and OnCallAsync handlers registered - Eliminates .GetAwaiter().GetResult() in async paths Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Add ConfigureAwait(false) to sync wrapper methods Prevents potential deadlocks by adding ConfigureAwait(false) before GetAwaiter().GetResult() in all sync wrapper methods. Also made the pattern consistent across all methods. Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> * Add CancellationToken support to helper methods Updated UpdateStoreCertificatesAsync and UpdateStoreCrlsAsync to properly propagate CancellationToken through all async operations. Ensures consistent async patterns throughout the implementation. Co-authored-by: romanett <7413710+romanett@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
* Add per-namespace NodeSet2 export and CLI option Implemented ExportNodesToNodeSet2PerNamespaceAsync in ClientSamples to export nodes into separate NodeSet2 XML files per namespace, excluding OPC Foundation companion specs. Added a helper for safe filename generation. Introduced a new -e/--export command-line option in Program.cs to trigger this export after node fetching. Also added System.Xml.Linq import for potential XML handling. * Add NodeSetExportOptions for flexible NodeSet2 export Introduce NodeSetExportOptions to control which attributes and values are exported to NodeSet2 XML, with Default, Minimal, and Complete presets. Overload ExportNodesToNodeSet2 to accept these options and update internal logic accordingly. Update CreateNodeState to honor export preferences. Add comprehensive unit tests for all export modes and ensure backward compatibility. Update ClientSamples to use Complete export mode. * Refactor NodeSet export options for minimal default output - Change ExportValues default to false; values only for Complete option - Remove ExportUserAccessLevel and ExportMethodDeclarationId options - Always export MethodDeclarationId; export UserAccessLevel only if different from AccessLevel - Remove Minimal option; Default now produces minimal schema output - Update export logic and tests to reflect new option semantics - Rename and revise unit test to verify new default and complete behaviors * Remove unused BitVector32 import * Add ExportUserContext option to NodeSet2 export Introduce ExportUserContext to NodeSetExportOptions, allowing selective export of user context attributes (UserAccessLevel, UserExecutable, UserWriteMask, UserRolePermissions) in NodeSet2 files. Update export logic to honor this option and add unit tests to verify correct behavior. This enhances flexibility and control over exported user-specific metadata. --------- Co-authored-by: Marc Schier <marcschier@users.noreply.github.com>
* Initial plan
* Change [Conditional("DEBUG")] to [Conditional("CHECKED")] in DebugCheck methods
Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>
… compatibility for 1.5.378 (#3497) * Point to concrete classes instead of interfaces * cleanup
|
|
| /// Called when a client sets a subscription as durable. | ||
| /// </summary> | ||
| public ServiceResult OnSetSubscriptionDurable( | ||
| protected ServiceResult OnSetSubscriptionDurable( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Breaking change (same as all previous public and now protected)
| /// The application instance used to build the configuration. | ||
| /// </summary> | ||
| public ApplicationInstance ApplicationInstance { get; } | ||
| public IApplicationInstance ApplicationInstance { get; } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sort of breaking (forces cast to ApplicationInstance class wherever previously it did not)
mrsuciu
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Still some minor breaking changes
Merge master into 1.5.378