<?php

use App\Modules\Network\Controllers\AdminNetworkController;
use App\Modules\Network\Controllers\AdminMitigationController;
use App\Modules\Network\Controllers\AgentGoliathController;
use App\Modules\Network\Controllers\AgentMercuryController;
use App\Modules\Network\Controllers\NetworkController;

use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\Facades\Route;

/* URI SLUGS */
$admin_slug = 'admin';
$network_slug = 'network';
$locus_slug = 'locus';

/* BROADCAST ROUTES */
// This will only work IF it is an API token...
Broadcast::channel('goliathBgp', function ($t) {
    if($t->active) {
        return true;
    }
});

/* AGENT GOLIATH ROUTES */
Route::get("goliath/data/{_region_id}/{_subregion_id}/{_facility_id}", [AgentGoliathController::class, 'fetch_update'])
    ->middleware('token:goliath');

Route::post("goliath/register", [AgentGoliathController::class, 'register_appliance'])
    ->middleware('token:goliath');

Route::post("goliath/hash", [AgentGoliathController::class, 'update_hash'])
    ->middleware('token:goliath');

Route::post("goliath/attack", [AgentGoliathController::class, 'add_attack'])
    ->middleware('token:goliath');

Route::post("goliath/pcap/{_appliance_id}/{_capture_id}", [AgentGoliathController::class, 'upload_pcap'])
    ->middleware('token:goliath');

/* AGENT MERCURY ROUTES */
Route::get("mercury/data/{_tag}", [AgentMercuryController::class, 'fetch_update'])
    ->middleware('token:mercury');

Route::post("mercury/register", [AgentMercuryController::class, 'register_appliance'])
    ->middleware('token:mercury');

Route::post("mercury/summary/{_tag}", [AgentMercuryController::class, 'upload_summary'])
    ->middleware('token:mercury');

/* HACKY ROUTES - YUCKY */
Route::get("$network_slug/ports", [NetworkController::class, 'get_portnames'])
    ->middleware(['api']);

/* APERMON */
Route::post("goliath/redirect", [AgentGoliathController::class, 'prefix_redirect'])
    ->middleware('whitelist:apermon');
