&& юзается для однострочных вещей. Я его использую для уменьшения кода, однако, если нужно сделать несколько действий, то лучше делать через if:
if( $auth eq 'ong' )
{# авторизация в режиме `разрешить только направление 2`
...
...
}
а вот что внутрь вписать - это нужно анализировать структуру фаера - то, как правила формирует nofire.pl. Есть таблица 10 и 11, которые шейпят весь трафик, который не попал в предыдущие условия. В обычном случае это и есть весь трафик. Следовательно, необходимо сформировать правила для шейпа в сети направления 2, но не записывать в таблицу 10 и 11.
Аналогичным образом рабтает режим "сеть":
($auth eq 'off') && return;
- в этой точке (как раз перед записью Ip в таблицы 10/11) происходит возврат (return) в noserver. А до этого правила ip попал в таблицы 20 и 21, т.е трафик между клиентами разрешен. Это сработает, когда у нас несколько серверов, обслуживающих клиентов.
Но нам-то нужны еще и правила для разрешения трафика в сети 2. Если внимательно просмотреть nofire.pl, то можно понять как создать правила (намек: в админке надо указать номера таблиц ipfw для сетей направления 2).
Однако же, у меня есть более интересный вариант. Я как-то давал на тест новый noserver.pl и nofire.pl, который все благополучно забили тестировать, выражаю благодарность, - вот с этими скриптами будет гораздо проще реализовать, в нужном месте поставив:
($auth eq 'ong') && return;