anandaerditya/routeros-api-php

Mikrotik RouterOS API 通讯模块,适用于 PHP

1.5.3 2024-08-13 07:03 UTC

This package is auto-updated.

Last update: 2024-09-13 07:24:11 UTC


README

Static Badge Packagist Version GitHub Release

这个库使用 PHP Socket 下的 API 客户端通讯器,感谢 EvilFreelancer 的代码仓库。此库提供基于 Winbox 下可用配置的内置方法,包括相应的命令和参数。目前,此库支持 RouterOS 的预 6.43 和后 6.43 版本,如 此代码仓库中所述

变更日志

1.5.3 (错误修复)

  1. send() 方法下添加对 !trap!re!done!fatal 类型消息的处理程序。

1.4.2 (错误修复)

  1. 修复在 send() 方法下处理 Mikrotik API 响应消息的问题;

1.3.22 (热修复)

  1. 添加新的异常:ErrorException;
  2. 为每个方法添加错误处理程序,以捕获 mikrotik API 中的任何错误。
  3. 添加新的方法
    • ip_dhcp_server_lease()
    • ip_arp()
    • router_switch()
    • router_switch_port()

要求

  • PHP : 版本 8.0 及以上
  • ext-sockets : PHP 的 Socket 扩展
  • RouterOS : pre-6.43post-6.43 (在 RouterBoardCloud Router Switch 设备上测试过)

如何安装

在 composer 中,只需将此命令复制到您的项目中以开始添加此库。

composer require anandaerditya/routeros-api-php

使用库

如果您正在使用 Composer 项目,例如 Laravel 框架,您可以直接在 Erditya\RouterOSInstance 类下调用库。如下所示

    include 'vendor/autoload.php';
    
    use Erditya\RouterOSInstance;
    
    $router = new RouterOSInstance();
    
    # Create connection
    $router = $router->connect(
        [
            'host' => '192.168.10.1',
            'user' => 'username',
            'pass' => 'password',
            'port' => 8728 
        ]
    );

    # Example : Fetch all IP Addresses
    if ($router->is_connected()) {
        # Get All Addresses
        var_dump($router->ip_addresses());
        
        # Get address with interface ether2
        var_dump($router->ip_addresses(['interface' => 'ether2']));
        
        # Update address item in ID *2
        var_dump($router->ip_addresses('set', [
            '.id' => '*2',
            'comment' => 'Some Comments'
        ]));
    }

或者,另一种方法是

    include 'vendor/autoload.php';
    
    use Erditya\RouterOSInstance;
    
    $router = new RouterOSInstance();
    
    # Create connection
    $router = $router->connect(
        [
            'host' => '192.168.10.1',
            'user' => 'username',
            'pass' => 'password',
            'port' => 8728 
        ]
    );

    # Get All Addresses
    var_dump($router->ip_addresses());
        
    # Get address with interface ether2
    var_dump($router->ip_addresses(['interface' => 'ether2']));
        
    # Update address item in ID *2
    var_dump($router->ip_addresses('set', [
        '.id' => '*2',
        'comment' => 'Some Comments'
    ]));

可用方法

此库在此版本中所有可用方法的列表

  1. 通用

    • connect()
    • is_connected()
  2. 接口

    • interface_bridge()
    • interface_bridge_port()
    • interface_bridge_port()
    • interface_ethernet()
    • interface_list()
    • interface_list_member()
    • interface_vlan()
  3. IP

    • ip_addresses()
    • ip_dhcp_server()
    • ip_dhcp_server_network()
    • ip_dns()
    • ip_firewall_filter()
    • ip_firewall_nat()
    • ip_hotspot_user_profiles()
    • ip_hotspot_users()
    • ip_hotspot_server_profiles()
    • ip_hotspot_servers()
    • ip_hotspot_ip_binding()
    • ip_pool()
    • ip_route()
    • ip_services()
  4. 系统

    • system_identity()
    • system_user_groups()
    • system_users()
  5. 交换机(仅适用于 Cloud Router Switch)

    • switch_crs_egress_vlan_tag()
    • switch_crs_mac_based_vlan()
    • switch_crs_port()

命令 & 参数,以及响应

此库中提供的方法都与 Winbox 的 CLI 终端类似。您可以在 Winbox 中查看更多信息。所有使用默认命令 print 的方法都返回数组形式的响应。如果您使用其他命令,如 addsetremove 等,则方法将返回 true,表示成功执行。