Skip to content

Commit 13d3911

Browse files
author
Marius Burkard
committed
Merge branch 'stable-3.1'
2 parents c59ab58 + 710dabf commit 13d3911

File tree

2 files changed

+48
-34
lines changed

2 files changed

+48
-34
lines changed

server/lib/classes/cron.d/100-monitor_database_size.inc.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,16 @@ public function onRunJob() {
9292
$data[$i]['sys_groupid'] = $rec['sys_groupid'];
9393

9494
$quota = $rec['database_quota'] * 1024 * 1024;
95-
if (!is_numeric($quota)) continue;
95+
if(!is_numeric($quota)) continue;
9696

97-
if($quota < 0 || $quota > $data[$i]['size']) {
97+
if($quota < 1 || $quota > $data[$i]['size']) {
98+
print $rec['database_name'] . ' does not exceed quota qize: ' . $quota . ' > ' . $data[$i]['size'] . "\n";
9899
if($rec['quota_exceeded'] == 'y') {
99100
$app->dbmaster->datalogUpdate('web_database', array('quota_exceeded' => 'n'), 'database_id', $rec['database_id']);
100101
}
101102
} elseif($rec['quota_exceeded'] == 'n') {
102-
$app->dbmaster->datalogUpdate('web_database', array('quota_exceeded' => 'y'), 'database_id', $rec['database_id']);
103+
print $rec['database_name'] . ' exceeds quota qize: ' . $quota . ' < ' . $data[$i]['size'] . "\n";
104+
$app->dbmaster->datalogUpdate('web_database', array('quota_exceeded' => 'y'), 'database_id', $rec['database_id']);
103105
}
104106
}
105107

server/plugins-available/mysql_clientdb_plugin.inc.php

Lines changed: 43 additions & 31 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,23 +115,32 @@ 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

117-
$grants = 'ALL';
123+
$grants = 'ALL PRIVILEGES';
118124
if($user_access_mode == 'r') $grants = 'SELECT';
119125
elseif($user_access_mode == 'rd') $grants = 'SELECT, DELETE, ALTER, DROP';
120126

121127
if($action == 'GRANT') {
122-
if(!$link->query("GRANT " . $grants . " ON `".$link->escape_string($database_name)."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."';")) $success = false;
123-
$app->log("GRANT " . $grants . " ON `".$link->escape_string($database_name)."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."'; success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG);
128+
if($user_access_mode == 'r' || $user_access_mode == 'rd') {
129+
if(!$link->query("REVOKE ALL PRIVILEGES ON `".$link->escape_string($database_name)."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false;
130+
$app->log("REVOKE ALL PRIVILEGES ON `".$link->escape_string($database_name)."`.* FROM '".$link->escape_string($database_user)."'@'$db_host' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG);
131+
$success = true;
132+
}
133+
134+
if(!$link->query("GRANT " . $grants . " ON `".$link->escape_string($database_name)."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."'")) $success = false;
135+
$app->log("GRANT " . $grants . " ON `".$link->escape_string($database_name)."`.* TO '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."' success? " . ($success ? 'yes' : 'no'), LOGLEVEL_DEBUG);
124136
} elseif($action == 'REVOKE') {
125-
if(!$link->query("REVOKE ALL PRIVILEGES ON `".$link->escape_string($database_name)."`.* FROM '".$link->escape_string($database_user)."'@'$db_host' IDENTIFIED BY PASSWORD '".$link->escape_string($database_password)."';")) $success = false;
137+
if(!$link->query("REVOKE ALL PRIVILEGES ON `".$link->escape_string($database_name)."`.* FROM '".$link->escape_string($database_user)."'@'$db_host'")) $success = false;
126138
} elseif($action == 'DROP') {
127-
if(!$link->query("DROP USER '".$link->escape_string($database_user)."'@'$db_host';")) $success = false;
139+
if(!$link->query("DROP USER '".$link->escape_string($database_user)."'@'$db_host'")) $success = false;
128140
} elseif($action == 'RENAME') {
129141
if(!$link->query("RENAME USER '".$link->escape_string($database_user)."'@'$db_host' TO '".$link->escape_string($database_rename_user)."'@'$db_host'")) $success = false;
130142
} elseif($action == 'PASSWORD') {
131-
if(!$link->query("SET PASSWORD FOR '".$link->escape_string($database_user)."'@'$db_host' = '".$link->escape_string($database_password)."';")) $success = false;
143+
if(!$link->query("SET PASSWORD FOR '".$link->escape_string($database_user)."'@'$db_host' = '".$link->escape_string($database_password)."'")) $success = false;
132144
}
133145
}
134146

@@ -254,7 +266,7 @@ function db_update($event_name, $data) {
254266
$app->log('Unable to connect to the database: '.$link->connect_error, LOGLEVEL_ERROR);
255267
return;
256268
}
257-
269+
258270
// get the users for this database
259271
$db_user = $app->db->queryOneRecord("SELECT `database_user`, `database_password` FROM `web_database_user` WHERE `database_user_id` = ?", $data['new']['database_user_id']);
260272
$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 +418,32 @@ function db_update($event_name, $data) {
406418
if($db_ro_user['database_user'] == 'root') $app->log('User root not allowed for Client databases', LOGLEVEL_WARNING);
407419
else $this->process_host_list('GRANT', $data['new']['database_name'], $db_ro_user['database_user'], $db_ro_user['database_password'], $host_list, $link, '', 'r');
408420
}
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-
421+
} elseif($data['new']['active'] == 'n' && $data['old']['active'] == 'y') { // revoke database user, if inactive
422+
if($old_db_user) {
423+
if($old_db_user['database_user'] == 'root'){
424+
$app->log('User root not allowed for Client databases', LOGLEVEL_WARNING);
425+
} else {
426+
// Find out users to drop and users to revoke
427+
$drop_or_revoke_user = $this->drop_or_revoke_user($data['old']['database_id'], $data['old']['database_user_id'], $old_host_list);
428+
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);
429+
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);
420430
}
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-
}
431+
432+
}
433+
if($old_db_ro_user && $data['old']['database_user_id'] != $data['old']['database_ro_user_id']) {
434+
if($old_db_ro_user['database_user'] == 'root'){
435+
$app->log('User root not allowed for Client databases', LOGLEVEL_WARNING);
436+
} else {
437+
// Find out users to drop and users to revoke
438+
$drop_or_revoke_user = $this->drop_or_revoke_user($data['old']['database_id'], $data['old']['database_ro_user_id'], $old_host_list);
439+
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);
440+
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);
430441
}
431-
// Database is not active, so stop processing here
432-
$link->close();
433-
return;
434442
}
443+
// Database is not active, so stop processing here
444+
$link->close();
445+
return;
446+
}
435447

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

0 commit comments

Comments
 (0)