Теперь в раздел PPP Secrets, кроме добавления данных, будет добавляться правило шейпера. Также в Address Lists добавим IP-адрес пользователя.
Рис.1. Mikrotik Routerboard.
Пишем код.
<?php
function f_add_user($login, $password, $ip, $service, $speed, $comment='no comment')
{
require('routeros_api.class.php');
$API = new routeros_api();
if ($API->connect('192.168.4.253', 'ubnt', 'ubnt'))
$API->comm("/ppp/secret/add", array(
"name" => $login,
"password" => $password,
"remote-address" => $ip,
"comment" => $comment,
"service" => $service,
));
$max_limit = "$speed"."M"."/"."$speed"."M";
$API->comm("/queue/simple/add", array(
"name" => $login,
"target-addresses" => $ip,
"max-limit" => $max_limit,
));
$API->comm("/ip/firewall/address-list/add", array(
"address" => $ip,
"list" => "asp24net",
));
#print "Новый пользователь добавлен";
}
f_add_user('asp24', 'asp24password', '10.0.0.2', 'any', '10')
?>
Разбираем код:
Создаем функцию f_add_user, которая будет принимать данные для добавления пользователя. Переменной $comment присвоим значение по умолчанию. Это на тот случай, если администратор не введет комментарий для данной учетной записи.
function f_add_user($login, $password, $ip, $service, $speed, $comment='no comment')
Подключаем файл с классом:
require('routeros_api.class.php');
Создаем объект класса:
$API = new routeros_api();
Соединяемся с устройством:
if ($API->connect('192.168.4.253', 'ubnt', 'ubnt'))
Рис.2. Mikrotik Routerboard правило шейпера.
Для того, чтобы создать правило шейпера, необходим параметр max-limit со значением такого вида 10M/10M, где цифры - это значение входящей и исходящей скорости, M — единицы измерения, символ слэш разделяет два параметра.
Создадим переменную $max_limit, в которой будет храниться значение для параметра max-limit:
$max_limit = "$speed"."M"."/"."$speed"."M";
Вызываем метод класса comm, передав в него команду для выполнения и параметры.
$API->comm("/queue/simple/add", array(
Переходим в раздел queue simple выполняем команду add.
Название правила шейпера:
"name" => $login,
IP-адрес, для которого применяется данное правило:
"target-addresses" => $ip,
Значение ограничения скорости:
"max-limit" => $max_limit,
));
$API->comm("/ip/firewall/address-list/add", array(
Переход в раздел ip/firewall/address-list. Выполняем команду add IP-адрес для добавления в Address Lists:
"address" => $ip,
Имя address-list:
"list" => "asp24net",
Вызываем функцию, передав ей необходимые данные:
f_add_user('asp24', 'asp24password', '10.0.0.2', 'any', '10', 'users comms')
Рис.3. Mikrotik Routerboard, добавление пользователя с комментарием.
В этом случае мы добавили значение комментария.
Вызываем функцию без значения комментария.
f_add_user('asp24', 'asp24password', '10.0.0.2', 'any', '10')
Рис.4. Mikrotik Routerboard, добавление пользователя без комментария.
Так как значение комментария не было передано, оно было использовано по умолчанию.
Евгений Рудченко специально для ASP24.




