Exemple #1
0
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;
            }
        }
    }
}
Exemple #2
0
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);
}