From 670f964e9886591c1727b5e9130a044ad40929d1 Mon Sep 17 00:00:00 2001 From: Jellyfrog Date: Fri, 29 Jul 2022 18:36:18 +0200 Subject: [PATCH] Validate: use "database version" instead of "mysql version" (#14158) * Validate: use "database version" instead of "mysql version" * wip * wip --- LibreNMS/Poller.php | 5 ++- LibreNMS/Util/Stats.php | 2 +- LibreNMS/Util/Version.php | 15 +++++++- .../Database/CheckDatabaseServerVersion.php | 34 +++++++++++-------- app/Http/Controllers/AboutController.php | 2 +- discovery.php | 2 +- doc/API/System.md | 2 +- includes/common.php | 2 +- poller.php | 2 +- resources/views/about/index.blade.php | 4 +-- validate.php | 2 +- 11 files changed, 44 insertions(+), 28 deletions(-) diff --git a/LibreNMS/Poller.php b/LibreNMS/Poller.php index ef1be0ca94..2efb225d93 100644 --- a/LibreNMS/Poller.php +++ b/LibreNMS/Poller.php @@ -43,7 +43,6 @@ use LibreNMS\Util\Debug; use LibreNMS\Util\Dns; use LibreNMS\Util\Git; use LibreNMS\Util\StringHelpers; -use LibreNMS\Util\Version; use Psr\Log\LoggerInterface; use Throwable; @@ -371,7 +370,7 @@ Commit SHA: %s Commit Date: %s DB Schema: %s PHP: %s -MySQL: %s +Database: %s RRDTool: %s SNMP: %s ================================== @@ -380,7 +379,7 @@ EOH, Git::localDate(), vsprintf('%s (%s)', $version->database()), phpversion(), - Version::get()->databaseServer(), + $version->databaseServer(), $version->rrdtool(), $version->netSnmp() )); diff --git a/LibreNMS/Util/Stats.php b/LibreNMS/Util/Stats.php index a31c833ac0..7559b71409 100644 --- a/LibreNMS/Util/Stats.php +++ b/LibreNMS/Util/Stats.php @@ -140,7 +140,7 @@ class Stats 'vminfo' => $this->selectTotal('vminfo', ['vm_type']), 'vmware' => $this->selectTotal('vminfo'), 'vrfs' => $this->selectTotal('vrfs'), - 'mysql_version' => $this->selectStatic($version->databaseServer()), + 'database_version' => $this->selectStatic($version->databaseServer()), 'php_version' => $this->selectStatic(phpversion()), 'python_version' => $this->selectStatic($version->python()), 'rrdtool_version' => $this->selectStatic($version->rrdtool()), diff --git a/LibreNMS/Util/Version.php b/LibreNMS/Util/Version.php index 2e0fc1ca20..decf6ff823 100644 --- a/LibreNMS/Util/Version.php +++ b/LibreNMS/Util/Version.php @@ -122,7 +122,20 @@ class Version public function databaseServer(): string { - return Eloquent::isConnected() ? Arr::first(DB::selectOne('select version()')) : 'Not Connected'; + if (! Eloquent::isConnected()) { + return 'Not Connected'; + } + + switch (Eloquent::getDriver()) { + case 'mysql': + $ret = Arr::first(DB::selectOne('select version()')); + + return (str_contains($ret, 'MariaDB') ? 'MariaDB ' : 'MySQL ') . $ret; + case 'sqlite': + return 'SQLite ' . Arr::first(DB::selectOne('select sqlite_version()')); + default: + return 'Unsupported: ' . Eloquent::getDriver(); + } } public function database(): array diff --git a/LibreNMS/Validations/Database/CheckDatabaseServerVersion.php b/LibreNMS/Validations/Database/CheckDatabaseServerVersion.php index 72d05475ee..1eb66af02a 100644 --- a/LibreNMS/Validations/Database/CheckDatabaseServerVersion.php +++ b/LibreNMS/Validations/Database/CheckDatabaseServerVersion.php @@ -39,22 +39,26 @@ class CheckDatabaseServerVersion implements Validation public function validate(): ValidationResult { $version = Version::get()->databaseServer(); - $version = explode('-', $version); + [$name, $version] = explode(' ', $version, 2); + [$version] = explode('-', $version, 2); - if (isset($version[1]) && $version[1] == 'MariaDB') { - if (version_compare($version[0], Database::MARIADB_MIN_VERSION, '<=')) { - return ValidationResult::fail( - trans('validation.validations.database.CheckDatabaseServerVersion.fail', ['server' => 'MariaDB', 'min' => Database::MARIADB_MIN_VERSION, 'date' => Database::MARIADB_MIN_VERSION_DATE]), - trans('validation.validations.database.CheckDatabaseServerVersion.fix', ['server' => 'MariaDB', 'suggested' => Database::MARIADB_RECOMMENDED_VERSION]), - ); - } - } else { - if (version_compare($version[0], Database::MYSQL_MIN_VERSION, '<=')) { - return ValidationResult::fail( - trans('validation.validations.database.CheckDatabaseServerVersion.fail', ['server' => 'MySQL', 'min' => Database::MYSQL_MIN_VERSION, 'date' => Database::MYSQL_MIN_VERSION_DATE]), - trans('validation.validations.database.CheckDatabaseServerVersion.fix', ['server' => 'MySQL', 'suggested' => Database::MYSQL_RECOMMENDED_VERSION]), - ); - } + switch ($name) { + case 'MariaDB': + if (version_compare($version, Database::MARIADB_MIN_VERSION, '<=')) { + return ValidationResult::fail( + trans('validation.validations.database.CheckDatabaseServerVersion.fail', ['server' => 'MariaDB', 'min' => Database::MARIADB_MIN_VERSION, 'date' => Database::MARIADB_MIN_VERSION_DATE]), + trans('validation.validations.database.CheckDatabaseServerVersion.fix', ['server' => 'MariaDB', 'suggested' => Database::MARIADB_RECOMMENDED_VERSION]), + ); + } + break; + case 'MySQL': + if (version_compare($version, Database::MYSQL_MIN_VERSION, '<=')) { + return ValidationResult::fail( + trans('validation.validations.database.CheckDatabaseServerVersion.fail', ['server' => 'MySQL', 'min' => Database::MYSQL_MIN_VERSION, 'date' => Database::MYSQL_MIN_VERSION_DATE]), + trans('validation.validations.database.CheckDatabaseServerVersion.fix', ['server' => 'MySQL', 'suggested' => Database::MYSQL_RECOMMENDED_VERSION]), + ); + } + break; } return ValidationResult::ok(trans('validation.validations.database.CheckDatabaseServerVersion.ok')); diff --git a/app/Http/Controllers/AboutController.php b/app/Http/Controllers/AboutController.php index 88a99bc44c..9059720aac 100644 --- a/app/Http/Controllers/AboutController.php +++ b/app/Http/Controllers/AboutController.php @@ -72,7 +72,7 @@ class AboutController extends Controller 'project_name' => Config::get('project_name'), 'version_local' => $version->local(), - 'version_mysql' => $version->databaseServer(), + 'version_database' => $version->databaseServer(), 'version_php' => phpversion(), 'version_laravel' => App::VERSION(), 'version_python' => $version->python(), diff --git a/discovery.php b/discovery.php index 78c049f06b..6e1e67ddef 100755 --- a/discovery.php +++ b/discovery.php @@ -72,7 +72,7 @@ Commit SHA: {$versions['local_sha']} Commit Date: {$versions['local_date']} DB Schema: {$versions['db_schema']} PHP: {$versions['php_ver']} -MySQL: {$versions['mysql_ver']} +Database: {$versions['database_ver']} RRDTool: {$versions['rrdtool_ver']} SNMP: {$versions['netsnmp_ver']} ================================== diff --git a/doc/API/System.md b/doc/API/System.md index b09bf14cf4..786cdbf7a5 100644 --- a/doc/API/System.md +++ b/doc/API/System.md @@ -27,7 +27,7 @@ Output: "local_branch": "master", "db_schema": 249, "php_ver": "7.2.2", - "mysql_ver": "5.5.56-MariaDB", + "database_ver": "MariaDB 5.5.56-MariaDB", "rrdtool_ver": "1.4.8", "netsnmp_ver": "NET-SNMP 5.7.2" } diff --git a/includes/common.php b/includes/common.php index d2c98aedc0..5bb22e1bd6 100644 --- a/includes/common.php +++ b/includes/common.php @@ -551,7 +551,7 @@ function version_info($remote = false) 'db_schema' => vsprintf('%s (%s)', $version->database()), 'php_ver' => phpversion(), 'python_ver' => $version->python(), - 'mysql_ver' => $version->databaseServer(), + 'database_ver' => $version->databaseServer(), 'rrdtool_ver' => $version->rrdtool(), 'netsnmp_ver' => $version->netSnmp(), ]; diff --git a/poller.php b/poller.php index 5ffbc6fb43..96a3db6169 100755 --- a/poller.php +++ b/poller.php @@ -107,7 +107,7 @@ Commit SHA: {$versions['local_sha']} Commit Date: {$versions['local_date']} DB Schema: {$versions['db_schema']} PHP: {$versions['php_ver']} -MySQL: {$versions['mysql_ver']} +Database: {$versions['database_ver']} RRDTool: {$versions['rrdtool_ver']} SNMP: {$versions['netsnmp_ver']} ================================== diff --git a/resources/views/about/index.blade.php b/resources/views/about/index.blade.php index 64b09e01d0..4a7555c154 100644 --- a/resources/views/about/index.blade.php +++ b/resources/views/about/index.blade.php @@ -47,8 +47,8 @@ {{ $version_python }} - {{ __('MySQL') }} - {{ $version_mysql }} + {{ __('Database') }} + {{ $version_database }} {{ __('Laravel') }} diff --git a/validate.php b/validate.php index 38d15d9a92..ceedc8e5b7 100755 --- a/validate.php +++ b/validate.php @@ -160,7 +160,7 @@ LibreNMS | ${versions['local_ver']} DB Schema | ${versions['db_schema']} PHP | ${versions['php_ver']} Python | ${versions['python_ver']} -MySQL | ${versions['mysql_ver']} +Database | ${versions['database_ver']} RRDTool | ${versions['rrdtool_ver']} SNMP | ${versions['netsnmp_ver']} ====================================