mivodev/laravel-mikrotik-api-ros7

Laravel wrapper for mivodev/mikrotik-api-ros7. Provides ServiceProvider, Facade, and config.

Maintainers

Package info

github.com/mivodev/laravel-mikrotik-api-ros7

pkg:composer/mivodev/laravel-mikrotik-api-ros7

Statistics

Installs: 193

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.2.1 2026-05-28 10:33 UTC

This package is auto-updated.

Last update: 2026-05-28 10:34:11 UTC


README

Laravel Mikrotik API ROS7

Laravel Mikrotik API ROS7

PHP Version Laravel Version License

A clean, elegant Laravel wrapper for mivodev/mikrotik-api-ros7. Provides a ServiceProvider, Facade, configuration file, and Hybrid Connection Manager for seamless multi-tenant integration into your Laravel application.

Installation

composer require mivodev/laravel-mikrotik-api-ros7

Publish the configuration file:

php artisan vendor:publish --tag=mikrotik-ros7-config

Configuration

After publishing, you can configure your default router credentials in your .env file:

MIKROTIK_ROS7_HOST=192.168.1.1
MIKROTIK_ROS7_USERNAME=admin
MIKROTIK_ROS7_PASSWORD=rahasia
MIKROTIK_ROS7_PORT=443
MIKROTIK_ROS7_VERIFY_SSL=false
MIKROTIK_ROS7_TIMEOUT=10

Usage

1. REST-Native Service Managers (Sugar Syntax)

Unlike legacy socket APIs, ROS7 uses native REST calls. This package provides 22 REST-native service managers using clean HTTP verbs under the hood, with full IPv4 & IPv6 support:

use Mivo\LaravelMikrotikRos7\Facades\MikrotikRos7;

// 1. Hotspot Management (REST GET / PUT)
$users = MikrotikRos7::hotspot()->getUsers();
MikrotikRos7::hotspot()->addUser([
    'name' => 'dyzulk',
    'password' => 'secret123',
    'profile' => 'Premium-1M'
]);

// 2. PPPoE Secret Management (REST GET / DELETE / POST)
$activeSessions = MikrotikRos7::pppoe()->getActive();
MikrotikRos7::pppoe()->disconnect('customer_123'); // Disconnects session by REST GET lookup + DELETE /rest/ppp/active/{.id}

// 3. Simple Queues (REST PUT)
MikrotikRos7::queue()->addSimpleQueue([
    'name' => 'customer_123_limit',
    'target' => '192.168.88.10',
    'max-limit' => '1M/2M'
]);

// 4. Dual-Stack IPv4 / IPv6 Support (REST endpoints)
MikrotikRos7::ipAddress()->addV6('2001:db8::1/64', 'ether1'); // REST PUT to /rest/ipv6/address
MikrotikRos7::firewall()->addV6AddressList('blocked', '2001:db8::2'); // REST PUT to /rest/ipv6/firewall/address-list

Available managers: arp(), bridge(), dhcp(), dns(), firewall(), hotspot(), interfaces(), ipAddress(), ipPool(), ntp(), pppoe(), queue(), radius(), routes(), routerUsers(), scripts(), sessionMonitor(), syslog(), system(), usageTracker(), vpn(), wireless().

2. Fluent REST Query Builder

Query REST API resources using clean, fluent query strings instead of CLI parameters:

$users = MikrotikRos7::query('/rest/ip/hotspot/user')
    ->where('profile', 'Premium-1M')
    ->select(['name', 'limit-uptime'])
    ->get();

3. Hybrid Multi-Tenant Connections

Perfect for SaaS applications (like Mivo Enterprise) where router credentials are retrieved dynamically from the database:

use App\Models\Router;
use Mivo\LaravelMikrotikRos7\Facades\MikrotikRos7;

$router = Router::find(1);

// Establish dynamic connection from database model
$client = MikrotikRos7::connection([
    'host'       => $router->vpn_assigned_ip,
    'username'   => $router->api_username,
    'password'   => $router->api_password,
    'port'       => 443,
    'verify_ssl' => false,
]);

// Use any service manager on this specific router
$users = $client->hotspot()->getUsers();

4. Interactive Artisan Diagnosis

Diagnose and ping router connections easily using the Artisan tool:

# 1. Ping using a database Router ID
php artisan mivo:ros7-ping 1

# 2. Ping a manual host using options/flags (supports IP or Hostname/Domain)
php artisan mivo:ros7-ping --host=192.168.88.1 --username=admin --password=secret --port=443

# 3. Dynamic step-by-step interactive prompt (run without any arguments)
php artisan mivo:ros7-ping

For a list of options and usage details, run:

php artisan mivo:ros7-ping --help

License

MIT License. See LICENSE for details.