From 6508d0c5b766fe56e96741a61ab7a1ece4191f2d Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Fri, 17 May 2013 12:09:10 -0400
Subject: [PATCH] - Possible Fix for: FS#2918 - multiserver - remote access db passwd not changed , when changed access from IP to % and vice versa
---
server/plugins-available/mysql_clientdb_plugin.inc.php | 2 ++
interface/web/sites/database_user_edit.php | 2 +-
interface/web/sites/database_user_del.php | 7 ++++++-
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/interface/web/sites/database_user_del.php b/interface/web/sites/database_user_del.php
index 9abcfd1..b4db986 100644
--- a/interface/web/sites/database_user_del.php
+++ b/interface/web/sites/database_user_del.php
@@ -53,7 +53,12 @@
if($app->tform->checkPerm($this->id,'d') == false) $app->error($app->lng('error_no_delete_permission'));
$old_record = $app->tform->getDataRecord($this->id);
- $app->db->datalogDelete('web_database_user', 'database_user_id', $this->id);
+
+ /* we cannot use datalogDelete here, as we need to set server_id to 0 */
+ $this->query("DELETE FROM `web_database_user` WHERE $index_field = '$index_value'");
+ $new_rec = array();
+ $old_record['server_id'] = 0;
+ $this->datalogSave('web_database_user', 'DELETE', 'database_user_id', $this->id, $old_record, $new_rec);
}
function onAfterDelete() { // this has to be done on AFTER delete, because we need the db user still in the database when the server plugin processes the datalog
diff --git a/interface/web/sites/database_user_edit.php b/interface/web/sites/database_user_edit.php
index 50975a7..a6b08b3 100644
--- a/interface/web/sites/database_user_edit.php
+++ b/interface/web/sites/database_user_edit.php
@@ -147,7 +147,7 @@
$this->dataRecord['database_user'] = substr($dbuser_prefix . $this->dataRecord['database_user'], 0, 16);
}
- $this->dataRecord['server_id'] = $conf['server_id'];
+ $this->dataRecord['server_id'] = 0;
parent::onBeforeUpdate();
}
diff --git a/server/plugins-available/mysql_clientdb_plugin.inc.php b/server/plugins-available/mysql_clientdb_plugin.inc.php
index 7fa2b7b..393c3fb 100644
--- a/server/plugins-available/mysql_clientdb_plugin.inc.php
+++ b/server/plugins-available/mysql_clientdb_plugin.inc.php
@@ -503,6 +503,8 @@
$host_list = array('localhost');
// get all databases this user was active for
$db_list = $app->db->queryAllRecords("SELECT `remote_access`, `remote_ips` FROM `web_database` WHERE `database_user_id` = '" . intval($data['old']['database_user_id']) . "'");
+ if(count($db_list) < 1) return; // nothing to do on this server for this db user
+
foreach($db_list as $database) {
if($database['remote_access'] != 'y') continue;
--
Gitblit v1.9.1