Skip to content

Commit

Permalink
[REF. #71] Backport dummy server commands.
Browse files Browse the repository at this point in the history
  • Loading branch information
csavelief committed Sep 17, 2024
1 parent a1e52de commit 75467d3
Show file tree
Hide file tree
Showing 13 changed files with 4,185 additions and 6 deletions.
73 changes: 73 additions & 0 deletions app/Modules/CyberBuddy/Http/Controllers/CyberBuddyController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<?php

namespace App\Modules\CyberBuddy\Http\Controllers;

use App\Models\YnhServer;
use App\Modules\AdversaryMeter\Http\Controllers\Controller;
use App\User;
use BotMan\BotMan\BotMan;
use Illuminate\Support\Facades\Auth;

class CyberBuddyController extends Controller
{
public function __construct()
{
//
}

public function showPage()
{
return view('cyber-buddy.page');
}

public function showChat()
{
return view('cyber-buddy.chat');
}

public function handle(): void
{
/** @var User $user */
$user = Auth::user();
$botman = app('botman');
$botman->hears('/login {username} {password}', function (BotMan $botman, string $username, string $password) use ($user) {
if ($user) {
$botman->userStorage()->save(['user_id' => $user->id]);
$botman->reply('You are now logged in.');
} else {
$user = User::where('email', $username)->first();
if (!$user) {
$botman->reply('Invalid username or password.');
} else {
if (Auth::attempt(['email' => $username, 'password' => $password])) {
$botman->userStorage()->save(['user_id' => $user->id]);
$botman->reply('You are now logged in.');
} else {
$botman->reply('Invalid username or password.');
}
}
}
});
$botman->hears('/servers', function (BotMan $botman) {
/** @var int $userId */
$userId = $botman->userStorage()->get('user_id');
$user = $userId ? User::find($userId) : null;
$servers = $user ? YnhServer::forUser($user) : collect();
if ($servers->isEmpty()) {
$botman->reply('Connectez-vous pour accéder à cette commande.<br>Pour ce faire, vous pouvez utiliser la commande <b>/login {username} {password}</b>');
} else {
$list = $servers->filter(fn(YnhServer $server) => $server->ip())
->map(function (YnhServer $server) use ($botman, $user) {
$json = base64_encode(json_encode($server));
return "<span data-json=\"{$json}\">{$server->name} / {$server->ip()}</a>";
})
->join("<br>");
$botman->reply($list);
}
});
$botman->fallback(function (BotMan $botman) {
$botman->reply('Désolé, je n\'ai pas compris votre commande.');
});
$botman->listen();
}
}
1 change: 1 addition & 0 deletions app/Modules/CyberBuddy/api.php
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<?php
9 changes: 9 additions & 0 deletions app/Modules/CyberBuddy/web.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php

use Illuminate\Support\Facades\Route;

Route::get('/cyber-buddy', 'CyberBuddyController@showPage');

Route::get('/cyber-buddy/chat', 'CyberBuddyController@showChat');

Route::match(['get', 'post'], 'botman', 'CyberBuddyController@handle');
15 changes: 10 additions & 5 deletions app/Providers/RouteServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace App\Providers;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;

Expand All @@ -23,9 +24,8 @@ class RouteServiceProvider extends ServiceProvider
*/
public function boot()
{
//

parent::boot();
VerifyCsrfToken::except(['cb/web/botman']);
}

/**
Expand All @@ -36,10 +36,7 @@ public function boot()
public function map()
{
$this->mapApiRoutes();

$this->mapWebRoutes();

//
}

/**
Expand All @@ -58,6 +55,10 @@ protected function mapWebRoutes()
->prefix('am/web')
->namespace('App\Modules\AdversaryMeter\Http\Controllers')
->group(base_path('app/Modules/AdversaryMeter/web.php'));
Route::middleware('web')
->prefix('cb/web')
->namespace('App\Modules\CyberBuddy\Http\Controllers')
->group(base_path('app/Modules/CyberBuddy/web.php'));
}

/**
Expand All @@ -77,5 +78,9 @@ protected function mapApiRoutes()
->middleware('api')
->namespace('App\Modules\AdversaryMeter\Http\Controllers')
->group(base_path('app/Modules/AdversaryMeter/api.php'));
Route::prefix('cb/api/v2')
->middleware('api')
->namespace('App\Modules\CyberBuddy\Http\Controllers')
->group(base_path('app/Modules/CyberBuddy/api.php'));
}
}
2 changes: 2 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
"ext-gd": "*",
"ext-imagick": "*",
"ext-pcntl": "*",
"botman/botman": "^2.8",
"botman/driver-web": "^1.5",
"guzzlehttp/guzzle": "^7.5",
"laravel/framework": "^11.20",
"laravel/sanctum": "^4.0",
Expand Down
Loading

0 comments on commit 75467d3

Please sign in to comment.