1563 Commits

Author SHA1 Message Date
Andreas Ebner 4d5d494869 fix(examples): delay the ci_server shutdown for connected clients (Part 5, 12.10)
Without a shutdownDelay, ci_server stopped immediately on SIGINT. Clients
never saw the Shutdown State and the SecondsTillShutdown countdown.
2026-10-16 23:04:34 +02:00
Andreas Ebner 0503c8fd97 feat(driver): open files with the Session of the caller (Part 20 4.2.2)
The backend open gets the caller as a context: the Session of Open, CreateFile
and the copies of MoveOrCopy, NULL for direct calls. Its result reaches the
client.
2026-10-15 22:05:04 +02:00
Andreas Ebner 16a739a7c3 fix(server): fail startup when no transport can open a server socket
UA_Server_run_startup ignored the driver results and ran without
listening. It now fails if a transport cannot open its socket and
neither another transport nor a reverse connect reaches the server.
2026-10-13 08:55:20 +02:00
Andreas Ebner ef4c4b6a54 docs(driver): document file transfer and custom backends
Add the file transfer tutorial, a custom in-memory backend example, and
build and feature documentation. Wire the public API and tutorial into
the generated driver documentation.

Co-authored-by: Julius Pfrommer <julius.pfrommer@o6-automation.com>
2026-10-12 00:14:33 +02:00
Andreas Ebner 918f2cfd4b fix(docs): typos in comments, docs and messages
Fix misspellings found with codespell across headers, sources, examples,
tests and the documentation, including "propably" in the nodeset
compiler docs. Identifiers, companion spec names and generated code are
left untouched.
2026-09-28 16:20:44 +02:00
Andreas Ebner a8dda71f82 fix(examples): secure the MQTT tutorials for the UADP encoding at runtime
Security was only enabled with mbedTLS and without JSON compiled in, so
the default build ran unsecured. It now follows UA_ENABLE_ENCRYPTION and
the runtime --json choice (Part 14 defines message security for UADP).
2026-09-24 16:52:03 +02:00
Andreas Ebner 00448d676c build(examples): build the encrypted PubSub examples with every crypto backend
They only depend on the PubSub policy factories, which every backend
provides now. The TPM keystore examples link the system OpenSSL by
name and stay out of LibreSSL builds.
2026-09-24 16:52:03 +02:00
Julius Pfrommer d3e968d143 feat(nodeset-loader): move loader into core utility 2026-09-05 19:31:54 +02:00
Julius Pfrommer a476806541 Merge remote-tracking branch 'origin/1.5' into merge_15_master
# Conflicts:
#	.github/workflows/build_linux.yml
#	CHANGES.md
#	arch/common/eventloop_mqtt.c
#	examples/encryption/server_encryption_filestore.c
#	plugins/crypto/ua_certificategroup_filestore.c
#	src/pubsub/ua_pubsub_networkmessage_json.c
#	src/server/ua_discovery.h
#	src/server/ua_discovery_mdns.c
#	src/server/ua_discovery_mdns_avahi.c
#	src/server/ua_services_attribute.c
#	src/server/ua_services_discovery.c
#	src/server/ua_services_monitoreditem.c
#	src/server/ua_services_nodemanagement.c
#	src/server/ua_subscription.c
#	src/server/ua_subscription.h
#	src/server/ua_subscription_alarms_conditions.c
#	src/server/ua_subscription_event.c
#	src/ua_types_encoding_json_105.c
#	tests/client/check_activateSessionAsync.c
#	tests/server/check_local_monitored_item.c
#	tests/server/check_services_subscriptions.c
2026-09-03 14:33:21 +02:00
Julius Pfrommer cc6e95b261 fix(examples): avoid logging from new signal handlers
Apply the Powerlink signal-handler fix to executables added on 1.5. Keep the handlers limited to updating volatile run flags so an interrupted logger cannot deadlock on its own lock.
2026-09-02 16:11:55 +02:00
Julius Pfrommer c2423a2897 Merge remote-tracking branch 'origin/1.4' into merge_14_15
# Conflicts:
#	CMakeLists.txt
#	examples/nodeset/server_nodeset_powerlink.c
#	src/server/ua_services_discovery.c
#	src/ua_securechannel_crypto.c
#	src/ua_types.c
#	src/ua_types_encoding_binary.c
#	tests/check_securechannel.c
2026-09-02 16:08:44 +02:00
Julius Pfrommer 2264b266ab fix(examples): avoid logging from Powerlink signal handler
The Valgrind harness can deliver SIGINT while another log call holds the stdout logger spinlock. Logging from the raw signal handler then waits forever because the interrupted thread cannot release the lock.\n\nKeep the handler limited to updating the volatile run flag. Preserve graceful handling of both SIGINT and SIGTERM.
2026-09-01 17:36:06 +02:00
StalderT 1ff817e624 feat(examples): add a reconnecting subscription client
A non-blocking client that recovers on its own from a server shutdown/restart and from a hung server (detected through the subscription inactivity callback), re-creating the subscription on every activated session.
2026-09-01 00:49:08 +02:00
StalderT f3c0575b2f fix(examples): connect the client in client_subscription_loop
Commit 8a34b4d7e replaced the connect-in-loop with UA_Client_runUntilInterrupt but dropped the connect call. runUntilInterrupt does not connect on its own (see its documentation), so the example stopped connecting to the server. Re-add the async connect.
2026-09-01 00:49:08 +02:00
Etienne Rossignon a587ee6f9b fix(ex): guard removeDeprecatedSecurityPolicies with UA_ENABLE_ENCRYPTION preprocessor flag
Guards the definition of removeDeprecatedSecurityPolicies() with '#ifdef UA_ENABLE_ENCRYPTION' to prevent unused-function compiler warnings/errors on builds without encryption support.
2026-08-29 12:45:48 +02:00
Etienne Rossignon 0536b28367 refactor(ex): move logging and policy filtering to separate static utility functions
Refactors main() in ci_server.c by extracting the dynamic logging configuration and deprecated security policy filtering into clean, static helper methods.
2026-08-29 12:45:48 +02:00
Etienne Rossignon 721ea409fa feat(ex): remove deprecated Basic128Rsa15 and Basic256 endpoints and policies
Excludes formally deprecated Basic128Rsa15 and Basic256 security policies and endpoints from our example server config, preventing inconsistency with rotated certificates.
2026-08-29 12:45:48 +02:00
Etienne Rossignon 201cb22037 feat(ex): allow configuring log level via UA_LOG_LEVEL env variable
Allows setting the server's minimum logging level at runtime using the UA_LOG_LEVEL environment variable (e.g. TRACE, DEBUG, INFO).
2026-08-29 12:45:48 +02:00
Etienne Rossignon 4675dec18a feat(ex): add persistent RBAC role serialization and loading to ci_server
Implements binary role serialization, file persistence, and automatic reload on startup in 'examples/ci_server.c' so that configured RBAC rules can survive container restarts.
2026-08-29 12:45:48 +02:00
Julius Pfrommer c698eaf2eb refactor: add missing o6 Automation copyright headers 2026-08-17 22:17:22 +02:00
Julius Pfrommer f3c2842a89 feat(client): add OPC UA HTTP transports 2026-08-17 15:19:52 +02:00
Julius Pfrommer aaa338347b feat(server): wire OPC UA HTTP transport 2026-08-17 15:19:52 +02:00
Julius Pfrommer 112cc8fdfd feat(arch): extend and harden HTTP connection manager 2026-08-17 15:19:52 +02:00
Julius Pfrommer 56f4d0272f refactor(examples): drop mbedTLS version dependency 2026-08-12 05:44:46 +02:00
Julius Pfrommer b9bfc6e653 feat(server): Optionally copy methods into object instances
Add an opt-in server setting that materializes Method declarations for each Object instance instead of sharing the ObjectType Method node. Per-instance Method nodes can then carry independent runtime state while the default behavior remains compatible.
2026-08-04 16:18:39 +02:00
Julius Pfrommer f99c02891e feat(server): Add early node constructors
Add global and type-specific lifecycle callbacks that run after defining references are installed but before mandatory children are instantiated. This lets applications precreate or customize children consistently for direct, namespace-zero and recursively instantiated nodes.
2026-08-04 16:18:39 +02:00
Julius Pfrommer 12c5e0fa50 feat(client): Support OPC UA Binary over WebSockets 2026-08-04 07:28:29 +02:00
Julius Pfrommer 5a0ddc7180 feat(server): Implement Websockets server driver 2026-08-04 07:28:29 +02:00
Julian Weiß ebde773474 feat(examples): add GLib EventLoop usage examples
Adds two standalone examples demonstrating UA_EventLoop_new_GLib:

