From 803ec749286c658fc72fe9723ea9c546c98cb337 Mon Sep 17 00:00:00 2001 From: Leon Morival Date: Fri, 10 Jul 2026 23:49:24 +0200 Subject: [PATCH] feat: rcon console --- app/Filament/Pages/RconConsole.php | 82 +++++++++++++++++++ .../filament/pages/rcon-console.blade.php | 18 ++++ routes/api.php | 3 +- 3 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 app/Filament/Pages/RconConsole.php create mode 100644 resources/views/filament/pages/rcon-console.blade.php diff --git a/app/Filament/Pages/RconConsole.php b/app/Filament/Pages/RconConsole.php new file mode 100644 index 0000000..33fcc5b --- /dev/null +++ b/app/Filament/Pages/RconConsole.php @@ -0,0 +1,82 @@ +form->fill(); + } + + public function form(Schema $schema): Schema + { + return $schema + ->schema([ + TextInput::make('command') + ->label('Commande RCON') + ->placeholder('ex: list, say Bonjour') + ->required() + ->autofocus(), + ]) + ->statePath('data'); + } + + public function executeCommand(MinecraftRconClient $client): void + { + $data = $this->form->getState(); + $command = $data['command']; + + try { + $response = $client->command($command); + + // Format response if empty + $this->output = blank($response) ? "(Commande exécutée, aucun retour texte)" : $response; + + // Clear input + $this->form->fill(); + + Notification::make() + ->title('Commande envoyée') + ->success() + ->send(); + } catch (\Throwable $e) { + $this->output = null; + Notification::make() + ->title('Erreur RCON') + ->body($e->getMessage()) + ->danger() + ->send(); + } + } +} diff --git a/resources/views/filament/pages/rcon-console.blade.php b/resources/views/filament/pages/rcon-console.blade.php new file mode 100644 index 0000000..8810d6c --- /dev/null +++ b/resources/views/filament/pages/rcon-console.blade.php @@ -0,0 +1,18 @@ + +
+ {{ $this->form }} + +
+ + Exécuter + +
+
+ + @if ($output !== null) +
+

Résultat du serveur :

+
{{ $output }}
+
+ @endif +
diff --git a/routes/api.php b/routes/api.php index b80e50b..44d3155 100644 --- a/routes/api.php +++ b/routes/api.php @@ -3,4 +3,5 @@ use App\Http\Controllers\AccessRequestsController; use Illuminate\Support\Facades\Route; -Route::post('/access-requests', [AccessRequestsController::class, 'store']); +Route::post('/access-requests', [AccessRequestsController::class, 'store']) + ->middleware('throttle:3,1'); // Limite à 3 requêtes par minute