Проверка депозита

Установка, настройка, поддержка
Ответить
anstep
Сообщения: 21
Зарегистрирован: Сб фев 13, 2010 12:48 pm

Проверка депозита

Сообщение anstep »

Доброго времени суток.
Положил такой скрипт в /etc/ppp/ip-up.d/ для проверки депозита, но проверяется не у всех клиентов, даже в no_money.log не всех пишет. У клиентов на депозите 0.01. Подскажите где искать проблему.

Код: Выделить всё

#!/bin/sh
export CDATE=$(date "+%Y-%m-%d_%H:%M:%S")
FILTERS=`/usr/bin/awk   '/Filter-Id/    {print $2}'     /var/run/radattr.$1`
IP_PPTP=${PPP_REMOTE}
IF_PPTP=${PPP_IFACE}
UNAME=`/usr/bin/radwho|grep ${IP_PPTP}|awk '{print $2}'|head -n 1`
USERBALANCE=$( /usr/bin/mysql -uroot -p111111 -B abills -e \
            "SELECT SUM(users.credit + bills.deposit) FROM users \
            INNER JOIN bills ON (users.uid=bills.uid) \
            INNER JOIN dv_main ON (dv_main.uid=users.uid) \
            WHERE users.id='$UNAME' AND dv_main.tp_id!=1" | /usr/bin/tail -n 1 )

        iptables -A FORWARD -i ${IF_PPTP} -o eth3 -s ${IP_PPTP} -j ACCEPT
        iptables -A FORWARD -i eth3 -o ${IF_PPTP} -d ${IP_PPTP} -m state --state RELATED,ESTABLISHED -j ACCEPT
if [ "$FILTERS" = "no_money" ]; then
    echo "$CDATE User [$1] $FILTERS / $UNAME (${IP_PPTP}) add rules (no_money filter)" >> /var/log/no_money.log

elif [ "x$USERBALANCE" != "x" ] && [ "x$USERBALANCE" != "xNULL" ]; then
    echo "$CDATE $UNAME $USERBALANCE negative" >> /var/log/no_money.log
if [ "x$( /usr/bin/awk 'BEGIN { if('$USERBALANCE'<=0.1) print("NEGATIVE") }' )" = "xNEGATIVE" ]; then
                echo "$CDATE User [$1] $FILTERS / $UNAME [${IP_PPTP}] add rules (negative deposit $USERBALANCE)" >> /var/log/no_money.log
                iptables -D FORWARD -i ${IF_PPTP} -o eth3 -s ${IP_PPTP}  -j ACCEPT
                iptables -D FORWARD -i eth3 -o ${IF_PPTP} -d ${IP_PPTP} -m state --state RELATED,ESTABLISHED -j ACCEPT
                iptables -t nat -A PREROUTING -s ${IP_PPTP} -p tcp -m multiport --dport 80,81,82,8080,3128,443 -j DNAT --to-destination 10.0.0.1:81
        else
                echo "$CDATE User [$1] $FILTERS / $UNAME [${IP_PPTP}] logged in (deposit: $USERBALANCE)" >> /var/log/no_money.log
        fi
fi

anstep
Сообщения: 21
Зарегистрирован: Сб фев 13, 2010 12:48 pm

Re: Проверка депозита

Сообщение anstep »

убрал соответствие в таблице dv_main, проблема отпала

triton4ik
Сообщения: 95
Зарегистрирован: Ср июн 23, 2010 4:41 pm
Откуда: г. Раздельная
Контактная информация:

Re: Проверка депозита

Сообщение triton4ik »

так собственно вот чего Вам не хватает:
Нужно создать цепочку проверки
например назовем ее NO_MONEY в основном скрипте айпитейлс в системе
например вот так (Для примера возьмем сеть 192.168.1.0 с маской 255.255.255.0

iptables -t nat -N NO_MONEY
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j NO_MONEY
iptables -t nat -A NO_MONEY -p tcp -m multiport --dports 80,443 -j REDIRECT --to-ports 8080

Далее нам требуется добавить правила уже в ip-up это в случае если не нужно перенаправлять на страницу заглушку

iptables -t nat -D NO_MONEY -s ${IP_PPTP} -j RETURN
iptables -I FORWARD -s %IP -d 0/0 -j ACCEPT
iptables -I FORWARD -s 0/0 -d ${IP_PPTP} -j ACCEPT


а это в случае если нужно вернуть обратно на проверку, так, как если вы не удалите цепочку до до следующей очистки он у Вас не попадет на страницу заглушку при следующем подключении

iptables -t nat -I NO_MONEY -s ${IP_PPTP} -j RETURN
iptables -I FORWARD -s ${IP_PPTP} -d 0/0 -j DROP
iptables -I FORWARD -s 0/0 -d ${IP_PPTP} -j DROP

вот все что Вам нужно, удачи))

triton4ik
Сообщения: 95
Зарегистрирован: Ср июн 23, 2010 4:41 pm
Откуда: г. Раздельная
Контактная информация:

Re: Проверка депозита

Сообщение triton4ik »

и эту строчку изменить нужно

UNAME=`/usr/bin/radwho|grep ${IP_PPTP}|awk '{print $2}'|head -n 1`

нужно привести к следующему виду:
UNAME=`/usr/bin/radwho|grep -w ${IP_PPTP}`

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Re: Проверка депозита

Сообщение NiTr0 »

А зачем столь зловещие костыли-то изобретать? Фильтры негативного депозита что, не катят?

triton4ik
Сообщения: 95
Зарегистрирован: Ср июн 23, 2010 4:41 pm
Откуда: г. Раздельная
Контактная информация:

Re: Проверка депозита

Сообщение triton4ik »

NiTr0 писал(а):А зачем столь зловещие костыли-то изобретать? Фильтры негативного депозита что, не катят?
тут было описана проблема не работы, то что я увидел, то и написал где ошибка, я не разбирался че там за велосепед был изобретен

Ответить