[v4.7.0] Rename global variable to vault and improve capabilities
Added
Vault: rename global variable system to vault with native JSON storage.
- New REST API endpoints:
/admin/v1/vault,/admin/v1/vault/schema,/admin/v1/vault/<key>/wait. - New CLI flag:
--vault(replaces--global-variable). - Native JSON values: vault entries store
nlohmann::jsoninstead of plain strings. - Path navigation:
vault.KEY./json/pointer/pathsyntax for partial reads and writes. - Blocking wait endpoint:
GET /admin/v1/vault/<key>/waitwith long-poll support. - New helpers:
vault(),vault_schema(),wait_vault(). - Kata cleanup:
h2agent_server_configuration()now also clears vault state between exercises.
Health endpoint: GET /admin/v1/health for Kubernetes liveness/readiness probes.
Helm probes updated to use exec curl --http2-prior-knowledge (fixes HTTP/2-only server).
onFilterFail: conditional branching in transforms. Each transform with a filter
can now include an onFilterFail array of full transforms that execute when the
filter condition fails. Supports recursive nesting for if/else-if/else trees.
Source/target error diagnostics: unrecognized source or target specs now log
the invalid value and all valid prefixes, instead of failing silently.
Concurrency and fuzzing CTs: concurrent vault writes, concurrent traffic,
schema validation edge cases, unicode handling, large objects.
New UTs for vault JSON types, loadAtPath, jsonToString, path navigation,
and onFilterFail (including nested recursion).
Changed
Skip api-name/version flags when empty.
Move optimization: Vault::load() now has a move overload to avoid
copying local JSON temporals.
Documentation: var/vault type conversion table, onFilterFail examples,
TechnicalDebtAndImprovements.md trimmed to essential items.
Fixed
Helm deployment.yaml: duplicated livenessProbe replaced with proper
liveness + readiness probes. Removed dependency on traffic port
(which may be 0 in client-only mode).
Kata pre-commit hook: fixed substring match that blocked .enc file commits.
Kata cleanup: h2agent_server_configuration() now clears vault state.
CT cleanup: added admin_cleanup() to files_operation and sockets_operation.
Breaking
globalVartransform prefix renamed tovault(e.g.globalVar.myKey→vault.myKey).- REST endpoints renamed:
/admin/v1/global-variable→/admin/v1/vault. - CLI flag renamed:
--global-variable→--vault. - C++ class renamed:
GlobalVariable→Vault. - Vault values are now JSON: GET responses return
.dump()output (strings are quoted). - Schema change: dot characters are no longer allowed in vault key names.
- RegexCapture on vault target now stores a single JSON object
{"0":"full","1":"group1",...}instead of separate dotted keys.
Docker images
https://github.com/users/testillano/packages/container/package/h2agent
https://github.com/users/testillano/packages/container/package/h2agent_builder
https://github.com/users/testillano/packages/container/package/h2agent_training