Source
<?php
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
/**
* Class is used to validate if given string is valid HashiCorp Vault secret.
*
* Valid token must match format:
* - <namespace>/<path/to/secret>:<key>
* - <namespace>/<path/to/secret>
* - <path/to/secret>:<key>
* - <path/to/secret>
*
* Multibyte strings are supported.
*/
class CVaultSecretParser extends CParser {
private $options = [
'provider' => ZBX_VAULT_TYPE_UNKNOWN,
'with_namespace' => false,
'with_key' => true
];
private $cyberark_has_appid = true;
private $cyberark_has_key = true;
/**
* @param array $options
* @param int $options['provider'] Vault provider.
* @param bool $options['with_namespace'] (optional) Validated string must contain namespace. Only for HashiCorp.
* @param bool $options['with_key'] (optional) Validated string must contain key.
*/
public function __construct(array $options = []) {
$this->options = $options + $this->options;
}
/**
* @inheritDoc
*/
public function parse($source, $pos = 0) {
switch ($this->options['provider']) {
case ZBX_VAULT_TYPE_HASHICORP:
return $this->parseHashiCorp($source, $pos);
case ZBX_VAULT_TYPE_CYBERARK:
return $this->parseCyberArk($source, $pos);
default:
return self::PARSE_FAIL;
}
}