From 791ad48e2e2207021c9fccff11624c37797ff443 Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Mon, 5 Aug 2019 22:45:37 +0100 Subject: [PATCH 1/5] initial commit --- .../com_admin/Model/SysinfoModel.php | 21 ++--- .../com_admin/tmpl/sysinfo/default_system.php | 8 ++ .../com_config/forms/application.xml | 78 +++++++++++++++++++ libraries/src/Factory.php | 18 +++++ libraries/src/Service/Provider/Database.php | 18 +++++ .../debug/DataCollector/InfoCollector.php | 1 + 6 files changed, 134 insertions(+), 10 deletions(-) diff --git a/administrator/components/com_admin/Model/SysinfoModel.php b/administrator/components/com_admin/Model/SysinfoModel.php index e699a022a9e10..9e2ce9ec7737d 100644 --- a/administrator/components/com_admin/Model/SysinfoModel.php +++ b/administrator/components/com_admin/Model/SysinfoModel.php @@ -308,16 +308,17 @@ public function &getInfo() $db = $this->getDbo(); $this->info = array( - 'php' => php_uname(), - 'dbserver' => $db->getServerType(), - 'dbversion' => $db->getVersion(), - 'dbcollation' => $db->getCollation(), - 'dbconnectioncollation' => $db->getConnectionCollation(), - 'phpversion' => PHP_VERSION, - 'server' => $_SERVER['SERVER_SOFTWARE'] ?? getenv('SERVER_SOFTWARE'), - 'sapi_name' => PHP_SAPI, - 'version' => (new Version)->getLongVersion(), - 'useragent' => $_SERVER['HTTP_USER_AGENT'] ?? '', + 'php' => php_uname(), + 'dbserver' => $db->getServerType(), + 'dbversion' => $db->getVersion(), + 'dbcollation' => $db->getCollation(), + 'dbconnectioncollation' => $db->getConnectionCollation(), + 'dbconnectionencryption' => $db->getConnectionEncryption(), + 'phpversion' => PHP_VERSION, + 'server' => $_SERVER['SERVER_SOFTWARE'] ?? getenv('SERVER_SOFTWARE'), + 'sapi_name' => PHP_SAPI, + 'version' => (new Version)->getLongVersion(), + 'useragent' => $_SERVER['HTTP_USER_AGENT'] ?? '', ); return $this->info; diff --git a/administrator/components/com_admin/tmpl/sysinfo/default_system.php b/administrator/components/com_admin/tmpl/sysinfo/default_system.php index b5b787cf6e576..a6333370cc6e8 100644 --- a/administrator/components/com_admin/tmpl/sysinfo/default_system.php +++ b/administrator/components/com_admin/tmpl/sysinfo/default_system.php @@ -71,6 +71,14 @@ info['dbconnectioncollation']; ?> + + + + + + info['dbconnectionencryption']; ?> + + diff --git a/administrator/components/com_config/forms/application.xml b/administrator/components/com_config/forms/application.xml index 41b0ef68efb98..7d13085c7835b 100644 --- a/administrator/components/com_config/forms/application.xml +++ b/administrator/components/com_config/forms/application.xml @@ -231,6 +231,84 @@ size="10" /> + + + + + + + + + + + + + + + + + + + + +
$driver, 'host' => $host, 'user' => $user, 'password' => $password, 'database' => $database, 'prefix' => $prefix); + if ((int) $conf->get('dbencryption') !== 0) + { + $options['ssl'] = [ + 'enable' => true, + 'verify_server_cert' => (bool) $conf->get('dbsslverifyservercert'), + ]; + + foreach (['cipher', 'ca', 'capath', 'key', 'cert'] as $key => $value) + { + $confVal = trim($conf->get('dbssl' . $value, '')); + + if ($confVal !== '') + { + $options['ssl'][$value] = $confVal; + } + } + } + try { $db = DatabaseDriver::getInstance($options); diff --git a/libraries/src/Service/Provider/Database.php b/libraries/src/Service/Provider/Database.php index b1fd953b9b50f..ab169b62e58b0 100644 --- a/libraries/src/Service/Provider/Database.php +++ b/libraries/src/Service/Provider/Database.php @@ -90,6 +90,24 @@ function (Container $container) 'prefix' => $conf->get('dbprefix'), ]; + if ((int) $conf->get('dbencryption') !== 0) + { + $options['ssl'] = [ + 'enable' => true, + 'verify_server_cert' => (bool) $conf->get('dbsslverifyservercert'), + ]; + + foreach (['cipher', 'ca', 'capath', 'key', 'cert'] as $key => $value) + { + $confVal = trim($conf->get('dbssl' . $value, '')); + + if ($confVal !== '') + { + $options['ssl'][$value] = $confVal; + } + } + } + // Enable utf8mb4 connections for mysql adapters if (strtolower($dbtype) === 'mysqli') { diff --git a/plugins/system/debug/DataCollector/InfoCollector.php b/plugins/system/debug/DataCollector/InfoCollector.php index d258b7df7a524..7004bbf53ca56 100644 --- a/plugins/system/debug/DataCollector/InfoCollector.php +++ b/plugins/system/debug/DataCollector/InfoCollector.php @@ -206,6 +206,7 @@ private function getDatabaseInfo(array $info): array 'dbversion' => $info['dbversion'] ?? '', 'dbcollation' => $info['dbcollation'] ?? '', 'dbconnectioncollation' => $info['dbconnectioncollation'] ?? '', + 'dbconnectionencryption' => $info['dbconnectionencryption'] ?? '', ]; } } From 68022384e33fcf6c275d1b1286990e0063d97b4d Mon Sep 17 00:00:00 2001 From: andrepereiradasilva Date: Mon, 5 Aug 2019 23:19:35 +0100 Subject: [PATCH 2/5] language strings - some --- .../components/com_config/forms/application.xml | 10 +++++----- .../language/en-GB/en-GB.com_admin.ini | 1 + .../language/en-GB/en-GB.com_config.ini | 17 +++++++++++++++++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/administrator/components/com_config/forms/application.xml b/administrator/components/com_config/forms/application.xml index 7d13085c7835b..8fcf70d2bdbdc 100644 --- a/administrator/components/com_config/forms/application.xml +++ b/administrator/components/com_config/forms/application.xml @@ -234,15 +234,15 @@ - - - + + + Date: Mon, 5 Aug 2019 23:31:43 +0100 Subject: [PATCH 3/5] no switcher --- administrator/components/com_config/forms/application.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/administrator/components/com_config/forms/application.xml b/administrator/components/com_config/forms/application.xml index 8fcf70d2bdbdc..d4b3e390a6096 100644 --- a/administrator/components/com_config/forms/application.xml +++ b/administrator/components/com_config/forms/application.xml @@ -236,7 +236,6 @@ type="list" label="COM_CONFIG_FIELD_DATABASE_ENCRYPTION_ENABLE_LABEL" desc="COM_CONFIG_FIELD_DATABASE_ENCRYPTION_ENABLE_DESC" - class="switcher" default="0" filter="integer" > From 3acf74405b08bb2b7c4d613c386b38f76396a183 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Sun, 18 Aug 2019 15:44:20 +0200 Subject: [PATCH 4/5] Add isConnectionEncryptionSupported --- administrator/components/com_admin/Model/SysinfoModel.php | 1 + .../components/com_admin/tmpl/sysinfo/default_system.php | 8 ++++++++ administrator/language/en-GB/en-GB.com_admin.ini | 1 + plugins/system/debug/DataCollector/InfoCollector.php | 1 + 4 files changed, 11 insertions(+) diff --git a/administrator/components/com_admin/Model/SysinfoModel.php b/administrator/components/com_admin/Model/SysinfoModel.php index 9e2ce9ec7737d..35e73e996574f 100644 --- a/administrator/components/com_admin/Model/SysinfoModel.php +++ b/administrator/components/com_admin/Model/SysinfoModel.php @@ -314,6 +314,7 @@ public function &getInfo() 'dbcollation' => $db->getCollation(), 'dbconnectioncollation' => $db->getConnectionCollation(), 'dbconnectionencryption' => $db->getConnectionEncryption(), + 'dbconnencryptsupported' => $db->isConnectionEncryptionSupported(), 'phpversion' => PHP_VERSION, 'server' => $_SERVER['SERVER_SOFTWARE'] ?? getenv('SERVER_SOFTWARE'), 'sapi_name' => PHP_SAPI, diff --git a/administrator/components/com_admin/tmpl/sysinfo/default_system.php b/administrator/components/com_admin/tmpl/sysinfo/default_system.php index a6333370cc6e8..5f3070036b85d 100644 --- a/administrator/components/com_admin/tmpl/sysinfo/default_system.php +++ b/administrator/components/com_admin/tmpl/sysinfo/default_system.php @@ -79,6 +79,14 @@ info['dbconnectionencryption']; ?> + + + + + + info['dbconnencryptsupported'] ? Text::_('JYES') : Text::_('JNO'); ?> + + diff --git a/administrator/language/en-GB/en-GB.com_admin.ini b/administrator/language/en-GB/en-GB.com_admin.ini index c54cf5a40e878..c29663f2bdabe 100644 --- a/administrator/language/en-GB/en-GB.com_admin.ini +++ b/administrator/language/en-GB/en-GB.com_admin.ini @@ -10,6 +10,7 @@ COM_ADMIN_CONFIGURATION_FILE="Configuration File" COM_ADMIN_DATABASE_COLLATION="Database Collation" COM_ADMIN_DATABASE_CONNECTION_COLLATION="Database Connection Collation" COM_ADMIN_DATABASE_CONNECTION_ENCRYPTION="Database Connection Encryption" +COM_ADMIN_DATABASE_CONNECTION_ENCRYPTION_SUPPORTED="Database Server Supports Connection Encryption" COM_ADMIN_DATABASE_TYPE="Database Type" COM_ADMIN_DATABASE_VERSION="Database Version" COM_ADMIN_DIRECTORY="Folder" diff --git a/plugins/system/debug/DataCollector/InfoCollector.php b/plugins/system/debug/DataCollector/InfoCollector.php index 7004bbf53ca56..ec43c4565c100 100644 --- a/plugins/system/debug/DataCollector/InfoCollector.php +++ b/plugins/system/debug/DataCollector/InfoCollector.php @@ -207,6 +207,7 @@ private function getDatabaseInfo(array $info): array 'dbcollation' => $info['dbcollation'] ?? '', 'dbconnectioncollation' => $info['dbconnectioncollation'] ?? '', 'dbconnectionencryption' => $info['dbconnectionencryption'] ?? '', + 'dbconnencryptsupported' => $info['dbconnencryptsupported'] ?? '', ]; } } From 45bf9b556137896cac1b5c09b14f249fa545cea9 Mon Sep 17 00:00:00 2001 From: Richard Fath Date: Sun, 18 Aug 2019 16:30:14 +0200 Subject: [PATCH 5/5] Show "None" if no encryption --- .../components/com_admin/tmpl/sysinfo/default_system.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/administrator/components/com_admin/tmpl/sysinfo/default_system.php b/administrator/components/com_admin/tmpl/sysinfo/default_system.php index 5f3070036b85d..91be5889302a6 100644 --- a/administrator/components/com_admin/tmpl/sysinfo/default_system.php +++ b/administrator/components/com_admin/tmpl/sysinfo/default_system.php @@ -76,7 +76,7 @@ - info['dbconnectionencryption']; ?> + info['dbconnectionencryption'] ?: Text::_('JNONE'); ?>