Skip to content

Commit 6f97fc1

Browse files
author
Marius Burkard
committed
- fixed db privileges
1 parent e06b59c commit 6f97fc1

File tree

1 file changed

+31
-25
lines changed

1 file changed

+31
-25
lines changed

server/plugins-available/mysql_clientdb_plugin.inc.php

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ function process_host_list($action, $database_name, $database_user, $database_pa
9292
$result->free();
9393
}
9494
}
95+
96+
$app->log("Calling $action for $database_name with access $user_access_mode and hosts " . implode(', ', $host_list), LOGLEVEL_DEBUG);
97+
9598
// loop through hostlist
9699
foreach($host_list as $db_host) {
97100
$db_host = trim($db_host);
@@ -112,7 +115,10 @@ function process_host_list($action, $database_name, $database_user, $database_pa
112115
$valid = false;
113116
}
114117

115-
if($valid == false) continue;
118+
if($valid == false) {
119+
$app->log("Invalid host " . $db_host . " for GRANT to " . $database_name, LOGLEVEL_DEBUG);
120+
continue;
121+
}
116122

117123
$grants = 'ALL';
118124
if($user_access_mode == 'r') $grants = 'SELECT';
@@ -254,7 +260,7 @@ function db_update($event_name, $data) {
254260
$app->log('Unable to connect to the database: '.$link->connect_error, LOGLEVEL_ERROR);
255261
return;
256262
}
257-
263+
258264
// get the users for this database
259265
$db_user = $app->db->queryOneRecord("SELECT `database_user`, `database_password` FROM `web_database_user` WHERE `database_user_id` = ?", $data['new']['database_user_id']);
260266
$old_db_user = $app->db->queryOneRecord("SELECT `database_user`, `database_password` FROM `web_database_user` WHERE `database_user_id` = ?", $data['old']['database_user_id']);
@@ -406,32 +412,32 @@ function db_update($event_name, $data) {
406412
if($db_ro_user['database_user'] == 'root') $app->log('User root not allowed for Client databases', LOGLEVEL_WARNING);
407413
else $this->process_host_list('GRANT', $data['new']['database_name'], $db_ro_user['database_user'], $db_ro_user['database_password'], $host_list, $link, '', 'r');
408414
}
409-
} else if($data['new']['active'] == 'n' && $data['old']['active'] == 'y') { // revoke database user, if inactive
410-
if($old_db_user) {
411-
if($old_db_user['database_user'] == 'root'){
412-
$app->log('User root not allowed for Client databases', LOGLEVEL_WARNING);
413-
} else {
414-
// Find out users to drop and users to revoke
415-
$drop_or_revoke_user = $this->drop_or_revoke_user($data['old']['database_id'], $data['old']['database_user_id'], $old_host_list);
416-
if($drop_or_revoke_user['drop_hosts'] != '') $this->process_host_list('DROP', $data['old']['database_name'], $old_db_user['database_user'], $old_db_user['database_password'], $drop_or_revoke_user['drop_hosts'], $link);
417-
if($drop_or_revoke_user['revoke_hosts'] != '') $this->process_host_list('REVOKE', $data['old']['database_name'], $old_db_user['database_user'], $old_db_user['database_password'], $drop_or_revoke_user['revoke_hosts'], $link);
418-
}
419-
415+
} elseif($data['new']['active'] == 'n' && $data['old']['active'] == 'y') { // revoke database user, if inactive
416+
if($old_db_user) {
417+
if($old_db_user['database_user'] == 'root'){
418+
$app->log('User root not allowed for Client databases', LOGLEVEL_WARNING);
419+
} else {
420+
// Find out users to drop and users to revoke
421+
$drop_or_revoke_user = $this->drop_or_revoke_user($data['old']['database_id'], $data['old']['database_user_id'], $old_host_list);
422+
if($drop_or_revoke_user['drop_hosts'] != '') $this->process_host_list('DROP', $data['old']['database_name'], $old_db_user['database_user'], $old_db_user['database_password'], $drop_or_revoke_user['drop_hosts'], $link);
423+
if($drop_or_revoke_user['revoke_hosts'] != '') $this->process_host_list('REVOKE', $data['old']['database_name'], $old_db_user['database_user'], $old_db_user['database_password'], $drop_or_revoke_user['revoke_hosts'], $link);
420424
}
421-
if($old_db_ro_user && $data['old']['database_user_id'] != $data['old']['database_ro_user_id']) {
422-
if($old_db_ro_user['database_user'] == 'root'){
423-
$app->log('User root not allowed for Client databases', LOGLEVEL_WARNING);
424-
} else {
425-
// Find out users to drop and users to revoke
426-
$drop_or_revoke_user = $this->drop_or_revoke_user($data['old']['database_id'], $data['old']['database_ro_user_id'], $old_host_list);
427-
if($drop_or_revoke_user['drop_hosts'] != '') $this->process_host_list('DROP', $data['old']['database_name'], $old_db_ro_user['database_user'], $old_db_ro_user['database_password'], $drop_or_revoke_user['drop_hosts'], $link);
428-
if($drop_or_revoke_user['revoke_hosts'] != '') $this->process_host_list('REVOKE', $data['old']['database_name'], $old_db_ro_user['database_user'], $old_db_ro_user['database_password'], $drop_or_revoke_user['revoke_hosts'], $link);
429-
}
425+
426+
}
427+
if($old_db_ro_user && $data['old']['database_user_id'] != $data['old']['database_ro_user_id']) {
428+
if($old_db_ro_user['database_user'] == 'root'){
429+
$app->log('User root not allowed for Client databases', LOGLEVEL_WARNING);
430+
} else {
431+
// Find out users to drop and users to revoke
432+
$drop_or_revoke_user = $this->drop_or_revoke_user($data['old']['database_id'], $data['old']['database_ro_user_id'], $old_host_list);
433+
if($drop_or_revoke_user['drop_hosts'] != '') $this->process_host_list('DROP', $data['old']['database_name'], $old_db_ro_user['database_user'], $old_db_ro_user['database_password'], $drop_or_revoke_user['drop_hosts'], $link);
434+
if($drop_or_revoke_user['revoke_hosts'] != '') $this->process_host_list('REVOKE', $data['old']['database_name'], $old_db_ro_user['database_user'], $old_db_ro_user['database_password'], $drop_or_revoke_user['revoke_hosts'], $link);
430435
}
431-
// Database is not active, so stop processing here
432-
$link->close();
433-
return;
434436
}
437+
// Database is not active, so stop processing here
438+
$link->close();
439+
return;
440+
}
435441

436442
//* selected Users have changed
437443
if($data['new']['database_user_id'] != $data['old']['database_user_id']) {

0 commit comments

Comments
 (0)