-
Notifications
You must be signed in to change notification settings - Fork 3
Multi‐Router‐Setup
ZILLEALI edited this page May 20, 2026
·
1 revision
Manage multiple MikroTik routers from one Laravel application.
// config/mikrotik.php
return [
// Default router
'host' => env('MIKROTIK_HOST', '192.168.88.1'),
'username' => env('MIKROTIK_USERNAME', 'admin'),
'password' => env('MIKROTIK_PASSWORD', ''),
// Named routers
'routers' => [
'main' => [
'host' => '192.168.1.1',
'port' => 8728,
'username' => 'admin',
'password' => 'secret',
'timeout' => 10,
],
'branch-khi' => [
'host' => '192.168.2.1',
'port' => 8728,
'username' => 'admin',
'password' => 'secret',
],
'branch-lhr' => [
'host' => '10.0.0.1',
'port' => 8729,
'username' => 'admin',
'password' => 'secret',
'ssl' => true,
],
'edge-pop1' => [
'host' => '172.16.0.1',
'username' => 'monitor',
'password' => 'readonly',
'timeout' => 5,
],
],
];// Default router (from top-level config)
MikroTik::pppoe()->getActiveSessions();
// Named router — resets to default after each call
MikroTik::router('main')->pppoe()->getActiveSessions();
MikroTik::router('branch-khi')->system()->getCpuLoad();
MikroTik::router('branch-lhr')->hotspot()->getActiveHosts();
// Chain multiple calls on same router
$sessions = MikroTik::router('main')->pppoe()->getActiveSessions();
$cpu = MikroTik::router('main')->system()->getCpuLoad();
// Note: each call uses router() — it resets after every manager call
// Check all routers health
$routers = ['main', 'branch-khi', 'branch-lhr', 'edge-pop1'];
foreach ($routers as $router) {
try {
$cpu = MikroTik::router($router)->system()->getCpuLoad();
$uptime = MikroTik::router($router)->system()->getUptime();
echo "{$router}: CPU {$cpu}% | Uptime {$uptime}";
} catch (\Exception $e) {
echo "{$router}: UNREACHABLE — {$e->getMessage()}";
}
}// Pool caches connections per router name
MikroTik::router('main')->pppoe()->getActiveSessions(); // connects
MikroTik::router('main')->system()->getCpuLoad(); // reuses connection
MikroTik::router('branch-khi')->pppoe()->getActiveSessions(); // new connection
// Pool status
$pool = MikroTik::getPool();
$pool->getNames(); // ['main', 'branch-khi']
$pool->count(); // 2
$pool->getSummary(); // ['main' => ['connected' => true], ...]
// Disconnect specific router
MikroTik::disconnect('branch-khi');
// Disconnect all
MikroTik::disconnectAll();// Get all sites summary for NOC dashboard
class NocDashboardService
{
protected array $routers = ['pop1', 'pop2', 'pop3', 'pop4'];
public function getAllSitesSummary(): array
{
$summary = [];
foreach ($this->routers as $router) {
try {
$summary[$router] = [
'status' => 'online',
'cpu' => MikroTik::router($router)->system()->getCpuLoad(),
'sessions' => MikroTik::router($router)->sessionMonitor()->getSummary(),
'uptime' => MikroTik::router($router)->system()->getUptime(),
];
} catch (\Exception $e) {
$summary[$router] = [
'status' => 'offline',
'error' => $e->getMessage(),
];
}
}
// Cleanup connections
MikroTik::disconnectAll();
return $summary;
}
}← Artisan Commands | SSL Setup →
📝 Found an error or missing info?
Edit this page or open an issue to suggest improvements.