- eventloop_glib_minimal.c: a bare EventLoop + TCP ConnectionManager
  (no UA_Server) driven entirely by g_main_loop_run(), echoing
  received bytes and firing a repeating open62541 timer to show that
  both sockets and timers are serviced by the same GLib iteration.

- eventloop_glib_server.c: a full UA_Server plugged into the GLib
  EventLoop by presetting UA_ServerConfig.eventLoop (with a
  registered TCP ConnectionManager) before UA_ServerConfig_setMinimal
  runs, so the config helper reuses it instead of creating its own
  POSIX EventLoop. UA_Server_run_iterate() is never called; the whole
  SecureChannel/Session/Subscription lifecycle is serviced by
  g_main_loop_run().

Neither example is wired into examples/CMakeLists.txt yet.

Claude-Session: https://claude.ai/code/session_01M4bVsYckhSnWQSP1kkHV52
2026-08-03 20:22:20 +02:00
Julius Pfrommer 41942b9a1b feat(arch): Add CertificateGroup to connection manager (for websockets and MQTT) 2026-07-23 15:01:50 +02:00
Noel Graf afd779f365 feat(examples): Add HTTP ConnectionManager examples 2026-07-21 20:22:09 +02:00
Julius Pfrommer 5e8066cf95 feat(server): Documentation and examples for the model change events 2026-07-18 09:45:45 +02:00
Julius Pfrommer 93d7097a8d refactor(build): Update build options for the new driver structure 2026-07-05 23:46:24 +02:00
Julius Pfrommer 042623af07 refactor(driver): Make the A&C driver independent from server internals 2026-07-05 23:46:24 +02:00
Julius Pfrommer e995ebd227 refactor(server): Move A&C into the /drivers folder 2026-07-05 23:46:24 +02:00
Julius Pfrommer 316093c01b refactor(drivers): Rework the mDNS plugins into drivers with their own lifecycle 2026-07-05 23:46:24 +02:00
Julius Pfrommer 575e5d97da refactor(server): Manage the RegisteredServers and ServersOnNetwork for Discovery via the public API 2026-07-05 23:46:24 +02:00
Julius Pfrommer c84e43dcac Merge remote-tracking branch 'origin/1.5' into merge_15_master 2026-06-11 08:31:22 +02:00
Julius Pfrommer a58d6998c7 refactor(examples): Add note about NodeId string memory in browse example
Add a comment to the BrowseRequest example warning users not to use
UA_NODEID_STRING when the NodeId will be cleared by
UA_BrowseRequest_clear, since clearing will try to free the string
memory. Use UA_NODEID_STRING_ALLOC or UA_NodeId_copy instead.

