Fix delete function with sudo and remove export feature

This commit is contained in:
2026-01-01 20:25:08 +11:00
parent 075faa5731
commit 809ce8b6f3
3 changed files with 9 additions and 67 deletions

View File

@@ -97,44 +97,19 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($action === 'delete') {
if (is_dir($wsPath)) {
// Delete directory recursively
deleteDirectory($wsPath);
echo json_encode(['success' => true, 'message' => 'Workspace deleted']);
// Delete directory recursively using sudo
exec("sudo rm -rf " . escapeshellarg($wsPath));
if (!file_exists($wsPath)) {
echo json_encode(['success' => true, 'message' => 'Workspace deleted']);
} else {
echo json_encode(['success' => false, 'error' => 'Failed to delete workspace. Check permissions.']);
}
} else {
echo json_encode(['success' => false, 'error' => 'Workspace not found']);
}
exit;
}
if ($action === 'export') {
if (!is_dir($wsPath)) {
echo json_encode(['success' => false, 'error' => 'Workspace not found']);
exit;
}
$exportFile = EXPORT_DIR . '/' . $name . '.tar.gz';
// Create tar.gz archive
$cmd = "cd " . escapeshellarg(WORKSPACE_DIR) . " && tar -czf " . escapeshellarg($exportFile) . " " . escapeshellarg($name) . " 2>&1";
$output = shell_exec($cmd);
if (file_exists($exportFile)) {
$size = filesize($exportFile);
echo json_encode([
'success' => true,
'downloadUrl' => 'workspaces.php?action=download&name=' . urlencode($name),
'filename' => $name . '.tar.gz',
'size' => formatBytes($size),
'message' => 'Export created successfully'
]);
} else {
echo json_encode([
'success' => false,
'error' => 'Failed to create export: ' . $output
]);
}
exit;
}
}
echo json_encode(['error' => 'Invalid request']);
@@ -161,14 +136,3 @@ function formatBytes($bytes)
return $bytes . ' B';
}
}
function deleteDirectory($dir)
{
if (!is_dir($dir)) return false;
$files = array_diff(scandir($dir), ['.', '..']);
foreach ($files as $file) {
$path = $dir . '/' . $file;
is_dir($path) ? deleteDirectory($path) : unlink($path);
}
return rmdir($dir);
}