. * * @package LibreNMS * @link http://librenms.org * @copyright 2022 Tony Murray * @author Tony Murray */ namespace LibreNMS\Validations\Database; use Carbon\Carbon; use Carbon\CarbonInterval; use LibreNMS\DB\Eloquent; use LibreNMS\Interfaces\Validation; use LibreNMS\ValidationResult; class CheckSqlServerTime implements Validation { /** * @inheritDoc */ public function validate(): ValidationResult { $raw_time = Eloquent::DB()->selectOne('SELECT NOW() as time')->time; $db_time = new Carbon($raw_time); $php_time = Carbon::now(); $diff = $db_time->diffAsCarbonInterval($php_time); if ($diff->compare(CarbonInterval::minute(1)) > 0) { $message = "Time between this server and the mysql database is off\n Mysql time :mysql_time\n PHP time :php_time"; $message .= ' Mysql time ' . $db_time->toDateTimeString() . PHP_EOL; $message .= ' PHP time ' . $php_time->toDateTimeString() . PHP_EOL; return ValidationResult::fail(trans('validation.validations.database.CheckSqlServerTime.fail', [ 'mysql_time' => $db_time->toDateTimeString(), 'php_time' => $php_time->toDateTimeString(), ])); } return ValidationResult::ok(trans('validation.validations.database.CheckSqlServerTime.ok')); } /** * @inheritDoc */ public function enabled(): bool { return Eloquent::isConnected(); } }