username = $username; $this->load(); if ($this->fix()) $this->load(); } } function load() { $rs = mysql_db_query(MANAGEDB, sprintf(SQLSELECT1WHERE, MANAGEOWNERTABLE, 'name="'.mysql_escape_string($this->username).'"')); //or exit(mysql_error()); while($r = mysql_fetch_assoc($rs)) { $this->r_owner = $r; } mysql_free_result($rs); $dbs = array(); $rs = mysql_db_query(MANAGEDB, sprintf(SQLSELECTWHERE, MANAGEDBTABLE, 'owner="'.mysql_escape_string($this->username).'" ORDER BY name')) or exit(mysql_error()); while($r = mysql_fetch_assoc($rs)) { $t = $r; $t['registered'] = 1; $t['granted'] = 0; $dbs[$r['name']] = $t; } mysql_free_result($rs); $rs = mysql_db_query('mysql', sprintf(SQLSELECTWHERE, MANAGEDBTABLE, 'User="'.mysql_escape_string($this->username).'" ORDER BY Db')); while($r = mysql_fetch_assoc($rs)) { if (!isset($dbs[$r['Db']])) { $dbs[$r['Db']] = array(); $dbs[$r['Db']]['registered'] = 0; } $dbs[$r['Db']]['granted'] = 1; $dbs[$r['Db']]['name'] = $r['Db']; } mysql_free_result($rs); foreach($dbs as $d1=>$d2) { $size = getDBSize($d1); if (is_null($size)) { $dbs[$d1]['sizeNow'] = 0; $dbs[$d1]['exists'] = 0; } else { $dbs[$d1]['sizeNow'] = $size; $this->sizeNow += $size; $dbs[$d1]['exists'] = 1; } } $this->dbs = $dbs; } function isInit() { return !is_null($this->r_owner); } function grantDB($dbname) { mysql_query('GRANT ALL PRIVILEGES ON ' .'`'.mysql_escape_string($dbname).'` . * ' .'TO \''.mysql_escape_string($this->username).'\'@\'%\'') or exit(mysql_error()); $this->flushPriv(); } function flushPriv() { mysql_query('FLUSH PRIVILEGES') or exit(mysql_error()); } function revokeDB($dbname) { mysql_db_query('mysql', 'DELETE FROM `db` WHERE ' .'User = \''.mysql_escape_string($this->username).'\' ' .'AND Db = \''.mysql_escape_string($dbname).'\'') or exit(mysql_error()); $this->flushPriv(); } function setPassword($password) { mysql_query('SET PASSWORD FOR '. '\''.mysql_escape_string($this->username).'\'@\'%\'='. 'PASSWORD(\''.mysql_escape_string($password).'\')') or exit(mysql_error()); } function init($password, $maxDBs = DEFAULT_MAX_DBS, $maxSize = DEFAULT_MAX_SIZE) { mysql_query('GRANT USAGE ON * . * TO '. '\''.mysql_escape_string($this->username).'\'@\'%\' '. 'IDENTIFIED BY \''.mysql_escape_string($password).'\'') or exit(mysql_error()); $this->flushPriv(); mysql_db_query(MANAGEDB, sprintf(SQLINSERT, MANAGEOWNERTABLE, sprintf("'%s','%s','%s',NOW(),NOW()", mysql_escape_string($this->username), $maxDBs, $maxSize))) or exit(mysql_error()); } function uninit() { mysql_db_query('mysql', 'DELETE FROM `user` WHERE ' .'User = \''.mysql_escape_string($this->username).'\'') or exit(mysql_error()); mysql_db_query('mysql', 'DELETE FROM `db` WHERE ' .'User = \''.mysql_escape_string($this->username).'\'') or exit(mysql_error()); mysql_db_query('mysql', 'DELETE FROM `tables_priv` WHERE ' .'User = \''.mysql_escape_string($this->username).'\'') or exit(mysql_error()); mysql_db_query('mysql', 'DELETE FROM `columns_priv` WHERE ' .'User = \''.mysql_escape_string($this->username).'\'') or exit(mysql_error()); mysql_query('FLUSH PRIVILEGES') or exit(mysql_error()); mysql_db_query(MANAGEDB, sprintf(SQLDELETE, MANAGEDBTABLE, 'owner=\''.mysql_escape_string($this->username).'\'')) or exit(mysql_error()); foreach($this->dbs as $db) $this->dropDB($db['name']); mysql_db_query(MANAGEDB, sprintf(SQLDELETE1, MANAGEOWNERTABLE, 'name=\''.mysql_escape_string($this->username).'\'')) or exit(mysql_error()); } function registerDB($name, $maxSize = DEFAULT_MAX_DB_SIZE) { mysql_db_query(MANAGEDB, sprintf(SQLINSERT, MANAGEDBTABLE, sprintf("'%s','%s','%s','',NOW(),NOW()", mysql_escape_string($name), mysql_escape_string($this->username), $maxSize))) or exit(mysql_error()); } function unregisterDB($name) { mysql_db_query(MANAGEDB, sprintf(SQLDELETE1, MANAGEDBTABLE, 'name="'.mysql_escape_string($name).'"')) or exit(mysql_error()); } function createDB($name) { @mysql_create_db($name); } function dropDB($name) { @mysql_drop_db($name); } function addDB($name) { if (!$this->isExists($name)) $this->createDB($name); if (!$this->isRegistered($name)) $this->registerDB($name); if (!$this->isGranted($name)) $this->grantDB($name); } function delDB($name) { $this->revokeDB($name); $this->unregisterDB($name); $this->dropDB($name); } function getNumDBs() { return count($this->dbs); } function getTotalSize() { return $this->sizeNow; } function isRegistered($name) { if (isset($this->dbs[$name])) return $this->dbs[$name]['registered']; else return false; } function isExists($name) { if (isset($this->dbs[$name])) return $this->dbs[$name]['exists']; else return false; } function isGranted($name) { if (isset($this->dbs[$name])) return $this->dbs[$name]['granted']; else return false; } function printOwnerHeader() { echo '
databases:
storage:
modified:
created:
status: | ';
echo '',$this->getNumDBs(),' | ';
echo '',sprintSize($this->getTotalSize()),' | ';
echo '||
limits: | ';
echo '',$obj_owner['maxDB'],' | ';
echo '',sprintSize($obj_owner['maxSize']),' | ';
echo '',sprintTS($obj_owner['modified']),' | ';
// echo '',sprintTS($obj_owner['created']),' | ';
echo '
name:
owner:
last size:
size:
modified:
created:
',$name,'
',$r['owner'],'
',sprintSize($r['sizeMax']),'
',sprintSize($r['sizeLast']),'
',sprintSize($r['sizeNow']),'
',sprintTS($r['modified']),'
',sprintTS($r['created']),'
',TEXT_FIXREG,$db['name'],'
'; flush(); $this->registerDB($db['name']); $fixed = true; } } return $fixed; } function getNumMaxDBs() { return $this->r_owner['maxDB']; } } class DBAdmin { function mysqlDBList() { $rs = mysql_query('SHOW DATABASES'); $dbs = array(); while($r = mysql_fetch_row($rs)) { $dbs[$r[0]] = array(); $dbs[$r[0]]['registered'] = 0; $dbs[$r[0]]['granted'] = 0; $dbs[$r[0]]['exists'] = 1; $dbs[$r[0]]['owner'] = ''; $dbs[$r[0]]['sizeLast'] = 0; $dbs[$r[0]]['sizeNow'] = ''; $dbs[$r[0]]['modified'] = ''; $dbs[$r[0]]['created'] = ''; } return $dbs; } function fullDBList() { //$dbs = array(); $dbs = $this->mysqlDBList(); $rs = mysql_db_query(MANAGEDB, sprintf(SQLSELECT, MANAGEDBTABLE)) or exit(mysql_error()); while($r = mysql_fetch_assoc($rs)) { $t = $r; $t['registered'] = 1; $t['granted'] = 0; $dbs[$r['name']] = $t; } mysql_free_result($rs); $rs = mysql_db_query('mysql', sprintf(SQLSELECT, MANAGEDBTABLE)); while($r = mysql_fetch_assoc($rs)) { if (!isset($dbs[$r['Db']])) { $dbs[$r['Db']] = array(); $dbs[$r['Db']]['registered'] = 0; } $dbs[$r['Db']]['granted'] = 1; $dbs[$r['Db']]['name'] = $r['Db']; } mysql_free_result($rs); foreach($dbs as $d1=>$d2) { $size = getDBSize($d1); if (is_null($size)) { $dbs[$d1]['sizeNow'] = 0; $dbs[$d1]['exists'] = 0; } else { $dbs[$d1]['sizeNow'] = $size; //$this->sizeNow += $size; $dbs[$d1]['exists'] = 1; } } return $dbs; } function printDBs($rows) { if (ob_get_contents()) ob_end_flush(); echo 'name:
owner:
last size:
size:
modified:
created:
',$name,'
',$r['owner'],'
',sprintSize($r['sizeMax']),'
',sprintSize($r['sizeLast']),'
',sprintSize($r['sizeNow']),'
',sprintTS($r['modified']),'
',sprintTS($r['created']),'
'; echo $r['exists']?'E':''; echo $r['granted']?'G':''; echo $r['registered']?'R':''; echo '