<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BobinkCOpcUa/tests/run_test.sh, branch master</title>
<subtitle>OPC UA applications in C</subtitle>
<id>http://git.tvcloud.fr/BobinkCOpcUa/atom/tests/run_test.sh?h=master</id>
<link rel='self' href='http://git.tvcloud.fr/BobinkCOpcUa/atom/tests/run_test.sh?h=master'/>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/'/>
<updated>2026-02-18T23:14:25Z</updated>
<entry>
<title>Rename client executable to bobink_opcua_client</title>
<updated>2026-02-18T23:14:25Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T23:14:25Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=a9ebc3b434b7979163fdf83984b32f1e513dacb8'/>
<id>urn:sha1:a9ebc3b434b7979163fdf83984b32f1e513dacb8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refactor: reduce duplication and tighten helpers</title>
<updated>2026-02-18T23:01:18Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T23:01:18Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=f3648fefe040152bb1676d651ebf7d836cb8ac9e'/>
<id>urn:sha1:f3648fefe040152bb1676d651ebf7d836cb8ac9e</id>
<content type='text'>
- Remove redundant applicationUri log in print_application_description
- Use UA_SECURITY_POLICY_NONE_URI macro instead of hardcoded string
- Extract _s_register_with_lds / _s_deregister_from_lds helpers
- Rename signal handler param 'sign' to 'sig' for consistency
- Add INT_MIN/INT_MAX bounds check to config_require_int
- Extract shared test helpers into tests/test_helpers.sh
</content>
</entry>
<entry>
<title>Rename CMake project and executable targets</title>
<updated>2026-02-18T22:36:35Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T22:36:35Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=52727a053c45f8d6c634d405742c3289a0be1f78'/>
<id>urn:sha1:52727a053c45f8d6c634d405742c3289a0be1f78</id>
<content type='text'>
Project: OpcUaC → BobinkOpcUaC
Targets: ServerLDS → bobink_opcua_discovery_server,
         ServerRegister → bobink_opcua_server,
         Client → client
</content>
</entry>
<entry>
<title>Move certificates into per-test directories</title>
<updated>2026-02-18T21:32:08Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T21:30:06Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=5f5e172cd2392952162398c85b07e6f6b7e69398'/>
<id>urn:sha1:5f5e172cd2392952162398c85b07e6f6b7e69398</id>
<content type='text'>
Each secure test now has its own certs/ subfolder with per-identity
subdirectories and a single shared trust store.  Configs reference
paths relative to the project root (e.g. tests/secure_anonymous/
certs/ServerLDS/cert.der).  Cert generation logic removed from test
scripts since certs are now pre-generated and committed.
</content>
</entry>
<entry>
<title>Make client/server encryption optional, rename tests to full names</title>
<updated>2026-02-18T14:39:29Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-18T14:39:29Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=99b5b4416193fafaa815746ea756900d2ab26917'/>
<id>urn:sha1:99b5b4416193fafaa815746ea756900d2ab26917</id>
<content type='text'>
Make encryption optional for both ServerRegister's LDS client
connection and the server side of ServerLDS/ServerRegister: when
certificate, privateKey, and trustStore are omitted the programs
run with SecurityPolicy#None only.  Secure servers also add a
discovery-only None endpoint so unencrypted clients can still call
FindServers and GetEndpoints.

Consolidate tests from 5 policy-specific cases (nosec_anon,
none_user, basic256sha256_anon, aes256_anon, aes128_user) down to
3 that cover the important axes: unsecure_anonymous,
secure_anonymous, secure_user.  Rename directories to use full
names.  Auto-generate certificates and trust stores in run_test.sh.

Update readme and CLAUDE.md to reflect the current program
interface (unified Client binary, split ServerRegister configs)
and the new test names.
</content>
</entry>
<entry>
<title>Update certificate generation: keep intermediate files, fix URI format</title>
<updated>2026-02-17T21:44:44Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-17T21:30:28Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=229a536a87f6b2075000e659219e0567b45345c5'/>
<id>urn:sha1:229a536a87f6b2075000e659219e0567b45345c5</id>
<content type='text'>
Stop deleting intermediate PEM and CNF files so they can be reused.
Change default application URI from urn:bobink.&lt;name&gt; to
urn:localhost:bobink:&lt;name&gt; to follow proper URN syntax (Qt OPC UA
rejects the dotted format). Update all config files and test configs
to use the new URI format.
</content>
</entry>
<entry>
<title>Replace ClientFindServers with unified Client, use trust store directories</title>
<updated>2026-02-17T18:06:22Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-17T18:06:22Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=827e90e0daabe32e058e08dd2a253425898a7e7a'/>
<id>urn:sha1:827e90e0daabe32e058e08dd2a253425898a7e7a</id>
<content type='text'>
Replace the single-purpose ClientFindServers program with a unified Client
that supports three operations via CLI: find-servers, get-endpoints, and
read-time.  This simplifies the architecture by using one client binary with
a single config file instead of a monolithic program that did everything in
one run.

Split the ServerRegister config into separate server and client config files
so the LDS-registration credentials are isolated from the server's own
settings.  The discovery URL moves from config to a CLI argument.

Replace repeated trustList config entries with a single trustStore directory
path.  Each program now points to a directory under certs/trust/ containing
.der files, so adding or removing trust is a file-copy operation rather than
editing every config file.  Add loadTrustStore()/freeTrustStore() to
common.c and remove the now-unused configGetAll() from the config parser.

Simplify the test matrix from 6 to 4 cases (security and auth are
orthogonal, so the full 3x2 matrix is unnecessary).  Update run_test.sh to
invoke the new Client three times and use port-polling instead of sleep.
</content>
</entry>
<entry>
<title>Add configurable log level as optional CLI argument</title>
<updated>2026-02-17T10:57:52Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-17T10:57:52Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=48a9df043df64887cb99e03d7613379c947d11d8'/>
<id>urn:sha1:48a9df043df64887cb99e03d7613379c947d11d8</id>
<content type='text'>
All three programs now accept an optional second argument [log-level]
(trace, debug, info, warning, error, fatal) defaulting to info. The
level is applied by setting the logger context pointer directly,
avoiding a memory leak that would occur from overwriting the
heap-allocated logger struct. Also documents the ASan leak-check
workflow in CLAUDE.md.
</content>
</entry>
<entry>
<title>Replace CLI arguments with config-file parser and add integration tests</title>
<updated>2026-02-17T10:07:37Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-02-17T10:07:37Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/BobinkCOpcUa/commit/?id=a54421dd976fd8081e96c11c2621076876c9986b'/>
<id>urn:sha1:a54421dd976fd8081e96c11c2621076876c9986b</id>
<content type='text'>
Introduce a reusable key=value config parser (config.h/c) and convert
all three programs to read their settings from config files instead of
positional command-line arguments.  Add example config files in config/
and 6 CTest integration tests covering None/Basic256Sha256/Aes128 with
anonymous and user authentication.  Remove the now-obsolete launch.sh.
</content>
</entry>
</feed>
