in src/Azure.IIoT.OpcUa.Publisher.Testing/cli/TestServerFactory.cs [104:259]
public static ApplicationConfiguration CreateServerConfiguration(
IEnumerable<int> ports, string pkiRootPath,
Action<ServerConfiguration> configure)
{
var extensions = new List<object>
{
new MemoryBuffer.MemoryBufferConfiguration
{
Buffers =
[
new MemoryBuffer.MemoryBufferInstance
{
Name = "UInt32",
TagCount = 10000,
DataType = "UInt32"
},
new MemoryBuffer.MemoryBufferInstance
{
Name = "Double",
TagCount = 100,
DataType = "Double"
}
]
}
/// ...
};
if (string.IsNullOrEmpty(pkiRootPath))
{
pkiRootPath = "pki";
}
var configuration = new ApplicationConfiguration
{
ApplicationName = "UA Core Sample Server",
ApplicationType = ApplicationType.Server,
ApplicationUri = $"urn:{Utils.GetHostName()}:OPCFoundation:CoreSampleServer",
Extensions = new XmlElementCollection(
extensions.Select(XmlElementEx.SerializeObject)),
ProductUri = "http://opcfoundation.org/UA/SampleServer",
SecurityConfiguration = new SecurityConfiguration
{
ApplicationCertificate = new CertificateIdentifier
{
StoreType = CertificateStoreType.Directory,
StorePath = $"{pkiRootPath}/own",
SubjectName = "UA Core Sample Server"
},
TrustedPeerCertificates = new CertificateTrustList
{
StoreType = CertificateStoreType.Directory,
StorePath = $"{pkiRootPath}/trusted"
},
TrustedIssuerCertificates = new CertificateTrustList
{
StoreType = CertificateStoreType.Directory,
StorePath = $"{pkiRootPath}/issuer"
},
RejectedCertificateStore = new CertificateTrustList
{
StoreType = CertificateStoreType.Directory,
StorePath = $"{pkiRootPath}/rejected"
},
MinimumCertificateKeySize = 1024,
RejectSHA1SignedCertificates = false,
AutoAcceptUntrustedCertificates = true,
AddAppCertToTrustedStore = true
},
TransportConfigurations = [],
TransportQuotas = new TransportQuotas(),
ServerConfiguration = new ServerConfiguration
{
// Sample server specific
ServerProfileArray = [
"Standard UA Server Profile",
"Data Access Server Facet",
"Method Server Facet"
],
ServerCapabilities = [
"DA"
],
SupportedPrivateKeyFormats = [
"PFX", "PEM"
],
NodeManagerSaveFile = "nodes.xml",
DiagnosticsEnabled = false,
ShutdownDelay = 0,
// Runtime configuration
BaseAddresses = new StringCollection(ports
.Distinct()
.Select(p => $"opc.tcp://localhost:{p}/UA/SampleServer")),
SecurityPolicies = [
new ServerSecurityPolicy {
SecurityMode = MessageSecurityMode.Sign,
SecurityPolicyUri = SecurityPolicies.Basic256Sha256
},
new ServerSecurityPolicy {
SecurityMode = MessageSecurityMode.SignAndEncrypt,
SecurityPolicyUri =SecurityPolicies.Basic256Sha256
},
new ServerSecurityPolicy {
SecurityMode = MessageSecurityMode.None,
SecurityPolicyUri = SecurityPolicies.None
}
],
UserTokenPolicies = [
new UserTokenPolicy {
TokenType = UserTokenType.Anonymous,
SecurityPolicyUri = SecurityPolicies.None
},
new UserTokenPolicy {
TokenType = UserTokenType.UserName
},
new UserTokenPolicy {
TokenType = UserTokenType.Certificate
}
],
MinRequestThreadCount = 200,
MaxRequestThreadCount = 2000,
MaxQueuedRequestCount = 2000000,
MaxSessionCount = 10000,
MinSessionTimeout = 10000,
MaxSessionTimeout = 3600000,
MaxBrowseContinuationPoints = 1000,
MaxQueryContinuationPoints = 1000,
MaxHistoryContinuationPoints = 1000,
MaxRequestAge = 600000,
MinPublishingInterval = 100,
MaxPublishingInterval = 3600000,
PublishingResolution = 50,
MaxSubscriptionLifetime = 3600000,
MaxMessageQueueSize = 100,
MaxNotificationQueueSize = 100,
MaxNotificationsPerPublish = 1000,
MinMetadataSamplingInterval = 1000,
MaxPublishRequestCount = 20,
MaxSubscriptionCount = 100,
MaxEventQueueSize = 10000,
MinSubscriptionLifetime = 10000,
// Do not register with LDS
MaxRegistrationInterval = 0, // TODO
RegistrationEndpoint = null
},
TraceConfiguration = new TraceConfiguration
{
TraceMasks = 1
}
};
configure?.Invoke(configuration.ServerConfiguration);
return configuration;
}