int zbx_vault_kvs_get(const char *path, zbx_kvs_t *kvs, const zbx_config_vault_t *config_vault, char **error)
#define ZBX_VAULT_TIMEOUT SEC_PER_MIN
typedef int (*zbx_vault_kvs_get_cb_t)(const char *vault_url, const char *token, const char *ssl_cert_file,
const char *ssl_key_file, const char *path, long timeout, zbx_kvs_t *kvs, char **error);
static zbx_vault_kvs_get_cb_t zbx_vault_kvs_get_cb;
static const char *zbx_vault_dbuser_key, *zbx_vault_dbpassword_key;
int zbx_vault_init(const zbx_config_vault_t *config_vault, char **error)
#define ZBX_HASHICORP_NAME "HashiCorp"
#define ZBX_HASHICORP_DBUSER_KEY "username"
#define ZBX_HASHICORP_DBPASSWORD_KEY "password"
#define ZBX_CYBERARK_NAME "CyberArk"
#define ZBX_CYBERARK_DBUSER_KEY "UserName"
#define ZBX_CYBERARK_DBPASSWORD_KEY "Content"
if (NULL == config_vault->name || '\0' == *(config_vault->name) || 0 == strcmp(config_vault->name,
if (NULL == config_vault->token && 0 == zbx_strcmp_null(config_vault->name, ZBX_HASHICORP_NAME))
*error = zbx_dsprintf(*error, "\"Vault\" value \"%s\" requires \"VaultToken\" configuration"
" parameter or \"VAULT_TOKEN\" environment variable", config_vault->name);
zbx_vault_kvs_get_cb = zbx_hashicorp_kvs_get;
zbx_vault_dbuser_key = ZBX_HASHICORP_DBUSER_KEY;
zbx_vault_dbpassword_key = ZBX_HASHICORP_DBPASSWORD_KEY;
else if (0 == strcmp(config_vault->name, ZBX_CYBERARK_NAME))
if (NULL != config_vault->token)
*error = zbx_dsprintf(*error, "\"Vault\" value \"%s\" cannot be used when \"VaultToken\""
" configuration parameter or \"VAULT_TOKEN\" environment variable is defined",