mirror of
https://github.com/OPCFoundation/UA-.NETStandard.git
synced 2026-10-18 22:55:08 +08:00
7d5f7a7076
# Description Extract shared stack, regression-test, sample and documentation changes from draft #4462 into a separate prerequisite PR. The PR now contains **19 shared paths**: the original eighteen extracted files plus a focused user-management regression file added during review. It does not include UaLens source, desktop dependencies, solution registrations or application documentation. ## Changes - Correct the V2 ConditionRefresh target and response validation. Bound disposal-time remote subscription deletion with an independent five-second TimeProvider-backed cancellation deadline, allowing local cleanup after a server outage. This is a per-delete limit, not a global application shutdown deadline. - Preserve configured PubSub writer message/header settings, canonical numeric JSON publisher matching, and flattened DataValue quality/timestamps. - Add asynchronous user-management client wrappers over the generated standard proxy, and set file/directory method declaration IDs needed by typed client workflows. - Enable AI client NativeAOT compatibility and add focused AI client regressions. - Enable the ConsoleReferenceServer file-system node manager and configure 1 ms publishing/sampling demonstrations. These sample defaults do not promise hard real-time delivery. - Document the subscription and PubSub behavior. Make the new subscription/PubSub regression helpers portable to .NET Framework without weakening their assertions. ## Review follow-up Commit `812297ce1` aligns both public `ListUsersAsync` signatures with `ValueTask<ArrayOf<UserManagementUser>>`. The implementation constructs its result directly from an owned snapshot array, without an intermediate list. Five focused cases pass on **net10.0 and net48**: `ListUsersReturnsArrayOfSnapshotsAsync` checks both interface and concrete entry points and preserves snapshot order, values and flags; `ListUsersReturnsEmptyArrayAsync` covers typed-empty and missing values; `ListUsersPreservesBadReadStatusAsync` checks the exact server failure status. All **eight single-line XML summaries** were converted to multi-line form. A complete scan of the fourteen changed C# files, including the new test, finds zero remaining single-line summaries. Scoped whitespace/line-ending verification passes. The sole UaLens caller was adapted separately in draft #4462 (`4caf69f33`). A fresh combined dependency-graph build and all **924 UaLens net10.0 tests** pass with both changes. Each of the three review threads received an action-taken reply and was resolved only after the fixes were pushed and verified. ## Split boundary The branch originated at `a45105375`; the subsequent master merge `f209f3804` incorporates upstream `4633aa7a3`. The original shared changes and review regression remain separate from the app. Draft #4462 retains `tools\Opc.Ua.Lens`, `tests\Opc.Ua.Lens.Tests`, and its six solution/package/documentation integration files. **Merge this prerequisite before the UaLens draft.** The draft consumes the extracted APIs. Published history is preserved; neither PR has been merged automatically. ## Initial split validation The following results describe the initial split validation at `fa7199afa`; current review-specific validation is recorded above. | Scope | net10.0 | net48 | |---|---:|---:| | Client subscription/file-system tests | 168 passed | 168 passed | | Server file-system/user-management tests | 244 passed | 244 passed | | PubSub writer/reader regressions | 34 passed | 34 passed | | ConsoleReferenceServer build | Passed | Passed | The corrected portable regression helpers were rechecked on net10.0 after the net48 fixes. The combined UaLens application also passed its 924-case net10.0 suite before extraction. **Focused NativeAOT: 16 passed, zero failed/skipped.** A session-local TUnit runner linked the exact committed `AIClientAotTests.cs` and referenced the real AI client project. It published without warnings or suppressions and executed as a genuine Windows native binary with no CLR header. The canonical `Opc.Ua.Aot.Tests` project was blocked by pre-existing CS8632 nullable-annotation errors in unchanged upstream `SchemaAotTests.cs` (lines 82, 127, 129 and 132). Its existing nullable configuration and all upstream tests were preserved; the focused result is not a claim that the full AOT test project builds. The net48 hosting selection uses a short NUnit WorkDirectory: the existing fixture builds long PKI paths that otherwise exceed the platform's path limit. The original full selection passed without test exclusions, source changes or increased timeouts. Scoped builds reported inherited warnings in unchanged upstream files: CA1508 in `ReferenceBuilderExtensions.cs`, CA1861 in `NodeSetImportIntegrationTests.cs`, and net48 CA1823 in `DefaultNodeIdFactory.cs`. They were not suppressed or folded into this split. Full-solution, coverage and CI/CodeQL gates remain unasserted. ## Related Issues - Tracking/design review: #4461. - Prerequisite extracted from draft #4462. ## Checklist - [ ] I have signed the [CLA](https://opcfoundation.org/license/cla/ContributorLicenseAgreementv1.0.pdf) and read the [CONTRIBUTING](https://github.com/OPCFoundation/UA-.NETStandard/blob/master/CONTRIBUTING.md) doc. - [ ] I have added tests that prove my fix is effective or that my feature works and increased code coverage. - [x] I have added all necessary documentation. - [ ] I have verified that my changes do not introduce (new) build or analyzer warnings. - [ ] I ran **all** tests locally using the **UA.slnx** solution against at least .net **framework** and .net **10**, and all passed. - [ ] I fixed **all** failing and flaky tests in the CI pipelines and **all** CodeQL warnings. - [x] I have addressed **all** PR feedback received. Tests and scoped results are documented above; measured coverage, inherited-warning qualification, CLA status, full-solution results and CI completion are not asserted by these checkboxes. --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
447 lines
22 KiB
XML
447 lines
22 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<ApplicationConfiguration
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xmlns:ua="http://opcfoundation.org/UA/2008/02/Types.xsd"
|
|
xmlns="http://opcfoundation.org/UA/SDK/Configuration.xsd"
|
|
>
|
|
<!-- xsi:schemaLocation="http://opcfoundation.org/UA/SDK/Configuration.xsd ./Configuration.xsd" -->
|
|
<ApplicationName>Quickstart Reference Server</ApplicationName>
|
|
<ApplicationUri>urn:localhost:UA:Quickstarts:ReferenceServer</ApplicationUri>
|
|
<ProductUri>uri:opcfoundation.org:Quickstarts:ReferenceServer</ProductUri>
|
|
<ApplicationType>Server_0</ApplicationType>
|
|
<SecurityConfiguration>
|
|
<!-- Which certificate types are supported -->
|
|
<ApplicationCertificates>
|
|
<CertificateIdentifier>
|
|
<StoreType>Directory</StoreType>
|
|
<StorePath>%LocalApplicationData%/OPC Foundation/pki/own</StorePath>
|
|
<SubjectName>CN=Quickstart Reference Server, C=US, S=Arizona, O=OPC Foundation, DC=localhost</SubjectName>
|
|
<CertificateTypeString>RsaSha256</CertificateTypeString>
|
|
</CertificateIdentifier>
|
|
<CertificateIdentifier>
|
|
<!-- <TypeId>NistP256</TypeId> -->
|
|
<StoreType>Directory</StoreType>
|
|
<StorePath>%LocalApplicationData%/OPC Foundation/pki/own</StorePath>
|
|
<SubjectName>CN=Quickstart Reference Server, C=US, S=Arizona, O=OPC Foundation, DC=localhost</SubjectName>
|
|
<CertificateTypeString>NistP256</CertificateTypeString>
|
|
</CertificateIdentifier>
|
|
<CertificateIdentifier>
|
|
<!-- <TypeId>NistP384</TypeId> -->
|
|
<StoreType>Directory</StoreType>
|
|
<StorePath>%LocalApplicationData%/OPC Foundation/pki/own</StorePath>
|
|
<SubjectName>CN=Quickstart Reference Server, C=US, S=Arizona, O=OPC Foundation, DC=localhost</SubjectName>
|
|
<CertificateTypeString>NistP384</CertificateTypeString>
|
|
</CertificateIdentifier>
|
|
<CertificateIdentifier>
|
|
<!-- <TypeId>BrainpoolP256r1</TypeId> -->
|
|
<StoreType>Directory</StoreType>
|
|
<StorePath>%LocalApplicationData%/OPC Foundation/pki/own</StorePath>
|
|
<SubjectName>CN=Quickstart Reference Server, C=US, S=Arizona, O=OPC Foundation, DC=localhost</SubjectName>
|
|
<CertificateTypeString>BrainpoolP256r1</CertificateTypeString>
|
|
</CertificateIdentifier>
|
|
<CertificateIdentifier>
|
|
<!-- <TypeId>BrainpoolP384r1</TypeId> -->
|
|
<StoreType>Directory</StoreType>
|
|
<StorePath>%LocalApplicationData%/OPC Foundation/pki/own</StorePath>
|
|
<SubjectName>CN=Quickstart Reference Server, C=US, S=Arizona, O=OPC Foundation, DC=localhost</SubjectName>
|
|
<CertificateTypeString>BrainpoolP384r1</CertificateTypeString>
|
|
</CertificateIdentifier>
|
|
</ApplicationCertificates>
|
|
<!-- Where the other application certificates are stored -->
|
|
<!-- Where the issuer certificate are stored (certificate authorities) -->
|
|
<TrustedIssuerCertificates>
|
|
<StoreType>Directory</StoreType>
|
|
<StorePath>%LocalApplicationData%/OPC Foundation/pki/issuer</StorePath>
|
|
</TrustedIssuerCertificates>
|
|
<!-- Where the trust list is stored -->
|
|
<TrustedPeerCertificates>
|
|
<StoreType>Directory</StoreType>
|
|
<StorePath>%LocalApplicationData%/OPC Foundation/pki/trusted</StorePath>
|
|
</TrustedPeerCertificates>
|
|
<!-- The directory used to store invalid certificates for later review by the administrator. -->
|
|
<RejectedCertificateStore>
|
|
<StoreType>Directory</StoreType>
|
|
<StorePath>%LocalApplicationData%/OPC Foundation/pki/rejected</StorePath>
|
|
</RejectedCertificateStore>
|
|
<MaxRejectedCertificates>5</MaxRejectedCertificates>
|
|
<!-- WARNING: The following setting (to automatically accept untrusted certificates) should be used
|
|
for easy debugging purposes ONLY and turned off for production deployments! -->
|
|
<AutoAcceptUntrustedCertificates>false</AutoAcceptUntrustedCertificates>
|
|
<!-- WARNING: SHA1 signed certificates are by default rejected and should be phased out.
|
|
only nano and embedded profiles are allowed to use sha1 signed certificates. -->
|
|
<RejectSHA1SignedCertificates>true</RejectSHA1SignedCertificates>
|
|
<RejectUnknownRevocationStatus>true</RejectUnknownRevocationStatus>
|
|
<MinimumCertificateKeySize>2048</MinimumCertificateKeySize>
|
|
<AddAppCertToTrustedStore>false</AddAppCertToTrustedStore>
|
|
<SendCertificateChain>true</SendCertificateChain>
|
|
<!-- Where the User issuer certificates are stored -->
|
|
<UserIssuerCertificates>
|
|
<StoreType>Directory</StoreType>
|
|
<StorePath>%LocalApplicationData%/OPC Foundation/pki/issuerUser</StorePath>
|
|
</UserIssuerCertificates>
|
|
<!-- Where the User trust list is stored-->
|
|
<TrustedUserCertificates>
|
|
<StoreType>Directory</StoreType>
|
|
<StorePath>%LocalApplicationData%/OPC Foundation/pki/trustedUser</StorePath>
|
|
</TrustedUserCertificates>
|
|
</SecurityConfiguration>
|
|
<TransportConfigurations></TransportConfigurations>
|
|
<TransportQuotas>
|
|
<OperationTimeout>120000</OperationTimeout>
|
|
<MaxStringLength>1048576</MaxStringLength>
|
|
<MaxByteStringLength>1048576</MaxByteStringLength>
|
|
<MaxArrayLength>65535</MaxArrayLength>
|
|
<MaxMessageSize>4194304</MaxMessageSize>
|
|
<MaxBufferSize>65535</MaxBufferSize>
|
|
<ChannelLifetime>30000</ChannelLifetime>
|
|
<SecurityTokenLifetime>3600000</SecurityTokenLifetime>
|
|
</TransportQuotas>
|
|
<ServerConfiguration>
|
|
<BaseAddresses>
|
|
<ua:String>opc.https://localhost:62540/Quickstarts/ReferenceServer</ua:String>
|
|
<ua:String>opc.tcp://localhost:62541/Quickstarts/ReferenceServer</ua:String>
|
|
<!--<ua:String>https://localhost:62542/Quickstarts/ReferenceServer</ua:String>-->
|
|
<ua:String>opc.wss://localhost:62543/Quickstarts/ReferenceServer</ua:String>
|
|
</BaseAddresses>
|
|
<!--
|
|
These list the alternate addresses (via firewalls, multiple NICs etc.) that can be
|
|
used to communicate with the server. The URL used by the client when calling
|
|
FindServers/GetEndpoints or CreateSession will be used to filter the list of
|
|
endpoints returned by checking for alternate base addresses that have a domain
|
|
that matches the domain in the url provided by the client.
|
|
|
|
Note that any additional domains should be listed in the server's certificate. If they
|
|
are left out the client make refuse to connect because it has no way to know if the
|
|
alternate domain was authorized by the server administrator.
|
|
-->
|
|
<!--
|
|
<AlternateBaseAddresses>
|
|
<ua:String>opc.tcp://AlternateHostName/Quickstarts/ReferenceServer</ua:String>
|
|
<ua:String>opc.tcp://10.10.103.150/Quickstarts/ReferenceServer</ua:String>
|
|
<ua:String>opc.tcp://[2a01::626d]/Quickstarts/ReferenceServer</ua:String>
|
|
</AlternateBaseAddresses>
|
|
-->
|
|
<SecurityPolicies>
|
|
<!-- the first policy is used for the https endpoint -->
|
|
<!--
|
|
-->
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>Sign_2</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>SignAndEncrypt_3</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>Sign_2</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP256_AesGcm</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>SignAndEncrypt_3</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP256_AesGcm</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>Sign_2</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP256_ChaChaPoly</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>SignAndEncrypt_3</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP256_ChaChaPoly</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>Sign_2</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP384_AesGcm</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>SignAndEncrypt_3</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP384_AesGcm</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>Sign_2</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP384_ChaChaPoly</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>SignAndEncrypt_3</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP384_ChaChaPoly</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>Sign_2</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_brainpoolP256r1_AesGcm</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>SignAndEncrypt_3</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_brainpoolP256r1_AesGcm</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>Sign_2</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_brainpoolP256r1_ChaChaPoly</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>SignAndEncrypt_3</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_brainpoolP256r1_ChaChaPoly</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>Sign_2</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_brainpoolP384r1_AesGcm</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>SignAndEncrypt_3</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_brainpoolP384r1_AesGcm</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>Sign_2</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_brainpoolP384r1_ChaChaPoly</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>SignAndEncrypt_3</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#ECC_brainpoolP384r1_ChaChaPoly</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>Sign_2</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#RSA_DH_AesGcm</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>SignAndEncrypt_3</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#RSA_DH_AesGcm</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>Sign_2</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#RSA_DH_ChaChaPoly</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>SignAndEncrypt_3</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#RSA_DH_ChaChaPoly</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
|
|
<ServerSecurityPolicy>
|
|
<SecurityMode>None_1</SecurityMode>
|
|
<SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#None</SecurityPolicyUri>
|
|
</ServerSecurityPolicy>
|
|
</SecurityPolicies>
|
|
<MinRequestThreadCount>5</MinRequestThreadCount>
|
|
<MaxRequestThreadCount>100</MaxRequestThreadCount>
|
|
<MaxQueuedRequestCount>2000</MaxQueuedRequestCount>
|
|
<!-- The SDK expects the server to support the same set of user tokens for every endpoint. -->
|
|
<UserTokenPolicies>
|
|
<!-- Allows anonymous users -->
|
|
<ua:UserTokenPolicy>
|
|
<ua:TokenType>Anonymous_0</ua:TokenType>
|
|
<!-- <ua:SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#None</ua:SecurityPolicyUri> -->
|
|
</ua:UserTokenPolicy>
|
|
<!-- Allows username/password -->
|
|
<ua:UserTokenPolicy>
|
|
<ua:TokenType>UserName_1</ua:TokenType>
|
|
<!-- passwords must be encrypted - this specifies what algorithm to use -->
|
|
<!-- if no algorithm is specified, the active security policy is used -->
|
|
<!-- <ua:SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</ua:SecurityPolicyUri> -->
|
|
</ua:UserTokenPolicy>
|
|
<!-- Allows user certificates -->
|
|
<ua:UserTokenPolicy>
|
|
<ua:TokenType>Certificate_2</ua:TokenType>
|
|
<!-- certificate possession must be proven with a digital signature - this specifies what algorithm to use -->
|
|
<!-- if no algorithm is specified, the active security policy is used -->
|
|
<!-- <ua:SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</ua:SecurityPolicyUri> -->
|
|
</ua:UserTokenPolicy>
|
|
</UserTokenPolicies>
|
|
<DiagnosticsEnabled>true</DiagnosticsEnabled>
|
|
<!-- Settings for CTT testing -->
|
|
<MaxSessionCount>75</MaxSessionCount>
|
|
<MaxChannelCount>1000</MaxChannelCount>
|
|
<MinSessionTimeout>10000</MinSessionTimeout>
|
|
<MaxSessionTimeout>3600000</MaxSessionTimeout>
|
|
<MaxBrowseContinuationPoints>10</MaxBrowseContinuationPoints>
|
|
<MaxQueryContinuationPoints>10</MaxQueryContinuationPoints>
|
|
<MaxHistoryContinuationPoints>100</MaxHistoryContinuationPoints>
|
|
<MaxRequestAge>600000</MaxRequestAge>
|
|
<MinPublishingInterval>1</MinPublishingInterval>
|
|
<MaxPublishingInterval>3600000</MaxPublishingInterval>
|
|
<PublishingResolution>1</PublishingResolution>
|
|
<MaxSubscriptionLifetime>3600000</MaxSubscriptionLifetime>
|
|
<MaxMessageQueueSize>100</MaxMessageQueueSize>
|
|
<MaxNotificationQueueSize>100</MaxNotificationQueueSize>
|
|
<MaxNotificationsPerPublish>1000</MaxNotificationsPerPublish>
|
|
<!-- The minimum sampling interval the server supports. 0 means the server does not
|
|
impose a server wide lower bound on the revised sampling interval. The value is
|
|
published in Server.ServerCapabilities.MinSupportedSampleRate. -->
|
|
<MinSupportedSamplingInterval>0</MinSupportedSamplingInterval>
|
|
<AvailableSamplingRates>
|
|
<SamplingRateGroup>
|
|
<Start>1</Start>
|
|
<Increment>1</Increment>
|
|
<Count>10</Count>
|
|
</SamplingRateGroup>
|
|
<SamplingRateGroup>
|
|
<Start>10</Start>
|
|
<Increment>10</Increment>
|
|
<Count>9</Count>
|
|
</SamplingRateGroup>
|
|
<SamplingRateGroup>
|
|
<Start>100</Start>
|
|
<Increment>100</Increment>
|
|
<Count>4</Count>
|
|
</SamplingRateGroup>
|
|
<SamplingRateGroup>
|
|
<Start>500</Start>
|
|
<Increment>250</Increment>
|
|
<Count>2</Count>
|
|
</SamplingRateGroup>
|
|
<SamplingRateGroup>
|
|
<Start>1000</Start>
|
|
<Increment>500</Increment>
|
|
<Count>20</Count>
|
|
</SamplingRateGroup>
|
|
</AvailableSamplingRates>
|
|
<RegistrationEndpoint>
|
|
<ua:EndpointUrl>opc.tcp://localhost:4840</ua:EndpointUrl>
|
|
<ua:Server>
|
|
<ua:ApplicationUri>opc.tcp://localhost:4840</ua:ApplicationUri>
|
|
<ua:ApplicationType>DiscoveryServer_3</ua:ApplicationType>
|
|
<ua:DiscoveryUrls>
|
|
<ua:String>opc.tcp://localhost:4840</ua:String>
|
|
</ua:DiscoveryUrls>
|
|
</ua:Server>
|
|
<ua:SecurityMode>SignAndEncrypt_3</ua:SecurityMode>
|
|
<ua:SecurityPolicyUri />
|
|
<ua:UserIdentityTokens />
|
|
</RegistrationEndpoint>
|
|
<MaxRegistrationInterval>0</MaxRegistrationInterval>
|
|
<NodeManagerSaveFile>Quickstarts.ReferenceServer.nodes.xml</NodeManagerSaveFile>
|
|
<MinSubscriptionLifetime>10000</MinSubscriptionLifetime>
|
|
<MaxPublishRequestCount>20</MaxPublishRequestCount>
|
|
<MaxSubscriptionCount>100</MaxSubscriptionCount>
|
|
<MaxEventQueueSize>10000</MaxEventQueueSize>
|
|
<!-- see https://opcfoundation-onlineapplications.org/profilereporting/ for list of available profiles -->
|
|
<ServerProfileArray>
|
|
<ua:String>http://opcfoundation.org/UA-Profile/Server/StandardUA2017</ua:String>
|
|
<ua:String>http://opcfoundation.org/UA-Profile/Server/DataAccess</ua:String>
|
|
<ua:String>http://opcfoundation.org/UA-Profile/Server/Methods</ua:String>
|
|
<ua:String>http://opcfoundation.org/UA-Profile/Server/ReverseConnect</ua:String>
|
|
<ua:String>http://opcfoundation.org/UA-Profile/Server/ClientRedundancy</ua:String>
|
|
<ua:String>http://opcfoundation.org/UA-Profile/Server/HistoricalRawData2022</ua:String>
|
|
<ua:String>http://opcfoundation.org/UA-Profile/Server/AggregateHistorical2022</ua:String>
|
|
</ServerProfileArray>
|
|
<ShutdownDelay>5</ShutdownDelay>
|
|
<ServerCapabilities>
|
|
<ua:String>DA</ua:String>
|
|
<ua:String>HD</ua:String>
|
|
<ua:String>AC</ua:String>
|
|
<ua:String>GDS</ua:String>
|
|
</ServerCapabilities>
|
|
<SupportedPrivateKeyFormats>
|
|
<ua:String>PFX</ua:String>
|
|
<ua:String>PEM</ua:String>
|
|
</SupportedPrivateKeyFormats>
|
|
<MaxTrustListSize>0</MaxTrustListSize>
|
|
<MultiCastDnsEnabled>false</MultiCastDnsEnabled>
|
|
<!-- Reverse connection parameters for aggregation server sample -->
|
|
<!--
|
|
<ReverseConnect>
|
|
<Clients>
|
|
<ReverseConnectClient>
|
|
<EndpointUrl>opc.tcp://localhost:65300</EndpointUrl>
|
|
<MaxSessionCount>0</MaxSessionCount>
|
|
<Enabled>true</Enabled>
|
|
</ReverseConnectClient>
|
|
</Clients>
|
|
<ConnectInterval>15000</ConnectInterval>
|
|
<ConnectTimeout>30000</ConnectTimeout>
|
|
<RejectTimeout>60000</RejectTimeout>
|
|
</ReverseConnect>
|
|
-->
|
|
<OperationLimits>
|
|
<MaxNodesPerRead>2500</MaxNodesPerRead>
|
|
<MaxNodesPerHistoryReadData>1000</MaxNodesPerHistoryReadData>
|
|
<MaxNodesPerHistoryReadEvents>1000</MaxNodesPerHistoryReadEvents>
|
|
<MaxNodesPerWrite>2500</MaxNodesPerWrite>
|
|
<MaxNodesPerHistoryUpdateData>1000</MaxNodesPerHistoryUpdateData>
|
|
<MaxNodesPerHistoryUpdateEvents>1000</MaxNodesPerHistoryUpdateEvents>
|
|
<MaxNodesPerMethodCall>2500</MaxNodesPerMethodCall>
|
|
<MaxNodesPerBrowse>2500</MaxNodesPerBrowse>
|
|
<MaxNodesPerRegisterNodes>2500</MaxNodesPerRegisterNodes>
|
|
<MaxNodesPerTranslateBrowsePathsToNodeIds>2500</MaxNodesPerTranslateBrowsePathsToNodeIds>
|
|
<MaxNodesPerNodeManagement>2500</MaxNodesPerNodeManagement>
|
|
<MaxMonitoredItemsPerCall>2500</MaxMonitoredItemsPerCall>
|
|
</OperationLimits>
|
|
<AuditingEnabled>true</AuditingEnabled>
|
|
<HttpsMutualTls>true</HttpsMutualTls>
|
|
<DurableSubscriptionsEnabled>true</DurableSubscriptionsEnabled>
|
|
<MaxDurableNotificationQueueSize>10000</MaxDurableNotificationQueueSize>
|
|
<MaxDurableEventQueueSize>10000</MaxDurableEventQueueSize>
|
|
<MaxDurableSubscriptionLifetimeInHours>10</MaxDurableSubscriptionLifetimeInHours>
|
|
</ServerConfiguration>
|
|
<Extensions>
|
|
<ua:XmlElement>
|
|
<GlobalDiscoveryServerConfiguration xmlns="http://opcfoundation.org/UA/GDS/Configuration.xsd">
|
|
<AuthoritiesStorePath>%LocalApplicationData%/OPC Foundation/GDS/authorities</AuthoritiesStorePath>
|
|
<ApplicationCertificatesStorePath>%LocalApplicationData%/OPC Foundation/GDS/applications</ApplicationCertificatesStorePath>
|
|
<DefaultSubjectNameContext>O=OPC Foundation</DefaultSubjectNameContext>
|
|
<CertificateGroups>
|
|
<CertificateGroupConfiguration>
|
|
<Id>Default</Id>
|
|
<CertificateTypes>
|
|
<ua:String>RsaSha256ApplicationCertificateType</ua:String>
|
|
<ua:String>EccNistP256ApplicationCertificateType</ua:String>
|
|
<ua:String>EccNistP384ApplicationCertificateType</ua:String>
|
|
<ua:String>EccBrainpoolP256r1ApplicationCertificateType</ua:String>
|
|
<ua:String>EccBrainpoolP384r1ApplicationCertificateType</ua:String>
|
|
</CertificateTypes>
|
|
<SubjectName>CN=Reference Server CA, O=OPC Foundation</SubjectName>
|
|
<BaseStorePath>%LocalApplicationData%/OPC Foundation/GDS/CA/default</BaseStorePath>
|
|
<DefaultCertificateLifetime>12</DefaultCertificateLifetime>
|
|
<DefaultCertificateKeySize>2048</DefaultCertificateKeySize>
|
|
<DefaultCertificateHashSize>256</DefaultCertificateHashSize>
|
|
<CACertificateLifetime>60</CACertificateLifetime>
|
|
<CACertificateKeySize>4096</CACertificateKeySize>
|
|
<CACertificateHashSize>512</CACertificateHashSize>
|
|
</CertificateGroupConfiguration>
|
|
</CertificateGroups>
|
|
<KnownHostNames />
|
|
<DatabaseStorePath></DatabaseStorePath>
|
|
</GlobalDiscoveryServerConfiguration>
|
|
</ua:XmlElement>
|
|
<ua:XmlElement>
|
|
<MemoryBufferConfiguration xmlns="http://samples.org/UA/MemoryBuffer">
|
|
<Buffers>
|
|
<MemoryBufferInstance>
|
|
<Name>UInt32</Name>
|
|
<TagCount>100</TagCount>
|
|
<DataType>UInt32</DataType>
|
|
</MemoryBufferInstance>
|
|
<MemoryBufferInstance>
|
|
<Name>Double</Name>
|
|
<TagCount>100</TagCount>
|
|
<DataType>Double</DataType>
|
|
</MemoryBufferInstance>
|
|
</Buffers>
|
|
</MemoryBufferConfiguration>
|
|
</ua:XmlElement>
|
|
</Extensions>
|
|
<TraceConfiguration>
|
|
<OutputFilePath>./Logs/Quickstarts.ReferenceServer.log.txt</OutputFilePath>
|
|
<DeleteOnLoad>true</DeleteOnLoad>
|
|
<!-- Show Only Errors -->
|
|
<!-- <TraceMasks>1</TraceMasks> -->
|
|
<!-- Show Only Security and Errors -->
|
|
<!-- <TraceMasks>513</TraceMasks> -->
|
|
<!-- Show Only Security, Errors and Trace -->
|
|
<!-- <TraceMasks>515</TraceMasks> -->
|
|
<!-- Show Only Security, COM Calls, Errors and Trace -->
|
|
<!-- <TraceMasks>771</TraceMasks> -->
|
|
<!-- Show Only Security, Service Calls, Errors and Trace -->
|
|
<!-- <TraceMasks>523</TraceMasks> -->
|
|
<!-- Show Only Security, ServiceResultExceptions, Errors and Trace -->
|
|
<TraceMasks>519</TraceMasks>
|
|
</TraceConfiguration>
|
|
</ApplicationConfiguration>
|