******************************************************************************** ******************************************************************************** ** ** ** Version 1.2.1 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ * IMPORTANT: The UserData stored in BaseNodes and their subtypes will not anymore be freed on shutdown. It is now in the responsibility of the application to free the memory referenced by the UserData. * Removed usage of OpcUa_DateTime_ToInt64 after it was removed in uastack * Removed UASTACK_SUPPORT_PKI, replaced UASTACK_WITH_SECURITY with UASTACK_WITH_OPENSSL after that was unified in uastack * Made authentication and authorization settings configurable in CMakeLists.txt ------------------------ Bugfixes ------------------------ * Alarms & Events: - Storing events of type ConditionType in UaServer_Events_CreateEvent instead of UaServer_Events_FireEvent - Fixed removing of Conditions from internal management list - Fixed crash in UaServer_ModifyMonitoredItems for event items * SampleProvider: - Fixed write on invalid memory for dynamic GUID - Removed usage of hard coded NodeId identifiers * ServerProvider: - Setting correct requested address space size - Added error checks in server provider address space creation - Removed creation of duplicate references in server address space * Discovery: - Fixed crash in discovery registration if no response was received - Removed usage of hardcoded Endpoint index in discovery registration - Fixed check for NULL ResponseType in discovery registration * Linux: - Implements missing methods UaServer_P_DateTime_ToMilliseconds and UaServer_P_DateTime_Diff - Added SIGPIPE handler in demoserver application * Fixed possible crashes for array lengths of -1 * Initializing providers correctly to prevent crashes after errors in startup phase * Regularly checking sessions for timeout * Creating default security policies of endpoint depending on stack settings * Added missing unlock of session mutex * Fixed possible hijacking of sessions by setting first SessionId with GetTickCount * Added check for creating invalid SessionId * Changed index parameter of UaServer_HashTable methods to unsigned int to prevent invalid array index access * Increased UASERVER_MAX_PROVIDERNODES for generated server address space * Returning service fault if PublishRequest times out * Using stack datatypes in utility methods * Added check for system time changes to prevent erroneous Session timeouts * Removed overwriting of PKIType setting in PkiConfig * Fixes error checks in node creation methods * Not adding security policies if PkiType == NO_PKI * Clearing server struct in demoserver only if it has been initialized * Building the SDK libraries without security (without OpenSSL) possible * Using Mutexes and Semaphores only if OPCUA_USE_SYNCHRONISATION is set * Not allowing to write value of different ArrayType ------------------------ New Features ------------------------ * Added method RemoveNode to Provider interface * Alarms & Events: - Added method UaServer_Events_GetConditionByNodeId - Extended Alarms & Events example and added tutorial 3 * Made the server callback interface available for the application via UaServer_SetCallback_SessionCreated/SessionActivated/SessionClosed * Added getter methods for ClientName and LastClientContact of a Session ******************************************************************************** ******************************************************************************** ** ** ** Version 1.2.0 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ * IMPORTANT: Preprocessor defines for the server application PKI configuration have been moved from uaserver_config.h to uaserver.c. These values now have to be set in the UaServer_Configuration struct that can be retrieved by UaServer_GetConfiguration(). This allows to change BuildInfo and PKI configuration of the UA application without recompiling the SDK. * Windows: The PKI directory used by the sample application is now "All Users\Application Data\UnifiedAutomation\\PKI" (or equivalent) * Moved DI/PLCOpen model files to subfolders * Split HistoryRead in HistoryReadEvent / HistoryReadRawModified / HistoryReadProcessed / HistoryReadAtTime * New method UaServer_DoCom() is to be called in a loop instead of OpcUa_SocketManager_Loop() in the application * Renamed define UASERVER_MAX_NAMESPACEINDICIES to UASERVER_MAX_NAMESPACEINDICES ------------------------ Bugfixes ------------------------ * Fixed returned StatusCode for UaServer_Write_Internal() * Fixed creation of DataChange if DataChangeTrigger is StatusCode only * Unified include policy of header files and file structure * Changed processing order of LinksToAdd/LinksToDelete in UaServer_SetTriggering to be compliant * Fixed memleak in UaProvider_Server_InitServerStatus * Removed usage of OpcUa_BaseNode's UserData in SDK * Fixed potential crashes in OpcUa_BaseNode_Set... methods that use strings * Added handling of unhandled data types to OpcUa_Variant_Clone * Added handling of unhandled data types to OpcUa_Variant_ScalarCompare/ArrayCompare/MatrixCompare/CompareDeadbandAbsolute * Setting PolicyId of configured UserTokenPolicies * Fixed application URI in linux sample server ------------------------ New Features ------------------------ * Authentication: - Added Internal / Win32 / PAM / SASL authentication modules - Only accepting connections if used UserIdentityToken is configured and valid - If UserIdentityToken is set to Username/Password, an authentication module must be enabled - Added support for encrypted passwords in UserIdentityToken - Added authorization support to Server- and Sampleprovider * Authorization: - Added UaServer_iNode structure to OpcUa_BaseNode for authorization handling - Added user management methods to provider interface - Added UaServer_UserCtx as session's UserIdentityData - Using UaServer_iNode instead of UserWriteMask/UserAccessLevel for authorization - Added sample nodes with different access rights in sample provider - Added sample passwd and group files * Alarms & Events: - Added support for event monitored items - Added methods for firing events - Added all event types from UA address space - Creating custom event types is possible - Added sample event type to sample provider - Added sample EventNotifier and EventSource to sample provider - Added convenient methods to set event fields of BaseEventType - SetTriggering supports event monitored items - WhereClause supporting all operators (except for Cast) - Handling ConditionRefresh() method in SDK * OpcUa_BaseNode members are not visible anymore, removed UASERVER_BASENODE_HIDEMEMBERS define * UaServer members are not visible anymore, configuration is accessible with UaServer_GetConfiguration() * Added server side limit for ReferencesPerNode for Browse/BrowseNext responses * Added OpcUa_BaseNode_RemoveReferenceToNode and OpcUa_BaseNode_RemoveReferenceToNodeId * Added periodic registration at discovery server ******************************************************************************** ******************************************************************************** ** ** ** Version 1.1.1 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Bugfixes ------------------------ * Fixed bug in UaServer_TurboList freelist handling * Fixed bug in UaServer_HashTable_RemoveAt * Fixed bug in removing UA nodes dynamically * Fixed bug in cloning opaque NodeIds in OpcUa_NodeId_Clone ------------------------ New Features ------------------------ * Added 5 static and 5 dynamic UInt32 variables to demo address space * Added SessionCancel implementation * Added Triggering of subscriptions * Completed UA Data Access information model support: - Added BrowseContinuationPoints and MinSupportedSampleRate nodes - Added UaSession nodes. Each new session creates a new node in the address space. * Added monitoring support for all attributes * Added datachange filter (absolute deadband) * Added AvailableSequenceNumbers to publish reponse * Changed ModifyMonitoredItems to work asychronously * Improved timer precission by time measurements instead of just counting number of timeouts * Improved item queue handling of datachange notifications * Added IndexRange support for datatypes String and ByteString * Added missing results for SubscriptionAcknowledgements in Publish requests * Added standard conformant ApplicationURI * Added Browse Checks - Check ReferenceTypeId - Check BrowseDirection - Check if ReferenceNodeId is an empty String * Improved error handling in BrowseNext * TranslateBrowsePathToNodeId: return OpcUa_BadNodeIdInvalid if StartingNode not found * Session Management: - check if session is used unactivated - check the SecureChannelId - verify Timestamp and TimeoutHint * Utilities: - Added new function UaServer_NamespaceIndex_GetByUri() ******************************************************************************** ******************************************************************************** ** ** ** Version 1.1.0 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ New Features ------------------------ * BrowseNext Service * Continuationpoints * Republish Service * ModifySubscription Service * Support for PLCopen and DI Type System * Certificate and CRL generation at server startup (if not existent) * Certificates of unknown clients are stored in rejected folder * Improved internal node management * Support for multiple namespaces in one provider * AddressSpace creation with autogenerated sources (UaModeler) ******************************************************************************** ******************************************************************************** ** ** ** Version 1.0.0 ** ** ** ******************************************************************************** ******************************************************************************** Initial release