diff --git a/admin_debug.php b/admin_debug.php index 8d15d408..dcb11792 100644 --- a/admin_debug.php +++ b/admin_debug.php @@ -1,9 +1,7 @@ $count, - 'size' => $size - ]; -} - -// Function to compare two arrays recursively and return the differences -function arrayDiffRecursive($array1, $array2) { - $diff = array(); - - foreach ($array1 as $key => $value) { - if (is_array($value)) { - if (!isset($array2[$key]) || !is_array($array2[$key])) { - $diff[$key] = $value; - } else { - $recursiveDiff = arrayDiffRecursive($value, $array2[$key]); - if (!empty($recursiveDiff)) { - $diff[$key] = $recursiveDiff; - } - } - } else { - if (!isset($array2[$key]) || $array2[$key] !== $value) { - $diff[$key] = $value; - } - } - } - - return $diff; -} - -// Function to load the table structures from an SQL dump file URL -function loadTableStructuresFromSQLDumpURL($fileURL) { - $context = stream_context_create(array('http' => array('header' => 'Accept: application/octet-stream'))); - $fileContent = file_get_contents($fileURL, false, $context); - - if ($fileContent === false) { - return null; - } - - $structure = array(); - $queries = explode(";", $fileContent); - - foreach ($queries as $query) { - $query = trim($query); - - if (!empty($query)) { - if (preg_match("/^CREATE TABLE `(.*)` \((.*)\)$/s", $query, $matches)) { - $tableName = $matches[1]; - $tableStructure = $matches[2]; - $structure[$tableName] = array('structure' => $tableStructure); - } - } - } - - return $structure; -} - -// Function to fetch the database structure from the MySQL server -function fetchDatabaseStructureFromServer() { - - global $mysqli; - - $tables = array(); - - // Fetch table names - $result = $mysqli->query("SHOW TABLES"); - - if ($result->num_rows > 0) { - while ($row = $result->fetch_row()) { - $tableName = $row[0]; - $tables[$tableName] = array(); - } - } - - // Fetch table structures - foreach ($tables as $tableName => &$table) { - $result = $mysqli->query("SHOW CREATE TABLE `$tableName`"); - - if ($result->num_rows > 0) { - $row = $result->fetch_row(); - $table['structure'] = $row[1]; - } - } - - return $tables; -} - -//function to get current crontab and return it as an array -function get_crontab() { - $crontab = shell_exec('crontab -l'); - $crontab = explode(PHP_EOL, $crontab); - return $crontab; -} - -// URL to the SQL dump file -$fileURL = "https://raw.githubusercontent.com/itflow-org/itflow/master/db.sql"; - -// Load the desired table structures from the SQL dump file URL -$desiredStructure = loadTableStructuresFromSQLDumpURL($fileURL); - -if ($desiredStructure === null) { - die("Failed to load the desired table structures from the SQL dump file URL."); -} - -// Fetch the current database structure from the MySQL server -$currentStructure = fetchDatabaseStructureFromServer(); - -if ($currentStructure === null) { - die("Failed to fetch the current database structure from the server."); -} - -// Compare the structures and display the differences -$differences = arrayDiffRecursive($desiredStructure, $currentStructure); - -//DB Stats -// Query to fetch the number of tables -$tablesQuery = "SHOW TABLES"; -$tablesResult = $mysqli->query($tablesQuery); - -$numTables = $tablesResult->num_rows; -$numFields = 0; -$numRows = 0; - -// Loop through each table -while ($row = $tablesResult->fetch_row()) { - $tableName = $row[0]; - - // Query to fetch the number of fields - $fieldsQuery = "DESCRIBE `$tableName`"; - $fieldsResult = $mysqli->query($fieldsQuery); - - // Check if the query was successful - if ($fieldsResult) { - $numFields += $fieldsResult->num_rows; - - // Query to fetch the number of rows - $rowsQuery = "SELECT COUNT(*) FROM `$tableName`"; - $rowsResult = $mysqli->query($rowsQuery); - - // Check if the query was successful - if ($rowsResult) { - $numRows += $rowsResult->fetch_row()[0]; - } else { - echo "Error executing query: " . $mysqli->error; - } - } else { - echo "Error executing query: " . $mysqli->error; - } -} - -//Get loaded PHP modules -$loadedModules = get_loaded_extensions(); - -//Get Server Info / Service versions -$phpVersion = phpversion(); -$databaseInfo = mysqli_get_server_info($mysqli) . " / " . $mysqli->server_version; -$operatingSystem = php_uname(); -$webServer = $_SERVER['SERVER_SOFTWARE']; -$errorLog = ini_get('error_log') ?: "Debian/Ubuntu default is usually /var/log/apache2/error.log"; -$updates = fetchUpdates(); - -?> - -
-
-

Debug

-
-
- -

Debugging

- -
- -

Server Info

- - "; - echo "Database Version: " . $databaseInfo . "
"; - echo "Operating System: " . $operatingSystem . "
"; - echo "Web Server: " . $webServer . "
"; - echo "Apache/PHP Error Log: " . $errorLog - ?> - -
- -

File System

- "; - echo "Total size of files in $folderPath and its subdirectories: " . $totalSizeMB . " MB"; - ?> - -
-

ITFlow app

- current_version . "
"; - echo "Cron enabled: " . $config_enable_cron . "
"; - echo "App Timezone: " . $config_timezone; - ?> - -
- -

Database Structure Check

- -

Database stats

- - "; - echo "Total number of fields: " . $numFields . "
"; - echo "Total number of rows: " . $numRows . "
"; - echo "Current Database Version: " . CURRENT_DATABASE_VERSION . "
"; - ?> - -
- -

Table Stats

- - - - - - - - - - - - - - - - -
Table NameNumber of FieldsNumber of Rows
- -
- -

PHP Modules Installed

- - "; - } - ?> - -
- -

PHP Info

- (.*).*$%ms', '$1', $phpinfo); - - //Remove everything after the body tag - $phpinfo = preg_replace('%^(.*).*$%ms', '$1', $phpinfo); - - //Remove the body tag itself - $phpinfo = preg_replace('%^(.*)$%ms', '$1', $phpinfo); - - //Output the result - echo $phpinfo; - ?> - -
-
-
- -