aboutsummaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-02-17 19:06:22 +0100
committerThomas Vanbesien <tvanbesi@proton.me>2026-02-17 19:06:22 +0100
commit827e90e0daabe32e058e08dd2a253425898a7e7a (patch)
treeecd3f31da63890ac029b7929eade88f38e078b3d /CMakeLists.txt
parente4ba24b3d24fdce36bc9dbd3c2c8f00b0ec23335 (diff)
downloadBobinkCOpcUa-827e90e0daabe32e058e08dd2a253425898a7e7a.tar.gz
BobinkCOpcUa-827e90e0daabe32e058e08dd2a253425898a7e7a.zip
Replace ClientFindServers with unified Client, use trust store directories
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.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt18
1 files changed, 8 insertions, 10 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f126d30..ab6f4fd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,8 +4,7 @@
#
# Builds three programs that demonstrate OPC UA discovery. ServerLDS runs a
# Local Discovery Server. ServerRegister periodically registers itself with the
-# LDS. ClientFindServers queries the LDS for registered servers and their
-# endpoints.
+# LDS. Client queries servers for discovery info, endpoints, or current time.
#
# All programs link against DiscoveryCommon (shared helpers and config parser)
# which in turn depends on open62541.
@@ -27,9 +26,9 @@ include(cmake/BuildDeps.cmake)
add_library(DiscoveryCommon STATIC src/common.c src/config.c)
target_link_libraries(DiscoveryCommon open62541::open62541)
-# Queries the LDS for registered servers and their endpoints.
-add_executable(ClientFindServers src/client_find_servers.c)
-target_link_libraries(ClientFindServers DiscoveryCommon)
+# Unified client: find-servers, get-endpoints, read-time.
+add_executable(Client src/client.c)
+target_link_libraries(Client DiscoveryCommon)
# Runs the Local Discovery Server that other servers register with.
add_executable(ServerLDS src/server_lds.c)
@@ -61,17 +60,16 @@ endif()
# Each test exercises a combination of security mode/policy and authentication
# method. _test_names and _test_policies are parallel lists: the Nth name uses
# the Nth policy. Each name corresponds to a config directory under tests/
-# containing server_lds.conf, server_register.conf, client_find_servers.conf.
+# containing server_lds.conf, server_register.conf, server_register_client.conf,
+# client.conf.
enable_testing()
set(_test_script "${CMAKE_SOURCE_DIR}/tests/run_test.sh")
-set(_test_names none_anon none_user basic256sha256_anon basic256sha256_user
- aes128_anon aes128_user)
+set(_test_names none_anon none_user basic256sha256_anon aes128_user)
-set(_test_policies None None Basic256Sha256 Basic256Sha256
- Aes128_Sha256_RsaOaep Aes128_Sha256_RsaOaep)
+set(_test_policies None None Basic256Sha256 Aes128_Sha256_RsaOaep)
foreach(_name _policy IN ZIP_LISTS _test_names _test_policies)
add_test(NAME "${_name}" COMMAND bash "${_test_script}" "tests/${_name}"