/*
* Ferramenta de Emergência: Limpeza de Espaço (26GB)
*/
add_action('admin_menu', function() {
add_submenu_page('tools.php', 'Limpeza de Espaço', 'Limpeza de Espaço', 'manage_options', 'limpeza-espaco', 'renderizar_limpeza_espaco');
});
function obter_tamanho_pasta_php($dir) {
$tamanho = 0;
$arquivos = glob(rtrim($dir, '/').'/*', GLOB_NOSORT);
if ($arquivos) {
foreach ($arquivos as $cada) {
$tamanho += is_file($cada) ? filesize($cada) : obter_tamanho_pasta_php($cada);
}
}
return $tamanho;
}
function formatar_bytes_espaco($bytes) {
if ($bytes == 0) return '0 B';
$k = 1024;
$sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
$i = floor(log($bytes) / log($k));
return round($bytes / pow($k, $i), 2) . ' ' . $sizes[$i];
}
function renderizar_limpeza_espaco() {
echo '
Inspeção de Emergência (Alvo: 26GB)
';
// Lógica para apagar arquivos soltos
if (isset($_POST['apagar_arquivo']) && current_user_can('manage_options')) {
$arquivo = sanitize_text_field($_POST['apagar_arquivo']);
if (file_exists($arquivo) && is_file($arquivo)) {
unlink($arquivo);
echo '
Apagado com sucesso: ' . esc_html($arquivo) . '
';
}
}
// Lógica para apagar pastas inteiras (Staging/Cache) via Shell
if (isset($_POST['apagar_pasta']) && current_user_can('manage_options')) {
$pasta = sanitize_text_field($_POST['apagar_pasta']);
if (file_exists($pasta) && is_dir($pasta)) {
shell_exec("rm -rf " . escapeshellarg($pasta));
echo '
Comando de destruição enviado para a pasta: ' . esc_html($pasta) . '
';
}
}
echo '
Suspeitos Comuns (Arquivos Pesados na Raiz do Servidor):
';
// Busca arquivos de log gigantes ou backups comprimidos
$arquivos_raiz = glob(ABSPATH . '*.{zip,tar,gz,log,sql}', GLOB_BRACE);
if (file_exists(ABSPATH . 'error_log')) {
$arquivos_raiz[] = ABSPATH . 'error_log';
}
echo '
| Arquivo | Tamanho | Ação |
';
if (!empty($arquivos_raiz)) {
foreach ($arquivos_raiz as $arq) {
if (file_exists($arq) && is_file($arq)) {
echo '' . esc_html(basename($arq)) . ' ' . esc_html($arq) . ' | ';
echo '' . formatar_bytes_espaco(filesize($arq)) . ' | ';
echo '
|
';
}
}
} else {
echo '| Nenhum arquivo de log ou backup pesado encontrado na raiz. |
';
}
echo '
';
echo '
Mapeamento das Maiores Pastas (Aguarde o carregamento):
';
$pastas_alvo = [
WP_CONTENT_DIR . '/uploads',
WP_CONTENT_DIR . '/cache',
WP_CONTENT_DIR . '/updraft',
WP_CONTENT_DIR . '/plugins',
];
// Caça pastas que tenham "staging" ou "clone" no nome
$pastas_raiz = glob(ABSPATH . '*', GLOB_ONLYDIR);
if ($pastas_raiz) {
foreach($pastas_raiz as $p) {
if (stripos($p, 'staging') !== false || stripos($p, 'clone') !== false) {
$pastas_alvo[] = $p;
}
}
}
echo '
| Caminho da Pasta | Tamanho Ocupado | Ação Rápida |
';
foreach (array_unique($pastas_alvo) as $pasta) {
if (file_exists($pasta)) {
// Tenta medir rápido via shell, se o servidor bloquear, faz na unha pelo PHP
$tamanho_shell = shell_exec("du -sb " . escapeshellarg($pasta) . " 2>/dev/null | cut -f1");
if (is_numeric(trim($tamanho_shell))) {
$tamanho_formatado = formatar_bytes_espaco((int)trim($tamanho_shell));
} else {
$tamanho_formatado = formatar_bytes_espaco(obter_tamanho_pasta_php($pasta));
}
echo '' . esc_html(basename($pasta)) . ' ' . esc_html($pasta) . ' | ';
echo '' . esc_html($tamanho_formatado) . ' | ';
// Trava de segurança: SÓ permite apagar via botão pastas descartáveis (staging, cache, updraft)
if (preg_match('/(staging|cache|updraft|clone)/i', basename($pasta))) {
echo '
| ';
} else {
echo 'Protegida do sistema | ';
}
echo '
';
}
}
echo '
';
echo '
';
}/*
* Ferramenta de Emergência: Limpeza de Espaço (26GB)
*/
add_action('admin_menu', function() {
add_submenu_page('tools.php', 'Limpeza de Espaço', 'Limpeza de Espaço', 'manage_options', 'limpeza-espaco', 'renderizar_limpeza_espaco');
});
function obter_tamanho_pasta_php($dir) {
$tamanho = 0;
$arquivos = glob(rtrim($dir, '/').'/*', GLOB_NOSORT);
if ($arquivos) {
foreach ($arquivos as $cada) {
$tamanho += is_file($cada) ? filesize($cada) : obter_tamanho_pasta_php($cada);
}
}
return $tamanho;
}
function formatar_bytes_espaco($bytes) {
if ($bytes == 0) return '0 B';
$k = 1024;
$sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
$i = floor(log($bytes) / log($k));
return round($bytes / pow($k, $i), 2) . ' ' . $sizes[$i];
}
function renderizar_limpeza_espaco() {
echo 'Inspeção de Emergência (Alvo: 26GB)
';
// Lógica para apagar arquivos soltos
if (isset($_POST['apagar_arquivo']) && current_user_can('manage_options')) {
$arquivo = sanitize_text_field($_POST['apagar_arquivo']);
if (file_exists($arquivo) && is_file($arquivo)) {
unlink($arquivo);
echo '
Apagado com sucesso: ' . esc_html($arquivo) . '
';
}
}
// Lógica para apagar pastas inteiras (Staging/Cache) via Shell
if (isset($_POST['apagar_pasta']) && current_user_can('manage_options')) {
$pasta = sanitize_text_field($_POST['apagar_pasta']);
if (file_exists($pasta) && is_dir($pasta)) {
shell_exec("rm -rf " . escapeshellarg($pasta));
echo '
Comando de destruição enviado para a pasta: ' . esc_html($pasta) . '
';
}
}
echo '
Suspeitos Comuns (Arquivos Pesados na Raiz do Servidor):
';
// Busca arquivos de log gigantes ou backups comprimidos
$arquivos_raiz = glob(ABSPATH . '*.{zip,tar,gz,log,sql}', GLOB_BRACE);
if (file_exists(ABSPATH . 'error_log')) {
$arquivos_raiz[] = ABSPATH . 'error_log';
}
echo '
| Arquivo | Tamanho | Ação |
';
if (!empty($arquivos_raiz)) {
foreach ($arquivos_raiz as $arq) {
if (file_exists($arq) && is_file($arq)) {
echo '' . esc_html(basename($arq)) . ' ' . esc_html($arq) . ' | ';
echo '' . formatar_bytes_espaco(filesize($arq)) . ' | ';
echo '
|
';
}
}
} else {
echo '| Nenhum arquivo de log ou backup pesado encontrado na raiz. |
';
}
echo '
';
echo '
Mapeamento das Maiores Pastas (Aguarde o carregamento):
';
$pastas_alvo = [
WP_CONTENT_DIR . '/uploads',
WP_CONTENT_DIR . '/cache',
WP_CONTENT_DIR . '/updraft',
WP_CONTENT_DIR . '/plugins',
];
// Caça pastas que tenham "staging" ou "clone" no nome
$pastas_raiz = glob(ABSPATH . '*', GLOB_ONLYDIR);
if ($pastas_raiz) {
foreach($pastas_raiz as $p) {
if (stripos($p, 'staging') !== false || stripos($p, 'clone') !== false) {
$pastas_alvo[] = $p;
}
}
}
echo '
| Caminho da Pasta | Tamanho Ocupado | Ação Rápida |
';
foreach (array_unique($pastas_alvo) as $pasta) {
if (file_exists($pasta)) {
// Tenta medir rápido via shell, se o servidor bloquear, faz na unha pelo PHP
$tamanho_shell = shell_exec("du -sb " . escapeshellarg($pasta) . " 2>/dev/null | cut -f1");
if (is_numeric(trim($tamanho_shell))) {
$tamanho_formatado = formatar_bytes_espaco((int)trim($tamanho_shell));
} else {
$tamanho_formatado = formatar_bytes_espaco(obter_tamanho_pasta_php($pasta));
}
echo '' . esc_html(basename($pasta)) . ' ' . esc_html($pasta) . ' | ';
echo '' . esc_html($tamanho_formatado) . ' | ';
// Trava de segurança: SÓ permite apagar via botão pastas descartáveis (staging, cache, updraft)
if (preg_match('/(staging|cache|updraft|clone)/i', basename($pasta))) {
echo '
| ';
} else {
echo 'Protegida do sistema | ';
}
echo '
';
}
}
echo '
';
echo '
';
}
https://soropositivo.org/