function members_add_save() { if ($GLOBALS["VERBOSE"]) { echo __FUNCTION__ . "<br>"; } $server = trim($_POST["servername"]); $username = trim($_POST["username"]); $password = url_decode_special_tool($_POST["password"]); if ($server == "*") { $server = "%"; } if ($GLOBALS["VERBOSE"]) { echo __LINE__ . " ->mysql()<br>"; } $q = new mysql(); if (is_numeric($_POST["instance-id"]) && $_POST["instance-id"] > 0) { $q = new mysql_multi($_GET["instance-id"]); } $OrginalPassword = $q->mysql_password; $sql = "SELECT User FROM user WHERE Host='{$server}' AND User='******'"; if ($GLOBALS["VERBOSE"]) { echo $sql . "<br>"; } $ligne = @mysql_fetch_array($q->QUERY_SQL($sql, "mysql")); if ($GLOBALS["VERBOSE"]) { echo "User:{$ligne["User"]}<br>"; } if (trim($ligne["User"]) == null) { $sql = "CREATE USER '{$username}'@'{$server}' IDENTIFIED BY '{$password}';"; if ($GLOBALS["VERBOSE"]) { echo $sql . "<br>"; } if (!$q->EXECUTE_SQL($sql)) { $q->mysql_admin = "root"; $q->mysql_password = $OrginalPassword; if (!$q->EXECUTE_SQL($sql)) { $q->mysql_admin = "root"; $q->mysql_password = null; if (!$q->EXECUTE_SQL($sql)) { echo "CREATE USER user:{$username}\nHost:{$server}\n\n{$q->mysql_error}"; return; } } } } $sql = "GRANT ALL PRIVILEGES ON * . * TO '{$username}'@'{$server}' IDENTIFIED BY '{$password}' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0"; if ($GLOBALS["VERBOSE"]) { echo $sql . "<br>"; } if (!$q->EXECUTE_SQL($sql)) { $q->mysql_admin = "root"; $q->mysql_password = $OrginalPassword; $q->ok = true; if (!$q->EXECUTE_SQL($sql)) { $q->mysql_admin = "root"; $q->mysql_password = null; $q->ok = true; if (!$q->EXECUTE_SQL($sql)) { echo "user GRANT ALL PRIVILEGES ON:{$username}\nHost:{$server}\n\n{$q->mysql_error}"; return; } } } }
function table_empty() { $q = new mysql(); $instance_id = $_POST["instance-id"]; if (!is_numeric($instance_id)) { $instance_id = 0; } if ($instance_id > 0) { $q = new mysql_multi($instance_id); } $sql = "TRUNCATE TABLE `{$_POST["mysql-empty"]}`"; $q->QUERY_SQL($sql, $_POST["database"]); if (!$q->ok) { echo $q->mysql_error . "\n{$sql}"; return; } if ($instance_id == 0) { $q->QUERY_SQL("UPDATE mysqldbtables SET tableRows=0,tablesize=0 WHERE tablename='{$_POST["mysql-empty"]}' AND databasename='{$_POST["database"]}'", "artica_backup"); if (!$q->ok) { echo $q->mysql_error . "\n{$sql}"; return; } } else { $q = new mysql(); $q->QUERY_SQL("UPDATE mysqldbtablesmulti SET tableRows=0,tablesize=0 WHERE tablename='{$_POST["mysql-empty"]}' AND databasename='{$_POST["database"]}' AND instance_id='{$_POST["instance-id"]}'", "artica_backup"); if (!$q->ok) { echo $q->mysql_error . "\n{$sql}"; return; } } $sock = new sockets(); $sock->getFrameWork("mysql.php?filstats=yes"); }
function LinkUser() { $q = new mysql(); if ($_POST["instance-id"] > 0) { $q = new mysql_multi($_POST["instance-id"]); } $databasename = $_POST["databasename"]; $User = base64_decode($_POST["user"]); if (preg_match("#(.+?)@(.+)#", $User, $re)) { $uid = $re[1]; $dom = $re[2]; } $sql = "INSERT IGNORE INTO `db` (`Host`, `Db`, `User`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, \n\t`Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Create_view_priv`,\n\t `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Execute_priv`, `Event_priv`, `Trigger_priv`) VALUES\n('{$dom}', '{$databasename}', '{$uid}', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N');"; $OrginalPassword = $q->mysql_password; if (!$q->QUERY_SQL($sql, "mysql")) { $q->mysql_admin = "root"; $q->mysql_password = $OrginalPassword; if (!$q->QUERY_SQL($sql, "mysql")) { $q->mysql_admin = "root"; $q->mysql_password = null; if (!$q->QUERY_SQL($sql, "mysql")) { echo "GRANT SELECT user:{$uid}\nHost:{$dom}\n\n{$q->mysql_error}"; return; } } } }
function mysqlcheck($db, $table, $instance_id) { if ($GLOBALS["VERBOSE"]) { echo "START:: " . __FUNCTION__ . "\n"; } $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $pid = @file_get_contents($pidfile); $unix = new unix(); if ($unix->process_exists($pid)) { echo "Process already exists pid {$pid}\n"; return; } if ($db == "squidlogs") { mysqlcheck_squidlogs($table); return; } if (!is_numeric($instance_id)) { $instance_id = 0; } $time1 = time(); $mysqlcheck = $unix->find_program("mysqlcheck"); $q = new mysql(); $pass = null; if ($q->mysql_password != null) { $pass = "******"; } $cmd = "{$mysqlcheck} -r {$db} {$table} -u {$q->mysql_admin} {$pass} 2>&1"; if ($instance_id > 0) { $q = new mysql_multi($instance_id); $cmd = "{$mysqlcheck} -r {$db} {$table} -u {$q->mysql_admin} {$pass} --socket=\"{$q->SocketPath}\" 2>&1"; } exec($cmd, $results); $time_duration = distanceOfTimeInWords($time1, time()); $q->QUERY_SQL("OPTIMIZE TABLE `{$table}`", $db); if (!$q->ok) { $OPT = "\nOptimize:{$q->mysql_error}\n"; } else { $OPT = "\nOptimize: Success...\n"; } $unix->send_email_events("mysqlcheck results on instance {$instance_id} {$db}/{$table}", "{$time_duration}\n" . @implode("\n", $results) . $OPT, "system"); }
function user_priv() { $admin["Select_priv"] = true; $admin["Insert_priv"] = true; $admin["Update_priv"] = true; $admin["Delete_priv"] = true; $admin["Create_priv"] = true; $admin["Drop_priv"] = true; $admin["Grant_priv"] = true; $admin["References_priv"] = true; $admin["Index_priv"] = true; $admin["Alter_priv"] = true; $admin["Create_tmp_table_priv"] = true; $admin["Lock_tables_priv"] = true; $admin["Create_view_priv"] = true; $admin["Show_view_priv"] = true; $admin["Create_view_priv"] = true; $write["Insert_priv"] = true; $write["Update_priv"] = true; $write["Delete_priv"] = true; $write["Create_priv"] = true; $write["Drop_priv"] = true; $write["Index_priv"] = true; $write["Alter_priv"] = true; $write["Create_tmp_table_priv"] = true; $write["Create_view_priv"] = true; $write["Show_view_priv"] = true; $databasename = $_POST["databasename"]; $User = base64_decode($_POST["user"]); $instance_id = $_POST["instance-id"]; $type = $_POST["type"]; if (preg_match("#(.+?)@(.+)#", $User, $re)) { $uid = $re[1]; $dom = $re[2]; } while (list($num, $none) = each($admin)) { $tt[] = "`{$num}`='N'"; } reset($admin); $sql = "UPDATE `db` SET " . @implode(",", $tt) . " WHERE `Host`='{$dom}' AND `Db`='{$databasename}' AND `User`='{$uid}'"; $tt = array(); $q = new mysql(); if ($instance_id > 0) { $q = new mysql_multi($instance_id); } $OrginalPassword = $q->mysql_password; writelogs($sql, __FUNCTION__, __FILE__, __LINE__); if (!$q->QUERY_SQL($sql, "mysql")) { $q->mysql_admin = "root"; $q->mysql_password = $OrginalPassword; $q->ok = true; if (!$q->QUERY_SQL($sql, "mysql")) { $q->mysql_admin = "root"; $q->mysql_password = null; $q->ok = true; if (!$q->QUERY_SQL($sql, "mysql")) { echo "user:{$uid}\nHost:{$dom}\n\n{$q->mysql_error}\n{$sql}"; return; } } } if ($type == "a" && $_POST["enable"] == 1) { while (list($num, $none) = each($admin)) { $tt[] = "`{$num}`='Y'"; } $sql = "UPDATE `db` SET " . @implode(",", $tt) . " WHERE `Host`='{$dom}' AND `Db`='{$databasename}' AND `User`='{$uid}'"; writelogs($sql, __FUNCTION__, __FILE__, __LINE__); if (!$q->QUERY_SQL($sql, "mysql")) { $q->mysql_admin = "root"; $q->mysql_password = $OrginalPassword; $q->ok = true; if (!$q->QUERY_SQL($sql, "mysql")) { $q->mysql_admin = "root"; $q->mysql_password = null; $q->ok = true; if (!$q->QUERY_SQL($sql, "mysql")) { echo "user:{$uid}\nHost:{$dom}\n\n{$q->mysql_error}\n{$sql}"; return; } } } return; } if ($type == "w" && $_POST["enable"] == 1) { $tt = array(); while (list($num, $none) = each($write)) { $tt[] = "`{$num}`='Y'"; } $sql = "UPDATE `db` SET " . @implode(",", $tt) . " WHERE `Host`='{$dom}' AND `Db`='{$databasename}' AND `User`='{$uid}'"; writelogs($sql, __FUNCTION__, __FILE__, __LINE__); if (!$q->QUERY_SQL($sql, "mysql")) { $q->mysql_admin = "root"; $q->mysql_password = $OrginalPassword; $q->ok = true; if (!$q->QUERY_SQL($sql, "mysql")) { $q->mysql_admin = "root"; $q->mysql_password = null; $q->ok = true; if (!$q->QUERY_SQL($sql, "mysql")) { echo "user:{$uid}\nHost:{$dom}\n\n{$q->mysql_error}\n{$sql}"; return; } } } return; } if ($type == "r" && $_POST["enable"] == 1) { $tt = array(); $sql = "UPDATE `db` SET `Select_priv`='Y' WHERE `Host`='{$dom}' AND `Db`='{$databasename}' AND `User`='{$uid}'"; writelogs($sql, __FUNCTION__, __FILE__, __LINE__); if (!$q->QUERY_SQL($sql, "mysql")) { $q->mysql_admin = "root"; $q->mysql_password = $OrginalPassword; $q->ok = true; if (!$q->QUERY_SQL($sql, "mysql")) { $q->mysql_admin = "root"; $q->mysql_password = null; $q->ok = true; if (!$q->QUERY_SQL($sql, "mysql")) { echo "user:{$uid}\nHost:{$dom}\n\n{$q->mysql_error}\n{$sql}"; return; } } } return; } }
function ChangeRoot($instance_id) { echo "Loading instance {$instance_id}\n"; $mysqld = new mysqlserver_multi($instance_id); $username = $mysqld->mysql_admin; $password = $mysqld->mysql_password; if ($password == null) { echo "Password is null, aborting\n"; return; } $unix = new unix(); $mysqld_safe = $unix->find_program("mysqld_safe"); $nohup = $unix->find_program("nohup"); $killbin = $unix->find_program("kill"); echo "mysqld_safe:{$mysqld_safe}\n"; $ini = new Bs_IniHandler(); $ini->loadFile("/etc/mysql-multi.cnf"); $array = $ini->_params["mysqld{$instance_id}"]; $datadir = $ini->get("mysqld{$instance_id}", "datadir"); while (list($key, $value) = each($array)) { $tt[] = "{$key} = {$value}"; } $newconfig = "[mysqld]\n" . @implode("\n", $tt) . "\n"; @file_put_contents("/etc/mysql-temp-{$instance_id}.cf", $newconfig); for ($i = 0; $i < 5; $i++) { $pid = multi_get_pid($instance_id); if ($pid > 0) { echo "Stopping mysqld safe pid:{$pid}\n"; unix_system_kill_force($pid); sleep(1); } else { break; } } echo "Stopping instance {$instance_id}\n"; //shell_exec($unix->LOCATE_PHP5_BIN()." /usr/share/artica-postfix/exec.mysql.build.php --multi-stop $instance_id >/dev/null 2>&1"); for ($i = 0; $i < 5; $i++) { $pid = multi_get_pidNormal($instance_id); if ($pid > 0) { echo "Stopping mysqld pid:{$pid}\n"; unix_system_kill_force($pid); sleep(1); } else { break; } } $pid = @file_get_contents("/var/run/mysqld/mysqld{$instance_id}.pid"); if ($unix->process_exists($pid)) { echo "Stopping instance {$instance_id} failed...\n"; return; } echo "Running instance {$instance_id} in safe mode...\n"; if (file_exists("{$datadir}/error.log")) { @unlink("{$datadir}/error.log"); } $cmd = "{$nohup} {$mysqld_safe} --defaults-file=/etc/mysql-temp-{$instance_id}.cf --datadir=\"{$datadir}\" --skip-grant-tables --skip-networking --skip-external-locking --log-error=\"{$datadir}/error.log\" --pid-file=/var/run/mysqld/mysqld{$instance_id}.pid >/dev/null 2>&1 &"; if ($GLOBALS["VERBOSE"]) { echo "{$cmd}\n"; } shell_exec($cmd); for ($i = 0; $i < 4; $i++) { sleep(1); $pid = @file_get_contents("/var/run/mysqld/mysqld{$instance_id}.pid"); if ($unix->process_exists($pid)) { sleep(1); break; } } $pid = @file_get_contents("/var/run/mysqld/mysqld{$instance_id}.pid"); if (!$unix->process_exists($pid)) { echo "Failed to run mysqld safe\n"; if (file_exists("{$datadir}/error.log")) { echo @file_get_contents("{$datadir}/error.log"); } shell_exec($nohup . " " . $unix->LOCATE_PHP5_BIN() . " /usr/share/artica-postfix/exec.mysql.build.php --multi-start {$instance_id} >/dev/null 2>&1 &"); return; } $q = new mysql_multi($instance_id); $ligne = mysql_fetch_array($q->QUERY_SQL("SELECT User from user WHERE User='******' LIMIT 0,1", "mysql")); if (!$q->ok) { echo $q->mysql_error . "\n"; } echo "User:{$username} = {$ligne["User"]}\n"; if ($ligne["User"] != null) { echo "User: Already exists, update password\n"; $sqlstring = "UPDATE user SET password=PASSWORD(\"{$password}\") WHERE user=\"{$username}\""; $q->QUERY_SQL($sqlstring, "mysql"); if (!$q->ok) { echo $q->mysql_error . "\n"; } $q->QUERY_SQL_NO_BASE("FLUSH PRIVILEGES"); if (!$q->ok) { echo $q->mysql_error . "\n"; } } else { echo "Root: did not exists, Create a new one...\n"; $q->QUERY_SQL_NO_BASE("create user root@localhost"); $q->QUERY_SQL_NO_BASE("GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' with grant option"); $q->QUERY_SQL_NO_BASE("FLUSH PRIVILEGES"); } echo "Stopping mysqld safe....\n"; for ($i = 0; $i < 5; $i++) { $pid = multi_get_pid($instance_id); if ($pid > 0) { echo "Stopping mysqld safe pid:{$pid}\n"; unix_system_kill_force($pid); sleep(1); } else { break; } } exec($unix->LOCATE_PHP5_BIN() . " /usr/share/artica-postfix/exec.mysql.build.php --multi-stop {$instance_id} 2>&1", $results); while (list($key, $value) = each($results)) { echo "{$value}\n"; } $results = array(); echo "Start mysqld in normal mode\n"; exec($unix->LOCATE_PHP5_BIN() . " /usr/share/artica-postfix/exec.mysql.build.php --multi-start {$instance_id} 2>&1", $results); while (list($key, $value) = each($results)) { echo "{$value}\n"; } }
function perform_db_backup($InstanceID, $database, $targetDir, $compress) { $unix = new unix(); $piped = null; if (isset($GLOBALS["ALREADY{$InstanceID}{$database}"])) { return; } $GLOBALS["ALREADY{$InstanceID}{$database}"] = true; $targetFilename = $targetDir . "/" . date("Y-m-d") . ".{$database}.sql"; $logfile = "/var/log/dump.{$database}.log"; if (!is_dir($targetDir)) { system_admin_events("{$database}:[{$InstanceID}]:{$targetDir} no such directory", __FUNCTION__, __FILE__, __LINE__, "backup"); return false; } $t = time(); @file_put_contents("{$targetDir}/{$t}", time()); if (!is_file("{$targetDir}/{$t}")) { system_admin_events("{$database}:[{$InstanceID}]:{$targetDir} permission denied", __FUNCTION__, __FILE__, __LINE__, "backup"); return false; } @unlink("{$targetDir}/{$t}"); if (!is_numeric($InstanceID)) { $InstanceID = 0; } $mysqldump = $unix->find_program("mysqldump"); if (!is_file($mysqldump)) { system_admin_events("{$database}:[{$InstanceID}]:mysqldump no such binary", __FUNCTION__, __FILE__, __LINE__, "backup"); return false; } if ($compress == 1) { $gzip = $unix->find_program("gzip"); if (!is_file($gzip)) { system_admin_events("{$database}:[{$InstanceID}]:gzip no such binary", __FUNCTION__, __FILE__, __LINE__, "backup"); return false; } $piped = " |{$gzip} -9 >"; $targetFilename = $targetFilename . ".gz"; } if (is_file($targetFilename)) { $size = filesize($targetFilename); system_admin_events("{$database}:[{$InstanceID}]: {$targetFilename} already exists ( {$size} bytes)...", __FUNCTION__, __FILE__, __LINE__, "backup"); return false; } $password = null; $options = "--add-drop-database --opt --delayed-insert --skip-lock-table --log-error={$logfile}"; $q = new mysql(); if ($q->mysql_password != null) { $q->mysql_password = $unix->shellEscapeChars($q->mysql_password); $password = "******"; } if ($q->mysql_server == "127.0.0.1") { $servcmd = " --socket=/var/run/mysqld/mysqld.sock "; } else { $servcmd = " --host={$q->mysql_server} --port={$q->mysql_port} "; } $cmdline = "{$mysqldump} -u {$q->mysql_admin}{$password} {$servcmd} {$options} {$database}{$piped} \"{$targetFilename}\" 2>&1"; $cmdlineTXT = str_replace($q->mysql_password, "****", $cmdline); if ($InstanceID > 0) { $q = new mysql_multi($InstanceID); if ($q->mysql_password != null) { $q->mysql_password = $unix->shellEscapeChars($q->mysql_password); $password = "******"; } $cmdline = "{$mysqldump} -u {$q->mysql_admin}{$password} --socket={$q->SocketPath} {$options} {$database}{$piped} \"{$targetFilename}\" 2>&1"; $cmdlineTXT = str_replace($q->mysql_password, "****", $cmdline); } if (is_file($logfile)) { @unlink($logfile); } if ($GLOBALS["VERBOSE"]) { echo "{$cmdline}\n"; } $t = time(); shell_exec($cmdline); $took = $unix->distanceOfTimeInWords($t, time(), true); $size = filesize($targetFilename); $sizeH = FormatBytes($size / 1024); $mysqllog = @file_get_contents($logfile); $md5 = md5("{$database}{$InstanceID}"); $date = date('Y-m-d'); $q->QUERY_SQL("DELETE FROM mysqldb_backup_containers WHERE `fullpath`='{$targetFilename}'", "artica_backup"); $sql = "INSERT IGNORE INTO mysqldb_backup_containers (`md5`,`fullpath`,`duration`,`zDate`,`size`) VALUES ('{$md5}','{$targetFilename}','{$took}','{$date}','{$size}')"; $q = new mysql(); $q->QUERY_SQL($sql, "artica_backup"); if (!$q->ok) { system_admin_events("{$database}:[{$InstanceID}]: {$q->mysql_error}\n{$sql}", __FUNCTION__, __FILE__, __LINE__, "backup"); } system_admin_events("{$database}:[{$InstanceID}]: backup success took {$took}, size:{$sizeH}\n{$cmdlineTXT}\n{$mysqllog}", __FUNCTION__, __FILE__, __LINE__, "backup"); }
function rows_list_json() { $search = $_GET["search"]; $MyPage = CurrentPageName(); $page = 1; $users = new usersMenus(); $tpl = new templates(); $sock = new sockets(); $q = new mysql(); $table = $_GET["table"]; $tableOrg = $table; $database = $_GET["database"]; $fields = unserialize(base64_decode($_GET["fields"])); $sqlQuery = base64_decode($_GET["sql"]); $instance_id = $_GET["instance-id"]; if (!is_numeric($instance_id)) { $instance_id = 0; } if ($instance_id > 0) { $q = new mysql_multi($instance_id); } if (!is_array($fields)) { json_error_show("Fields is empty {$_GET["fields"]}"); } $t = $_GET["t"]; if ($q->COUNT_ROWS($table, $database) == 0) { json_error_show("{$table} is empty"); } if ($sqlQuery != null) { $table = "({$sqlQuery}) as tt"; } if (isset($_POST["sortname"])) { if ($_POST["sortname"] != null) { $ORDER = "ORDER BY {$_POST["sortname"]} {$_POST["sortorder"]}"; } } if (isset($_POST['page'])) { $page = $_POST['page']; } if ($_POST["query"] != null) { $_POST["query"] = str_replace("*", "%", $_POST["query"]); $search = $_POST["query"]; $searchstring = "AND (`{$_POST["qtype"]}` LIKE '{$search}')"; $sql = "SELECT COUNT(*) as TCOUNT FROM {$table} WHERE 1 {$searchstring}"; $ligne = mysql_fetch_array($q->QUERY_SQL($sql, $database)); if (!$q->ok) { json_error_show("{$q->mysql_error}"); } $total = $ligne["TCOUNT"]; if ($total == 0) { json_error_show("No rows {$sql}"); } } else { if ($sqlQuery != null) { $sql = "SELECT COUNT(*) as TCOUNT FROM {$table}"; $ligne = mysql_fetch_array($q->QUERY_SQL($sql, $database)); $total = $ligne["TCOUNT"]; } else { $total = $q->COUNT_ROWS($table, $database); } } if (isset($_POST['rp'])) { $rp = $_POST['rp']; } $pageStart = ($page - 1) * $rp; $limitSql = "LIMIT {$pageStart}, {$rp}"; if ($OnlyEnabled) { $limitSql = null; } if ($sqlQuery != null) { $sql = $sqlQuery . " {$searchstring} {$FORCE_FILTER} {$ORDER} {$limitSql}"; } else { $sql = "SELECT * FROM {$tableOrg} WHERE 1 {$searchstring} {$FORCE_FILTER} {$ORDER} {$limitSql}"; } writelogs($sql, __FUNCTION__, __FILE__, __LINE__); $results = $q->QUERY_SQL($sql, $database); $data = array(); $data['page'] = $page; $data['total'] = $total; $data['rows'] = array(); if (mysql_num_rows($results) == 0) { json_error_show("Query return empty array, {$sql}, ({$q->mysql_error})"); } $ldap = new clladp(); while ($ligne = mysql_fetch_assoc($results)) { reset($fields); $cells = array(); while (list($key, $line) = each($fields)) { $cellencoded = base64_encode($ligne[$key]); $cells[] = "<a href=\"javascript:blur();\" Onclick=\"javascript:Loadjs('admin.index.php?json-error-js={$cellencoded}');\">{$ligne[$key]}</a>"; } $data['rows'][] = array('id' => md5(serialize($ligne)), 'cell' => $cells); } echo json_encode($data); }
function databases_list_json() { $search = $_GET["search"]; $MyPage = CurrentPageName(); $page = 1; $users = new usersMenus(); $tpl = new templates(); $sock = new sockets(); $q = new mysql(); $table = "(SELECT CONCAT( table_schema, '/', table_name ) as xTables , CONCAT( ROUND( table_rows /1000000, 2 ) , 'M' ) ROWS ,\n\tCONCAT( ROUND( data_length / ( 1024 *1024 *1024 ) , 2 ) , 'G' ) DATA, \n\tCONCAT( ROUND( index_length / ( 1024 *1024 *1024 ) , 2 ) , 'G' ) idx, \n\tCONCAT( ROUND( ( data_length + index_length ) / ( 1024 *1024 *1024 ) , 2 ) , 'G' ) total_size, \n\tROUND( index_length / data_length, 2 ) idxfrac FROM information_schema.TABLES ORDER BY data_length + index_length) as t"; if ($_GET["instance-id"] > 0) { $q = new mysql_multi($_GET["instance-id"]); } $database = "mysql"; $t = $_GET["t"]; //if($q->COUNT_ROWS($table,$database)==0){json_error_show("$table is empty");} if (isset($_POST["sortname"])) { if ($_POST["sortname"] != null) { $ORDER = "ORDER BY {$_POST["sortname"]} {$_POST["sortorder"]}"; } } if (isset($_POST['page'])) { $page = $_POST['page']; } if ($_POST["query"] != null) { $_POST["query"] = str_replace("*", "%", $_POST["query"]); $search = $_POST["query"]; $searchstring = "AND (`{$_POST["qtype"]}` LIKE '{$search}')"; $sql = "SELECT COUNT(*) as TCOUNT FROM {$table} WHERE {$FORCE_FILTER} {$searchstring}"; $ligne = mysql_fetch_array($q->QUERY_SQL($sql, $database)); if (!$q->ok) { json_error_show("{$q->mysql_error}<br>Line:" . __LINE__); } $total = $ligne["TCOUNT"]; } else { $sql = "SELECT COUNT(*) as TCOUNT FROM {$table}"; $ligne = mysql_fetch_array($q->QUERY_SQL($sql, $database)); if (!$q->ok) { json_error_show("{$q->mysql_error}<br>Line:" . __LINE__); } $total = $ligne["TCOUNT"]; } if (isset($_POST['rp'])) { $rp = $_POST['rp']; } $pageStart = ($page - 1) * $rp; $limitSql = "LIMIT {$pageStart}, {$rp}"; if ($OnlyEnabled) { $limitSql = null; } $sql = "SELECT * FROM {$table} WHERE 1 {$searchstring} {$ORDER} {$limitSql}"; writelogs($sql, __FUNCTION__, __FILE__, __LINE__); $results = $q->QUERY_SQL($sql, $database); if (!$q->ok) { json_error_show("Query return an error<hr>{$sql}<hr>({$q->mysql_error})"); } $data = array(); $data['page'] = $page; $data['total'] = $total; $data['rows'] = array(); if (mysql_num_rows($results) == 0) { json_error_show("Query return empty array, {$sql}, ({$q->mysql_error})"); } while ($ligne = mysql_fetch_assoc($results)) { $tablename = $ligne["xTables"]; $r = explode("/", $tablename); $table = $r[1]; $db = $r[0]; $md5S = md5($tablename); $js = "Loadjs('mysql.browse.table.php?table={$table}&database={$db}&instance-id={$_GET["instance-id"]}');"; $href = "<a href=\"javascript:blur();\" OnClick=\"javascript:{$js}\" style='text-decoration:underline'>"; $spanStyle1 = "<span style='font-size:13px;font-weight:bold;color:#5F5656;'>"; $data['rows'][] = array('id' => $md5S, 'cell' => array("<strong style='font-size:14px;style='color:{$color}'>{$href}{$tablename}</a></strong>", "{$spanStyle1}{$ligne["ROWS"]}</span>", "{$spanStyle1}{$ligne["idx"]}</span>", "{$spanStyle1}{$ligne["total_size"]}</span>", "{$spanStyle1}{$ligne["idxfrac"]}</span>")); } echo json_encode($data); }