400 Commits

Author SHA1 Message Date
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
Julius Pfrommer aaa338347b feat(server): wire OPC UA HTTP transport 2026-08-17 15:19:52 +02:00
Franz Höpfinger 7a92ca4e3c feat(ws): Add plain opc.ws:// (non-TLS) WebSocket server support
Extend the WebSocket server driver to accept opc.ws:// URLs in addition
to opc.wss://, allowing plain (unencrypted) WebSocket connections without
requiring TLS certificates. TLS credentials are only checked and forwarded
when the configured URL uses the opc.wss:// scheme.

Changes:
- ua_server_ws.c: isWebSocketUrl() now matches both opc.ws:// and
  opc.wss://; add isSecureWebSocketUrl() helper; useSSL and TLS params
  are conditional on the URL scheme; default port is 4840 for opc.ws://
- ua_server.c: URL validation accepts opc.ws:// alongside opc.wss://;
  TLS certificate check only applies when an opc.wss:// URL is present
- ua_util.c: Register opc.ws:// as a valid OPC UA endpoint URL scheme


feat: decouple server-side WS transport wiring from UA_ENABLE_LWS

src/server/ua_server_ws.c only looks up a UA_ConnectionManager named
"websocket" in the EventLoop and drives it through the generic
UA_ConnectionManager interface (URL scheme detection, ServerUrls/
DiscoveryUrls handling) -- it has no libwebsockets dependency of its
own. It was nevertheless gated behind UA_ENABLE_LWS together with the
actual libwebsockets-based ConnectionManager, which requires
UA_ARCHITECTURE_POSIX.

Add a new, independent CMake option UA_ENABLE_WEBSOCKET_TRANSPORT that
enables only the generic driver wiring and the corresponding
UA_ServerConfig fields (webSocketEnabled, webSocketBufSize, ...).
UA_ENABLE_LWS still implies it, so POSIX/libwebsockets builds are
unaffected. This lets a non-POSIX platform provide its own "websocket"
UA_ConnectionManager (e.g. built on a native HTTP/WS stack) without
pulling in libwebsockets.
feat(ws): Always enable WebSocket transport in server core & add encryption mode configuration

