Files
EduBox Dev b383b11ae2 feat(agent,server): v0.2.7 - mu-plugin WordPress robuste, réparation wp-config, proxy cookies/headers
- Agent: mu-plugin embarqué amélioré (HTTPS forcé, filtres URL, localhost:port)
- Agent: suppression des WP_HOME/WP_SITEURL hardcodés au démarrage des instances
- Server/proxy: envoi X-Forwarded-Port, réécriture headers/body élargie
- Server/proxy: sanitization des Set-Cookie (Secure, SameSite, Domain)
- Dashboard: version agent 0.2.7, action Supprimer complète
- Cleanup: binaires agent 0.2.3-0.2.6 remplacés par 0.2.7
2026-06-17 18:23:06 +00:00

49 lines
1.6 KiB
TypeScript

"use client";
import { useState } from "react";
import { Button } from "@/components/ui/button";
export default function InstanceActions({ instanceId, status }: { instanceId: string; status: string }) {
const [loading, setLoading] = useState<string | null>(null);
async function action(type: string) {
setLoading(type);
if (type === "delete") {
if (!confirm("Voulez-vous vraiment supprimer cette instance ?")) {
setLoading(null);
return;
}
await fetch(`/api/instances?id=${instanceId}`, { method: "DELETE" });
} else {
await fetch("/api/instances", {
method: "PATCH",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ id: instanceId, action: type }),
});
}
setLoading(null);
window.location.reload();
}
return (
<div className="flex gap-2">
{status !== "running" && (
<Button size="sm" variant="outline" onClick={() => action("start")} disabled={!!loading}>
{loading === "start" ? "..." : "Démarrer"}
</Button>
)}
{status === "running" && (
<Button size="sm" variant="outline" onClick={() => action("stop")} disabled={!!loading}>
{loading === "stop" ? "..." : "Arrêter"}
</Button>
)}
<Button size="sm" variant="outline" onClick={() => action("reset")} disabled={!!loading}>
{loading === "reset" ? "..." : "Réinitialiser"}
</Button>
<Button size="sm" variant="destructive" onClick={() => action("delete")} disabled={!!loading}>
{loading === "delete" ? "..." : "Supprimer"}
</Button>
</div>
);
}