mivodev / laravel-mikrotik-api-ros7
Laravel wrapper for mivodev/mikrotik-api-ros7. Provides ServiceProvider, Facade, and config.
Package info
github.com/mivodev/laravel-mikrotik-api-ros7
pkg:composer/mivodev/laravel-mikrotik-api-ros7
Requires
- php: ^8.2
- illuminate/support: ^10.0 || ^11.0 || ^12.0 || ^13.0
- mivodev/mikrotik-api-ros7: ^0.1.0
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^10.0
- pestphp/pest: ^3.0
README
Laravel Mikrotik API ROS7
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.
