Обработчик активации сервисов для Mikrotik(по протоколу mikrotik api)
Материал из BiTel WiKi
Stark (Обсуждение | вклад) |
Stark (Обсуждение | вклад) |
||
(3 промежуточные версии не показаны) | |||
Строка 17: | Строка 17: | ||
- | |||
- | |||
- | |||
- | |||
Пример конфигурации | Пример конфигурации | ||
Строка 27: | Строка 23: | ||
#Команды включения сервиса на устройстве | #Команды включения сервиса на устройстве | ||
sa.command.serv.enable=/ip/firewall/address-list/add\n=address=$ip\n=list=ACCESS_LIST\n=comment=!!$servId!! | sa.command.serv.enable=/ip/firewall/address-list/add\n=address=$ip\n=list=ACCESS_LIST\n=comment=!!$servId!! | ||
- | #Команды | + | #Команды отключения сервиса на устройстве. |
- | + | ||
- | + | ||
sa.command.serv.disable=/ip/firewall/address-list/remove\n=numbers="!!$servId!!" | sa.command.serv.disable=/ip/firewall/address-list/remove\n=numbers="!!$servId!!" | ||
- | |||
- | |||
</source> | </source> | ||
+ | |||
+ | |||
+ | |||
+ | Так же есть специфичная переменная: | ||
+ | <source lang="bash"> | ||
+ | $prevIdList - результаты вызова предыдущей команды(все параметры id, через запятую). | ||
+ | </source> | ||
+ | |||
+ | Она нужна в тех случаях, когда есть необходимость в использовании команды find внутри другой команды. Дело в том, что Mikrotik Api не поддерживает использования таких команд, но их можно эмулировать | ||
+ | с помощью вызова 2-х команд: | ||
+ | |||
+ | 1) вначале команда print с заданными параметрами, из нее извлекаются список найденных id через запятую(их может быть несколько в общем случае) | ||
+ | |||
+ | 2) Вызывается основная команда, куда вместо find подставляют список id, найденных на предыдущем шаге. | ||
+ | |||
+ | Пример конфигурации с этим параметром. | ||
+ | |||
+ | <source lang="bash"> | ||
+ | |||
+ | #Команды включения сервиса на устройстве | ||
+ | sa.command.serv.enable=/ip/firewall/address-list/add\n=address=$ip\n=list=ACCESS_LIST | ||
+ | #Команды выключения сервиса на устройстве | ||
+ | sa.command.serv.disable.1=/ip/firewall/address-list/print\n?=address=$ip | ||
+ | sa.command.serv.disable.2=/ip/firewall/address-list/remove\n=numbers=$prevIdList | ||
+ | </source> | ||
+ | |||
+ | |||
+ | Тут видно что в команде sa.command.serv.disable.2 удаляют те, номера, которые нашли в команде sa.command.serv.disable.1. |
Текущая версия на 10:51, 10 декабря 2014
Универсальный обработчик активации сервисов Mikrotik по протоколу MikrotikApi.
На устройстве должен быть прописан host:port Mikrotik, где port - 8728(порт управления Mikrotik с помощью Mikrotik Api). Либо просто host, тогда порт может быть указан в параметре
sa.port
в конфигурации устройств.
Класс обработчика активации сервисов:
ru.bitel.bgbilling.modules.inet.dyn.device.mikrotik.MikrotikServiceActivator
Поставляется в стандартной поставке. Параметры общие описаны тут:
Пример конфигурации
#Команды включения сервиса на устройстве sa.command.serv.enable=/ip/firewall/address-list/add\n=address=$ip\n=list=ACCESS_LIST\n=comment=!!$servId!! #Команды отключения сервиса на устройстве. sa.command.serv.disable=/ip/firewall/address-list/remove\n=numbers="!!$servId!!"
Так же есть специфичная переменная:
$prevIdList - результаты вызова предыдущей команды(все параметры id, через запятую).
Она нужна в тех случаях, когда есть необходимость в использовании команды find внутри другой команды. Дело в том, что Mikrotik Api не поддерживает использования таких команд, но их можно эмулировать с помощью вызова 2-х команд:
1) вначале команда print с заданными параметрами, из нее извлекаются список найденных id через запятую(их может быть несколько в общем случае)
2) Вызывается основная команда, куда вместо find подставляют список id, найденных на предыдущем шаге.
Пример конфигурации с этим параметром.
#Команды включения сервиса на устройстве sa.command.serv.enable=/ip/firewall/address-list/add\n=address=$ip\n=list=ACCESS_LIST #Команды выключения сервиса на устройстве sa.command.serv.disable.1=/ip/firewall/address-list/print\n?=address=$ip sa.command.serv.disable.2=/ip/firewall/address-list/remove\n=numbers=$prevIdList
Тут видно что в команде sa.command.serv.disable.2 удаляют те, номера, которые нашли в команде sa.command.serv.disable.1.