. * * @package LibreNMS * @link http://librenms.org * @copyright 2022 Tony Murray * @author Tony Murray */ namespace LibreNMS\Validations\Rrd; use LibreNMS\Config; use LibreNMS\Interfaces\Validation; use LibreNMS\ValidationResult; class CheckRrdcachedConnectivity implements Validation { /** * @inheritDoc */ public function validate(): ValidationResult { [$host,$port] = explode(':', Config::get('rrdcached')); if ($host == 'unix') { // Using socket, check that file exists if (! file_exists($port)) { return ValidationResult::fail(trans('validation.validations.rrd.CheckRrdcachedConnectivity.fail_socket', ['socket' => $port])); } } else { $connection = @fsockopen($host, (int) $port); if (is_resource($connection)) { fclose($connection); } else { return ValidationResult::fail(trans('validation.validations.rrd.CheckRrdcachedConnectivity.fail_port', ['port' => $port])); } } return ValidationResult::ok(trans('validation.validations.rrd.CheckRrdcachedConnectivity.ok')); } /** * @inheritDoc */ public function enabled(): bool { return (bool) Config::get('rrdcached'); } }