- Decouple server-side WebSocket transport wiring from build options so it is always compiled into the server core.
- Make WebSocket transport opt-in via server.config.webSocketEnabled (defaults to false).
- Require a registered "websocket" protocol-provider (ConnectionManager) in EventLoop at startup when webSocketEnabled=true, failing with UA_STATUSCODE_BADCONFIGURATIONERROR if missing.
- Add UA_WebSocketEncryptionMode enum (OPTIONAL, REQUIRED, DISABLED) and webSocketAllowUnencrypted flag (defaults to false) to UA_ServerConfig to control unencrypted opc.ws:// endpoints.
- Log prominent startup warning (UA_LOG_WARNING) when unencrypted opc.ws:// is enabled, as it is non-standard.
- Recognize both opc.ws:// and opc.wss:// in GetEndpoints and assign correct transport profiles (ws-uasc-uabinary / wss-uasc-uabinary).
- Fix default port handling in addWebSocketDiscoveryUrls to prevent skipping DiscoveryUrls when ports are omitted.
- Support short URLs (e.g. opc.ws://a) in UA_parseEndpointUrl by checking per-scheme length.
- Add unit and integration tests covering startup checks, unencrypted opt-in, encryption modes, and short URL parsing.
2026-08-04 21:39:35 +02:00
Julius Pfrommer 78989097fb feat(docs): Add RBAC attributes to basics table 2026-08-01 09:39:06 +02:00
Andreas Ebner 57894109d7 fix(doc): guard \DeclareUnicodeCharacter so the lualatex PDF build works
The macro only exists under pdflatex; unguarded it fails the doc_upload workflow.
2026-07-19 09:31:57 +02:00
Julius Pfrommer f2fe9f6ea5 refactor(driver): Rename GDS-Receive to GDS-Receiver 2026-07-18 21:26:33 +02:00
Julius Pfrommer 31e4278ce0 refactor(driver): Move the GDS receive side into a driver 2026-07-18 21:26:33 +02:00
Julius Pfrommer d1daf3e15e feat(docs): Add a documentation section for the drivers 2026-07-05 23:46:24 +02:00
Julius Pfrommer 30e54cb171 refactor(doc): Remove outdated documentation entries 2026-07-05 23:46:24 +02:00
Julius Pfrommer 30cad06c4e refactor(server): Fold server_driver.h into server.h 2026-07-05 23:46:24 +02:00
Julius Pfrommer f2be8e700c Merge remote-tracking branch 'origin/1.5' into merge_15_master_4 2026-07-03 15:25:20 +02:00
Julius Pfrommer 0cd860c720 refactor(doc): Replace doc/opc-ua-overview.png with a clean version 2026-06-30 07:37:36 +02:00
Julius Pfrommer 9bf1ecc64b Merge remote-tracking branch 'origin/1.5' 2026-06-22 17:15:00 +02:00
Julius Pfrommer 8ac935e8ef refactor(doc): Add a central figure for the OPC UA Basics section; Rework OPC UA Basics 2026-06-22 13:07:29 +02:00
Julius Pfrommer 3251f5850d Merge remote-tracking branch 'origin/1.5' 2026-06-17 20:05:36 +02:00
Andreas Ebner e7f89a540f docs(security): restructure into top-level Security section 2026-06-15 20:56:26 +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 c4b088e93f breaking(server): Rename ServerComponent to Driver
This better expresses the intent why this is part of the public server API.
2026-06-07 16:46:24 +02:00
Niels Beier dc4427b604 docs(doc): add new logo and use lualatex engine for PDF builds 2026-05-29 06:43:07 +02:00
Niels Beier 5a14003fce fix(doc): use lualatex compiler for doc_pdf target 2026-05-29 06:43:07 +02:00
Niels Beier 91104bc20e fix(docs): enable sphinx.ext.graphviz extension 2026-05-26 19:50:44 +02:00
Julius Pfrommer c4555a16f0 Merge remote-tracking branch 'origin/1.5' into merge_14_15_7 2026-05-18 16:32:46 +02:00
Julius Pfrommer 764bd95107 refactor(doc): Remove dependency on Graphviz for the docs 2026-05-16 04:07:25 +02:00
Julius Pfrommer 8e1f2e9aa0 refactor(doc): Replace the Graphviz figure for the ReferenceTypes with ASCII art 2026-05-16 04:07:25 +02:00
Niels Beier 22b98c8c4a fix(docs): declare missing unicode characters 2026-04-30 13:04:41 +02:00
dependabot[bot] ba282faee6 build(deps): update sphinx requirement in /doc
Updates the requirements on [sphinx](https://github.com/sphinx-doc/sphinx) to permit the latest version.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v5.3.0...v9.1.0)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-version: 9.1.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-27 22:39:25 +02:00
dependabot[bot] dd388ecc35 build(deps): update sphinx-rtd-theme requirement in /doc
Updates the requirements on [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) to permit the latest version.
- [Changelog](https://github.com/readthedocs/sphinx_rtd_theme/blob/master/docs/changelog.rst)
- [Commits](https://github.com/readthedocs/sphinx_rtd_theme/compare/1.2.0...3.1.0)

---
updated-dependencies:
- dependency-name: sphinx-rtd-theme
  dependency-version: 3.1.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-27 12:52:10 +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 c33c20dac3 feat(sec): add ECC certificate generation and documentation 2026-04-19 17:57:52 -04:00
Moritz Bruder e41e2ca79d feature(client): Add JSON5 client configuration support
Add UA_Client_newFromFile() and UA_ClientConfig_loadFromFile() to create
and configure a client from a JSON5 configuration file.
2026-03-30 21:44:34 +02:00
Moritz Bruder 6441c636ac refactor(server): Refactor JSON5 server configuration support
Refactor the JSON5 configuration parser: replace the jump table dispatch
with direct function calls, improve error handling with early returns.

Move the public API (UA_Server_newFromFile, UA_ServerConfig_loadFromFile)
from the removed server_config_file_based.h into server.h. Add the
server_config_schema.json schema and update the example configuration.
2026-03-30 21:44:34 +02:00
Julius Pfrommer 0d9e4dc648 feat(server): Move ServerComponent into a public plugin API 2026-03-27 14:25:31 +01:00
Julius Pfrommer 3072153d3e Merge pull request #7921 from open62541/1.5
Merge 1.5 to master
2026-03-20 19:59:25 +01:00
Andreas Eckerstorfer d655cac8ea feat(docs): Add reference to external salsa repository for debian build (#7865) 2026-03-12 18:25:41 +01:00
vil02 a7b3d1cf72 fix(doc): update links to documentation
Continuation of #5684.
2026-03-10 21:00:28 +01:00
Julius Pfrommer 1715b26d80 Merge remote-tracking branch 'origin/1.5' into merge_15_master_4 2026-02-27 23:40:07 +01:00
Andreas Ebner 0e7b748260 feat(server): support 60+ companion spec models in nodeset injector 2026-02-27 09:05:53 +01:00
Julius Pfrommer 4f887b8fdd Merge pull request #7730 from open62541/1.5
Merge 1.5 to master
2026-02-13 09:34:13 +01:00
Julius Pfrommer 7d974e4d81 Merge remote-tracking branch 'origin/1.4' into merge_14_15_3 2026-02-02 21:35:07 +01:00
Julius Pfrommer bc39a9889e refactor(docs): Update the description of the "Standard Server" certification of v1.4 2026-02-02 20:57:54 +01:00
Julius Pfrommer 6331111a75 refactor(core): Remove the legacy JSON encoding (pre-1.05 spec) 2026-01-15 09:48:45 +01:00
Julius Pfrommer d58a3feac8 Merge pull request #7611 from open62541/1.5
Merge 1.5 to master
2026-01-02 19:38:43 +01:00
Julius Pfrommer 4cf4f7a4b2 refactor(core): Remove UA_ENABLE_PARSING config; always enable parsing features 2025-12-14 16:51:51 +01:00
dependabot[bot] 57bede9fa6 build(deps): update sphinx requirement in /doc
Updates the requirements on [sphinx](https://github.com/sphinx-doc/sphinx) to permit the latest version.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v5.3.0...v9.0.0)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-version: 9.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 18:04:02 +01:00
Julius Pfrommer 806882d3db fix(docs): Remove bogus entries in the attributes table 2025-07-10 07:52:44 +02:00
Julius Pfrommer c6a15e0815 feat(doc): Add ETFA Event Query Slides 2025-06-05 15:35:45 +02:00
Julius Pfrommer e5cd5ac428 Merge remote-tracking branch 'origin/master' into merge_14_master_27 2025-05-06 21:07:15 +02:00
Julius Pfrommer e371315be9 refactor(docs): Clean up the Nodeset compiler tutorial 2025-04-23 00:48:06 +02:00
Julius Pfrommer fe69fb7911 refactor(tools): Remove unsupported namespace map feature in open62541Macros.cmake 2025-04-23 00:48:06 +02:00