|
@@ -42,6 +42,7 @@ UA_Server *
|
|
|
UA_Server_new() {
|
|
|
UA_ServerConfig config;
|
|
|
memset(&config, 0, sizeof(UA_ServerConfig));
|
|
|
+ /* Set a default logger and NodeStore for the initialization */
|
|
|
config.logger = UA_Log_Stdout_;
|
|
|
UA_Nodestore_ZipTree(&config.nodestore);
|
|
|
return UA_Server_newWithConfig(&config);
|
|
@@ -120,6 +121,7 @@ setDefaultConfig(UA_ServerConfig *conf) {
|
|
|
conf->shutdownDelay = 0.0;
|
|
|
|
|
|
/* Server Description */
|
|
|
+ UA_BuildInfo_clear(&conf->buildInfo);
|
|
|
conf->buildInfo.productUri = UA_STRING_ALLOC(PRODUCT_URI);
|
|
|
conf->buildInfo.manufacturerName = UA_STRING_ALLOC(MANUFACTURER_NAME);
|
|
|
conf->buildInfo.productName = UA_STRING_ALLOC(PRODUCT_NAME);
|
|
@@ -133,6 +135,7 @@ setDefaultConfig(UA_ServerConfig *conf) {
|
|
|
#endif
|
|
|
conf->buildInfo.buildDate = UA_DateTime_now();
|
|
|
|
|
|
+ UA_ApplicationDescription_clear(&conf->applicationDescription);
|
|
|
conf->applicationDescription.applicationUri = UA_STRING_ALLOC(APPLICATION_URI_SERVER);
|
|
|
conf->applicationDescription.productUri = UA_STRING_ALLOC(PRODUCT_URI);
|
|
|
conf->applicationDescription.applicationName =
|
|
@@ -144,7 +147,7 @@ setDefaultConfig(UA_ServerConfig *conf) {
|
|
|
/* conf->applicationDescription.discoveryUrls = NULL; */
|
|
|
|
|
|
#ifdef UA_ENABLE_DISCOVERY_MULTICAST
|
|
|
- UA_MdnsDiscoveryConfiguration_init(&conf->discovery.mdns);
|
|
|
+ UA_MdnsDiscoveryConfiguration_clear(&conf->discovery.mdns);
|
|
|
conf->discovery.mdnsInterfaceIP = UA_STRING_NULL;
|
|
|
#endif
|
|
|
|
|
@@ -164,11 +167,11 @@ setDefaultConfig(UA_ServerConfig *conf) {
|
|
|
* overwritten when the policy is specialized. */
|
|
|
UA_CertificateVerification_AcceptAll(&conf->certificateVerification);
|
|
|
|
|
|
- /* Global Node Lifecycle */
|
|
|
- conf->nodeLifecycle.constructor = NULL;
|
|
|
- conf->nodeLifecycle.destructor = NULL;
|
|
|
- conf->nodeLifecycle.createOptionalChild = NULL;
|
|
|
- conf->nodeLifecycle.generateChildNodeId = NULL;
|
|
|
+ /* * Global Node Lifecycle * */
|
|
|
+ /* conf->nodeLifecycle.constructor = NULL; */
|
|
|
+ /* conf->nodeLifecycle.destructor = NULL; */
|
|
|
+ /* conf->nodeLifecycle.createOptionalChild = NULL; */
|
|
|
+ /* conf->nodeLifecycle.generateChildNodeId = NULL; */
|
|
|
|
|
|
/* Relax constraints for the InformationModel */
|
|
|
conf->relaxEmptyValueConstraint = true; /* Allow empty values */
|
|
@@ -244,15 +247,14 @@ addDefaultNetworkLayers(UA_ServerConfig *conf, UA_UInt16 portNumber,
|
|
|
return UA_ServerConfig_addNetworkLayerTCP(conf, portNumber, sendBufferSize, recvBufferSize);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
#ifdef UA_ENABLE_WEBSOCKET_SERVER
|
|
|
UA_EXPORT UA_StatusCode
|
|
|
UA_ServerConfig_addNetworkLayerWS(UA_ServerConfig *conf, UA_UInt16 portNumber,
|
|
|
UA_UInt32 sendBufferSize, UA_UInt32 recvBufferSize) {
|
|
|
/* Add a network layer */
|
|
|
UA_ServerNetworkLayer *tmp = (UA_ServerNetworkLayer *)
|
|
|
- UA_realloc(conf->networkLayers, sizeof(UA_ServerNetworkLayer) * (1 + conf->networkLayersSize));
|
|
|
+ UA_realloc(conf->networkLayers,
|
|
|
+ sizeof(UA_ServerNetworkLayer) * (1 + conf->networkLayersSize));
|
|
|
if(!tmp)
|
|
|
return UA_STATUSCODE_BADOUTOFMEMORY;
|
|
|
conf->networkLayers = tmp;
|
|
@@ -278,7 +280,8 @@ UA_ServerConfig_addNetworkLayerTCP(UA_ServerConfig *conf, UA_UInt16 portNumber,
|
|
|
UA_UInt32 sendBufferSize, UA_UInt32 recvBufferSize) {
|
|
|
/* Add a network layer */
|
|
|
UA_ServerNetworkLayer *tmp = (UA_ServerNetworkLayer *)
|
|
|
- UA_realloc(conf->networkLayers, sizeof(UA_ServerNetworkLayer) * (1 + conf->networkLayersSize));
|
|
|
+ UA_realloc(conf->networkLayers,
|
|
|
+ sizeof(UA_ServerNetworkLayer) * (1 + conf->networkLayersSize));
|
|
|
if(!tmp)
|
|
|
return UA_STATUSCODE_BADOUTOFMEMORY;
|
|
|
conf->networkLayers = tmp;
|
|
@@ -301,11 +304,10 @@ UA_ServerConfig_addNetworkLayerTCP(UA_ServerConfig *conf, UA_UInt16 portNumber,
|
|
|
UA_EXPORT UA_StatusCode
|
|
|
UA_ServerConfig_addSecurityPolicyNone(UA_ServerConfig *config,
|
|
|
const UA_ByteString *certificate) {
|
|
|
- UA_StatusCode retval;
|
|
|
-
|
|
|
/* Allocate the SecurityPolicies */
|
|
|
UA_SecurityPolicy *tmp = (UA_SecurityPolicy *)
|
|
|
- UA_realloc(config->securityPolicies, sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
|
|
|
+ UA_realloc(config->securityPolicies,
|
|
|
+ sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
|
|
|
if(!tmp)
|
|
|
return UA_STATUSCODE_BADOUTOFMEMORY;
|
|
|
config->securityPolicies = tmp;
|
|
@@ -314,8 +316,9 @@ UA_ServerConfig_addSecurityPolicyNone(UA_ServerConfig *config,
|
|
|
UA_ByteString localCertificate = UA_BYTESTRING_NULL;
|
|
|
if(certificate)
|
|
|
localCertificate = *certificate;
|
|
|
- retval = UA_SecurityPolicy_None(&config->securityPolicies[config->securityPoliciesSize], NULL,
|
|
|
- localCertificate, &config->logger);
|
|
|
+ UA_StatusCode retval =
|
|
|
+ UA_SecurityPolicy_None(&config->securityPolicies[config->securityPoliciesSize],
|
|
|
+ NULL, localCertificate, &config->logger);
|
|
|
if(retval != UA_STATUSCODE_GOOD)
|
|
|
return retval;
|
|
|
config->securityPoliciesSize++;
|
|
@@ -325,13 +328,11 @@ UA_ServerConfig_addSecurityPolicyNone(UA_ServerConfig *config,
|
|
|
|
|
|
UA_EXPORT UA_StatusCode
|
|
|
UA_ServerConfig_addEndpoint(UA_ServerConfig *config, const UA_String securityPolicyUri,
|
|
|
- UA_MessageSecurityMode securityMode)
|
|
|
-{
|
|
|
- UA_StatusCode retval;
|
|
|
-
|
|
|
+ UA_MessageSecurityMode securityMode) {
|
|
|
/* Allocate the endpoint */
|
|
|
- UA_EndpointDescription * tmp = (UA_EndpointDescription *)
|
|
|
- UA_realloc(config->endpoints, sizeof(UA_EndpointDescription) * (1 + config->endpointsSize));
|
|
|
+ UA_EndpointDescription *tmp = (UA_EndpointDescription *)
|
|
|
+ UA_realloc(config->endpoints,
|
|
|
+ sizeof(UA_EndpointDescription) * (1 + config->endpointsSize));
|
|
|
if(!tmp) {
|
|
|
return UA_STATUSCODE_BADOUTOFMEMORY;
|
|
|
}
|
|
@@ -349,8 +350,9 @@ UA_ServerConfig_addEndpoint(UA_ServerConfig *config, const UA_String securityPol
|
|
|
return UA_STATUSCODE_BADINVALIDARGUMENT;
|
|
|
|
|
|
/* Populate the endpoint */
|
|
|
- retval = createEndpoint(config, &config->endpoints[config->endpointsSize],
|
|
|
- policy, securityMode);
|
|
|
+ UA_StatusCode retval =
|
|
|
+ createEndpoint(config, &config->endpoints[config->endpointsSize],
|
|
|
+ policy, securityMode);
|
|
|
if(retval != UA_STATUSCODE_GOOD)
|
|
|
return retval;
|
|
|
config->endpointsSize++;
|
|
@@ -360,33 +362,36 @@ UA_ServerConfig_addEndpoint(UA_ServerConfig *config, const UA_String securityPol
|
|
|
|
|
|
UA_EXPORT UA_StatusCode
|
|
|
UA_ServerConfig_addAllEndpoints(UA_ServerConfig *config) {
|
|
|
- UA_StatusCode retval;
|
|
|
-
|
|
|
/* Allocate the endpoints */
|
|
|
UA_EndpointDescription * tmp = (UA_EndpointDescription *)
|
|
|
- UA_realloc(config->endpoints, sizeof(UA_EndpointDescription) * (2 * config->securityPoliciesSize + config->endpointsSize));
|
|
|
+ UA_realloc(config->endpoints,
|
|
|
+ sizeof(UA_EndpointDescription) *
|
|
|
+ (2 * config->securityPoliciesSize + config->endpointsSize));
|
|
|
if(!tmp) {
|
|
|
return UA_STATUSCODE_BADOUTOFMEMORY;
|
|
|
}
|
|
|
config->endpoints = tmp;
|
|
|
|
|
|
/* Populate the endpoints */
|
|
|
- for (size_t i = 0; i < config->securityPoliciesSize; ++i) {
|
|
|
- if (UA_String_equal(&UA_SECURITY_POLICY_NONE_URI, &config->securityPolicies[i].policyUri)) {
|
|
|
- retval = createEndpoint(config, &config->endpoints[config->endpointsSize],
|
|
|
- &config->securityPolicies[i], UA_MESSAGESECURITYMODE_NONE);
|
|
|
+ for(size_t i = 0; i < config->securityPoliciesSize; ++i) {
|
|
|
+ if(UA_String_equal(&UA_SECURITY_POLICY_NONE_URI, &config->securityPolicies[i].policyUri)) {
|
|
|
+ UA_StatusCode retval =
|
|
|
+ createEndpoint(config, &config->endpoints[config->endpointsSize],
|
|
|
+ &config->securityPolicies[i], UA_MESSAGESECURITYMODE_NONE);
|
|
|
if(retval != UA_STATUSCODE_GOOD)
|
|
|
return retval;
|
|
|
config->endpointsSize++;
|
|
|
} else {
|
|
|
- retval = createEndpoint(config, &config->endpoints[config->endpointsSize],
|
|
|
- &config->securityPolicies[i], UA_MESSAGESECURITYMODE_SIGN);
|
|
|
+ UA_StatusCode retval =
|
|
|
+ createEndpoint(config, &config->endpoints[config->endpointsSize],
|
|
|
+ &config->securityPolicies[i], UA_MESSAGESECURITYMODE_SIGN);
|
|
|
if(retval != UA_STATUSCODE_GOOD)
|
|
|
return retval;
|
|
|
config->endpointsSize++;
|
|
|
|
|
|
retval = createEndpoint(config, &config->endpoints[config->endpointsSize],
|
|
|
- &config->securityPolicies[i], UA_MESSAGESECURITYMODE_SIGNANDENCRYPT);
|
|
|
+ &config->securityPolicies[i],
|
|
|
+ UA_MESSAGESECURITYMODE_SIGNANDENCRYPT);
|
|
|
if(retval != UA_STATUSCODE_GOOD)
|
|
|
return retval;
|
|
|
config->endpointsSize++;
|
|
@@ -433,7 +438,8 @@ UA_ServerConfig_setMinimalCustomBuffer(UA_ServerConfig *config, UA_UInt16 portNu
|
|
|
}
|
|
|
|
|
|
/* Allocate the endpoint */
|
|
|
- retval = UA_ServerConfig_addEndpoint(config, UA_SECURITY_POLICY_NONE_URI, UA_MESSAGESECURITYMODE_NONE);
|
|
|
+ retval = UA_ServerConfig_addEndpoint(config, UA_SECURITY_POLICY_NONE_URI,
|
|
|
+ UA_MESSAGESECURITYMODE_NONE);
|
|
|
if(retval != UA_STATUSCODE_GOOD) {
|
|
|
UA_ServerConfig_clean(config);
|
|
|
return retval;
|
|
@@ -448,11 +454,10 @@ UA_EXPORT UA_StatusCode
|
|
|
UA_ServerConfig_addSecurityPolicyBasic128Rsa15(UA_ServerConfig *config,
|
|
|
const UA_ByteString *certificate,
|
|
|
const UA_ByteString *privateKey) {
|
|
|
- UA_StatusCode retval;
|
|
|
-
|
|
|
/* Allocate the SecurityPolicies */
|
|
|
UA_SecurityPolicy *tmp = (UA_SecurityPolicy *)
|
|
|
- UA_realloc(config->securityPolicies, sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
|
|
|
+ UA_realloc(config->securityPolicies,
|
|
|
+ sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
|
|
|
if(!tmp)
|
|
|
return UA_STATUSCODE_BADOUTOFMEMORY;
|
|
|
config->securityPolicies = tmp;
|
|
@@ -464,9 +469,10 @@ UA_ServerConfig_addSecurityPolicyBasic128Rsa15(UA_ServerConfig *config,
|
|
|
localCertificate = *certificate;
|
|
|
if(privateKey)
|
|
|
localPrivateKey = *privateKey;
|
|
|
- retval = UA_SecurityPolicy_Basic128Rsa15(&config->securityPolicies[config->securityPoliciesSize],
|
|
|
- &config->certificateVerification,
|
|
|
- localCertificate, localPrivateKey, &config->logger);
|
|
|
+ UA_StatusCode retval =
|
|
|
+ UA_SecurityPolicy_Basic128Rsa15(&config->securityPolicies[config->securityPoliciesSize],
|
|
|
+ &config->certificateVerification,
|
|
|
+ localCertificate, localPrivateKey, &config->logger);
|
|
|
if(retval != UA_STATUSCODE_GOOD)
|
|
|
return retval;
|
|
|
config->securityPoliciesSize++;
|
|
@@ -478,11 +484,10 @@ UA_EXPORT UA_StatusCode
|
|
|
UA_ServerConfig_addSecurityPolicyBasic256(UA_ServerConfig *config,
|
|
|
const UA_ByteString *certificate,
|
|
|
const UA_ByteString *privateKey) {
|
|
|
- UA_StatusCode retval;
|
|
|
-
|
|
|
/* Allocate the SecurityPolicies */
|
|
|
UA_SecurityPolicy *tmp = (UA_SecurityPolicy *)
|
|
|
- UA_realloc(config->securityPolicies, sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
|
|
|
+ UA_realloc(config->securityPolicies,
|
|
|
+ sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
|
|
|
if(!tmp)
|
|
|
return UA_STATUSCODE_BADOUTOFMEMORY;
|
|
|
config->securityPolicies = tmp;
|
|
@@ -494,9 +499,10 @@ UA_ServerConfig_addSecurityPolicyBasic256(UA_ServerConfig *config,
|
|
|
localCertificate = *certificate;
|
|
|
if(privateKey)
|
|
|
localPrivateKey = *privateKey;
|
|
|
- retval = UA_SecurityPolicy_Basic256(&config->securityPolicies[config->securityPoliciesSize],
|
|
|
- &config->certificateVerification,
|
|
|
- localCertificate, localPrivateKey, &config->logger);
|
|
|
+ UA_StatusCode retval =
|
|
|
+ UA_SecurityPolicy_Basic256(&config->securityPolicies[config->securityPoliciesSize],
|
|
|
+ &config->certificateVerification,
|
|
|
+ localCertificate, localPrivateKey, &config->logger);
|
|
|
if(retval != UA_STATUSCODE_GOOD)
|
|
|
return retval;
|
|
|
config->securityPoliciesSize++;
|
|
@@ -508,11 +514,10 @@ UA_EXPORT UA_StatusCode
|
|
|
UA_ServerConfig_addSecurityPolicyBasic256Sha256(UA_ServerConfig *config,
|
|
|
const UA_ByteString *certificate,
|
|
|
const UA_ByteString *privateKey) {
|
|
|
- UA_StatusCode retval;
|
|
|
-
|
|
|
/* Allocate the SecurityPolicies */
|
|
|
UA_SecurityPolicy *tmp = (UA_SecurityPolicy *)
|
|
|
- UA_realloc(config->securityPolicies, sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
|
|
|
+ UA_realloc(config->securityPolicies,
|
|
|
+ sizeof(UA_SecurityPolicy) * (1 + config->securityPoliciesSize));
|
|
|
if(!tmp)
|
|
|
return UA_STATUSCODE_BADOUTOFMEMORY;
|
|
|
config->securityPolicies = tmp;
|
|
@@ -524,9 +529,10 @@ UA_ServerConfig_addSecurityPolicyBasic256Sha256(UA_ServerConfig *config,
|
|
|
localCertificate = *certificate;
|
|
|
if(privateKey)
|
|
|
localPrivateKey = *privateKey;
|
|
|
- retval = UA_SecurityPolicy_Basic256Sha256(&config->securityPolicies[config->securityPoliciesSize],
|
|
|
- &config->certificateVerification,
|
|
|
- localCertificate, localPrivateKey, &config->logger);
|
|
|
+ UA_StatusCode retval =
|
|
|
+ UA_SecurityPolicy_Basic256Sha256(&config->securityPolicies[config->securityPoliciesSize],
|
|
|
+ &config->certificateVerification,
|
|
|
+ localCertificate, localPrivateKey, &config->logger);
|
|
|
if(retval != UA_STATUSCODE_GOOD)
|
|
|
return retval;
|
|
|
config->securityPoliciesSize++;
|
|
@@ -538,11 +544,10 @@ UA_EXPORT UA_StatusCode
|
|
|
UA_ServerConfig_addAllSecurityPolicies(UA_ServerConfig *config,
|
|
|
const UA_ByteString *certificate,
|
|
|
const UA_ByteString *privateKey) {
|
|
|
- UA_StatusCode retval;
|
|
|
-
|
|
|
/* Allocate the SecurityPolicies */
|
|
|
UA_SecurityPolicy *tmp = (UA_SecurityPolicy *)
|
|
|
- UA_realloc(config->securityPolicies, sizeof(UA_SecurityPolicy) * (4 + config->securityPoliciesSize));
|
|
|
+ UA_realloc(config->securityPolicies,
|
|
|
+ sizeof(UA_SecurityPolicy) * (4 + config->securityPoliciesSize));
|
|
|
if(!tmp)
|
|
|
return UA_STATUSCODE_BADOUTOFMEMORY;
|
|
|
config->securityPolicies = tmp;
|
|
@@ -555,8 +560,9 @@ UA_ServerConfig_addAllSecurityPolicies(UA_ServerConfig *config,
|
|
|
if(privateKey)
|
|
|
localPrivateKey = *privateKey;
|
|
|
|
|
|
- retval = UA_SecurityPolicy_None(&config->securityPolicies[config->securityPoliciesSize], NULL,
|
|
|
- localCertificate, &config->logger);
|
|
|
+ UA_StatusCode retval =
|
|
|
+ UA_SecurityPolicy_None(&config->securityPolicies[config->securityPoliciesSize],
|
|
|
+ NULL, localCertificate, &config->logger);
|
|
|
if(retval != UA_STATUSCODE_GOOD)
|
|
|
return retval;
|
|
|
config->securityPoliciesSize++;
|