# Хост подключения (если не указан, то используется хост из поля Хост/порт)
#sa.terminal.host=
# Порт подключения (если не указан, то используется порт из поля Хост/порт)
sa.terminal.port=22
# протокол подключения (telnet/ssh/tcp/mikrotik-api/mikrotik-api-ssl/shell)
sa.terminal.protocol=ssh
# Regex ожидания приглашения на выполнения команды
sa.terminal.endSequence=\\[\w+@\w+\]\s+>\
# Команда выхода (отключения)
sa.terminal.exit=quit
# Макросы {@key} заменяются на этапе парсинга конфига, используемые параметры должны быть описаны выше использования, являются своеобразнами alias'ами
# Макросы ${key()} заменяются на этапе выполнения команд
acl=ACL-accepted
sif=ether3
# вытаскиваем SVLAN из callingStationIdcalledStationId сессии (туда SVLAN попадаетможно записать при предобработке DHCP-пакета)
svlan=${calledStationId().replaceAll( /^(\d+)\/.+$/,'$1' )}
vlan=${vlan()}
interface="{@sif}.{@svlan}.{@vlan}"
# скорость получаем из параметра активной опции
speed=${param( option(), 'speed', '1' )}
# На onAccountingStop вызываем sa.terminal.connection.modify.disable
sa.terminal.connection.onAccountingStop.after=${connectionDisable()}
# Команды, вызываемые при включении доступа (состояние стало "включено"), при старте соединения с нормальным доступом
sa.terminal.connection.modify.enable.1=/ip firewall address-list add address=${ip()} list={@acl}
# команды, вызываемые при ограничении доступа (состояние стало "отключено"), при стопе соединения и при старте соединения с ограниченным доступом
sa.terminal.connection.modify.disable.1=/ip firewall address-list remove [/ip firewall address-list find address=${ip()}]
sa.terminal.connection.modify.disable.2=/queue simple remove [/queue simple find name=("queue{@vlan}up")]
sa.terminal.connection.modify.disable.3=/queue tree remove [/queue tree find name=("queue{@vlan}down")]
sa.terminal.connection.modify.disable.4=/interface bridge filter remove [/interface bridge filter find out-interface=({@interface})]
# Команды, вызываемые при включении опции ID=x (и дочерних опций по отношению к ID=x) на соединении
sa.terminal.connection.inetOption.1.enable.1=/interface bridge filter add action=mark-packet chain=output out-interface=({@interface}) new-packet-mark=("{@speed}down")
sa.terminal.connection.inetOption.1.enable.2=/queue simple add name=("queue{@vlan}up") queue=("up-{@speed}M/default-small") target=({@interface})
sa.terminal.connection.inetOption.1.enable.3=/queue tree add name=("queue{@vlan}down") packet-mark=("{@speed}down") parent=({@interface}) queue=("down-{@speed}M")
# команды, вызываемые при отключении опции ID=x (и дочерних опций по отношению к ID=x) на соединении
sa.terminal.connection.inetOption.1.disable.1=/queue simple remove [/queue simple find name=("queue{@vlan}up")]
sa.terminal.connection.inetOption.1.disable.2=/queue tree remove [/queue tree find name=("queue{@vlan}down")]
sa.terminal.connection.inetOption.1.disable.3=/interface bridge filter remove [/interface bridge filter find out-interface=({@interface})] |