MaйeR 0 Posted 2006-08-23 16:25:35 Share Posted 2006-08-23 16:25:35 Вместо OnConnect fwcmd="/sbin/ipfw" int_if="xl0" ip=$2 login=$1 id=$4 # id - уникальный целочисленный идентификатор пользователя # принимает значений от 0 до максимального кол-ва пользователей ${fwcmd} add `expr $id '*' 10 + 29000` fwd 127.0.0.1,3128 tcp from $ip to any 80 via ${int_if} ${fwcmd} add `expr $id '*' 10 + 29001` allow ip from $ip to any via ${int_if} echo "connect $login " >> /usr/local/stargazer/var/log/connect.log OnDisconnect fwcmd="/sbin/ipfw" id=$4 ${fwcmd} delete `expr $id '*' 20 + 29000` ${fwcmd} delete `expr $id '*' 20 + 29001` echo "disconnect $1" >> /usr/local/stargazer/var/log/connect.log Сделать таким образом Добавить в основной скрипт фаервола вместо # Здесь оставляем окно в нумерации для исполнения скриптов юзеров следующий код: ${fwcmd} add fwd 127.0.0.1,3128 tcp from "table(1)" to any 80 via ${int_if} ${fwcmd} add allow ip from "table(1)" to any via ${int_if} тогда OnConnect примет вид IP=$2 CASH=$3 /sbin/ipfw table 1 add ${IP} echo "C `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /usr/local/stargazer/users/$LOGIN/connect.log а OnDisconnect примет вид IP=$2 CASH=$3 /sbin/ipfw table 1 del ${IP} echo "D `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /usr/local/stargazer/users/$LOGIN/connect.log Это решит данное недоразумение: БС5. Обнаружена жутко неприятная фича под ОС: FreeBSD. При удалении/создании пользователя происходит перестроение индексов, что приводит к следующей фишке: т.к. во FreeBSD добавление/удаление правил фаервола основывается на UserID то это приводит к тому что после отключения тех юзеров которые были онлайн на момент создания/удаления юзера их разрешающие правила из фаервола не удаляются. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now