Fixes #6777
2026-06-04 18:30:53 +02:00
Thorsten Lannynd 12f122e16a fix(pubsub): Implicit declaration of pthread_create
Include header file, to fix error of implicit declaration of
pthread_create.

Signed-off-by: Thorsten Lannynd <t-lannynd@ti.com>
2026-05-16 04:06:21 +02:00
Thorsten Lannynd dc33c82dcb feat(examples): client: allow configurable server
* Enable a remote server URL to be provided as an argument.
* Default to localhost if no arguments are provided.

Signed-off-by: Jacob Stiffler <j-stiffler@ti.com>
Signed-off-by: Thorsten Lannynd <t-lannynd@ti.com>
2026-05-14 16:10:46 +02:00
Andreas Ebner 78e28f558c feat(server): namespace default role permissions, simplified rbac example, spec-correct permissiveness 2026-05-05 14:55:40 +02:00
Julius Pfrommer 30ae922aa6 Merge remote-tracking branch 'origin/1.5' into merge_15_master_7 2026-04-25 21:05:40 +02:00
Andreas Ebner c8aef667b1 test(sec): add ECC security policy unit tests 2026-04-19 17:57:52 -04:00
Andreas Ebner c33c20dac3 feat(sec): add ECC certificate generation and documentation 2026-04-19 17:57:52 -04:00
Julius Pfrommer 17ad51cca4 refactor(examples): Remove examples/events/client_eventfilter.c as we favor EventFilter parsing to manual setup 2026-04-17 22:54:45 -04:00
Julius Pfrommer 60aaf864e5 refactor(examples): Clean up examples/events/client_filter_queries.c 2026-04-17 22:54:45 -04:00
Julius Pfrommer f783c38106 refactor(examples): Cosmetic cleanup of examples/client.c 2026-04-17 22:54:45 -04:00
Julius Pfrommer 163cce5b43 refactor(examples): Clean up client_method_async.c 2026-04-17 22:54:45 -04:00
Julius Pfrommer 8a34b4d7e8 refactor(examples): Clean up client_subscription_loop.c 2026-04-17 22:54:45 -04:00