Skip to content
ZILLEALI edited this page May 20, 2026 · 1 revision

Events

Laravel events fired by zilleali/mikrotik-laravel.


Available Events

Event Fired When
SessionCreated PPPoE/Hotspot session manually dispatched
SessionDisconnected PPPoE/Hotspot session manually dispatched
RouterConnected Successful connection to router
RouterUnreachable Router unreachable after all retry attempts

Setup

Register listeners in EventServiceProvider:

use ZillEAli\MikrotikLaravel\Events\SessionCreated;
use ZillEAli\MikrotikLaravel\Events\SessionDisconnected;
use ZillEAli\MikrotikLaravel\Events\RouterConnected;
use ZillEAli\MikrotikLaravel\Events\RouterUnreachable;

protected $listen = [
    SessionCreated::class => [
        UpdateSubscriberStatusListener::class,
        LogSessionListener::class,
    ],
    SessionDisconnected::class => [
        UpdateSubscriberStatusListener::class,
    ],
    RouterConnected::class => [
        LogRouterConnectionListener::class,
    ],
    RouterUnreachable::class => [
        SendNocAlertListener::class,
        LogRouterDownListener::class,
    ],
];

SessionCreated

Fired when a PPPoE or Hotspot session starts. Must be dispatched manually from your application.

MikroTik::dispatchSessionCreated(
    username: 'ali-home',
    ip:       '10.0.0.1',
    service:  'pppoe',    // 'pppoe' or 'hotspot'
    mac:      'AA:BB:CC:DD:EE:FF'
);

Event properties:

$event->username;   // 'ali-home'
$event->ip;         // '10.0.0.1'
$event->router;     // 'default' or named router
$event->service;    // 'pppoe' or 'hotspot'
$event->macAddress; // 'AA:BB:CC:DD:EE:FF' or null

SessionDisconnected

Fired when a PPPoE or Hotspot session ends.

MikroTik::dispatchSessionDisconnected(
    username: 'ali-home',
    ip:       '10.0.0.1',
    uptime:   '2h14m',
    reason:   'manual'
);

Event properties:

$event->username; // 'ali-home'
$event->router;   // 'default'
$event->ip;       // '10.0.0.1' or null
$event->uptime;   // '2h14m' or null
$event->reason;   // 'manual', 'timeout', 'idle', etc.

RouterConnected

Fired automatically when a connection to a router succeeds.

Event properties:

$event->host;   // '192.168.88.1'
$event->port;   // 8728
$event->router; // 'default' or named router

Example listener:

class LogRouterConnectionListener
{
    public function handle(RouterConnected $event): void
    {
        Log::info("Router connected: {$event->router} ({$event->host}:{$event->port})");
    }
}

RouterUnreachable

Fired automatically when all retry attempts fail.

Event properties:

$event->host;      // '192.168.88.1'
$event->port;      // 8728
$event->router;    // 'default' or named router
$event->attempts;  // 3
$event->error;     // 'Connection refused'
$event->exception; // ConnectionException instance or null

Example listener — NOC alert:

class SendNocAlertListener
{
    public function handle(RouterUnreachable $event): void
    {
        // Send alert to NOC team
        Notification::send(
            User::role('noc')->get(),
            new RouterDownNotification($event->router, $event->host)
        );

        Log::critical("Router unreachable: {$event->router}", [
            'host'     => $event->host,
            'attempts' => $event->attempts,
            'error'    => $event->error,
        ]);
    }
}

Configuration | Artisan Commands →


📝 Found an error or missing info?
Edit this page or open an issue to suggest improvements.

Clone this wiki locally