From 5eb3446908946206bc8d7f1fb557cca5aeb07ae2 Mon Sep 17 00:00:00 2001 From: Peter Knut Date: Sun, 10 Nov 2024 21:57:12 +0100 Subject: [PATCH] MSSQL: Allow to set Encrypt and TrustServerCertificate with AdminerLoginSsl plugin (issue #5) https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/connection-string-syntax#use-trustservercertificate --- adminer/drivers/mssql.inc.php | 9 ++++++++- adminer/plugin.php | 10 +++++----- plugins/login-ssl.php | 5 ++++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/adminer/drivers/mssql.inc.php b/adminer/drivers/mssql.inc.php index 06288231..34752629 100644 --- a/adminer/drivers/mssql.inc.php +++ b/adminer/drivers/mssql.inc.php @@ -24,8 +24,15 @@ if (isset($_GET["mssql"])) { function connect($server, $username, $password) { global $adminer; - $db = $adminer->database(); $connection_info = array("UID" => $username, "PWD" => $password, "CharacterSet" => "UTF-8"); + $ssl = $adminer->connectSsl(); + if (isset($ssl["Encrypt"])) { + $connection_info["Encrypt"] = $ssl["Encrypt"]; + } + if (isset($ssl["TrustServerCertificate"])) { + $connection_info["TrustServerCertificate"] = $ssl["TrustServerCertificate"]; + } + $db = $adminer->database(); if ($db != "") { $connection_info["Database"] = $db; } diff --git a/adminer/plugin.php b/adminer/plugin.php index 3470d772..345a6f29 100644 --- a/adminer/plugin.php +++ b/adminer/plugin.php @@ -2,15 +2,15 @@ function adminer_object() { // required to run any plugin include_once "../plugins/plugin.php"; - + // autoloader foreach (glob("../plugins/*.php") as $filename) { include_once $filename; } - + // enable extra drivers just by including them //~ include "../plugins/drivers/simpledb.php"; - + $plugins = array( // specify enabled plugins here new AdminerDatabaseHide(array('information_schema')), @@ -32,13 +32,13 @@ function adminer_object() { new AdminerTablesFilter, new AdminerEditForeign, ); - + /* It is possible to combine customization and plugins: class AdminerCustomization extends AdminerPlugin { } return new AdminerCustomization($plugins); */ - + return new AdminerPlugin($plugins); } diff --git a/plugins/login-ssl.php b/plugins/login-ssl.php index 2c30ed46..d7d994f4 100644 --- a/plugins/login-ssl.php +++ b/plugins/login-ssl.php @@ -11,7 +11,10 @@ class AdminerLoginSsl { var $ssl; /** - * @param array MySQL: ["key" => filename, "cert" => filename, "ca" => filename, "verify" => bool], PostgresSQL: ["mode" => sslmode] + * @param array + * MySQL: ["key" => filename, "cert" => filename, "ca" => filename, "verify" => bool] + * PostgresSQL: ["mode" => sslmode] (https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-SSLMODE) + * MSSQL: ["Encrypt" => true, "TrustServerCertificate" => true] (https://learn.microsoft.com/en-us/sql/connect/php/connection-options) */ function __construct($ssl) { $this->ssl = $ssl;