Перейти до

Перенаправление должников в кабинет


Рекомендованные сообщения

Почему все испытывают с этим такие страшные трудности - на данный момент остается загадкой вселенского масштаба.

Давайте будем считать что это делается элементарно и раз и навсегда закроем этот вопрос. Хорошо? :)

Ссылка на сообщение
Поделиться на других сайтах

Linux version of redirect debtors :)

Начнем.

 

1. Делаем саму заглушку. Создаем виртуалхост.

Listen 85
<VirtualHost 172.16.0.1:85>
DocumentRoot /var/www/debtors
ServerName debtors.isp
ServerAlias debtors.isp
DocumentRoot "/var/www/debtors"
<Directory  /var/www/debtors>
allow from all
Options -Indexes
</Directory>
CustomLog "/var/log/apache2/debtors.isp.log" combined
</VirtualHost> 

2. Создаем собственно директорию /var/www/debtors и кидаем туда 2 файла

index.php

<?php
        function rcms_redirect($url, $header = false) {
                if($header){
                    @header('Location: ' . $url);
                           } else {
                                  echo '<script language="javascript">document.location.href="' . $url . '";</script>';
                                  }
                           }
                  $userip=$_SERVER['REMOTE_ADDR'];
               if (strpos($userip,'172.32.')===false)  {
          rcms_redirect("http://172.16.0.1/billing/userstats/");
                   } else {
                       rcms_redirect("http://172.32.0.1/");
                       }
?>

.htaccess

ErrorDocument 404 /index.php

3.Фаер. Рисуем в конце /etc/firewall.sh следующую радость: (Причем понадеемся, что в системе установлены пакеты iptables и ipset).

#Debtors forwarding
/sbin/iptables -I FORWARD -o eth1 -p udp --dport 53 -d 8.8.8.8  -j ACCEPT #разрешаем ходить на DNS
#создаем таблички в ipset
/usr/local/sbin/ipset -F DEBTORS 
/usr/local/sbin/ipset -X DEBTORS 
/usr/local/sbin/ipset -N DEBTORS ipmap --network 172.16.0.0/24 #Тут возможно у Вас своя подсеть
/sbin/iptables -t nat -I PREROUTING -m set --set DEBTORS src -p tcp -d ! 172.16.0.0/24 --dport 80 -j DNAT --to-destination 172.16.0.1:85 #у меня виртуалхост висит на 85 порту 

4. Надо загнать должников в эти правила. В этом вам должен помочь, вот такой вот скриптик /etc/stargazer/debtors.php в автозагрузке:

#!/usr/local/bin/php
<?php
 
$config=parse_ini_file(dirname(__FILE__)."/config");
$link = mysql_connect($config['host'], $config['username'], $config['password']);
mysql_select_db($config['database']);
$data_q='SELECT `ip` FROM `users` WHERE `Cash`< -`Credit`';
$data=mysql_query($data_q);
           while ($row = mysql_fetch_array($data, MYSQL_ASSOC)) {
                shell_exec("/usr/local/sbin/ipset -A DEBTORS ".$row['ip']);
           }
 
?>

5. Ну собственно и все. Должники при открытии любой страницы попадают в личный кабинет. Но по идее они когда-нибудь оплотят =) и им нужно дать инет. Чтобы выкинуть их из таблички должников есть множество способов. Один из них в OnConnect прописать :

/usr/local/sbin/ipset -D DEBTORS $IP

или мониторить файл OnChange и в случае положительного баланса делать это там или .... в общем уже на Ваш суд.

 

ЗЫ. Напоследок. В этих наших Линуксах нужно провериьт пути к бинарникам iptables и ipset (так как от дистра к дистру они могут отличаться) ну и соответственно оратить на доменные имена и ваши подсети - ибо как они тоже могут быть разными =)

Ссылка на сообщение
Поделиться на других сайтах
  • 4 months later...

 

3.Фаер. Рисуем в конце /etc/firewall.sh следующую радость: (Причем понадеемся, что в системе установлены пакеты iptables и ipset).
#Debtors forwarding
/sbin/iptables -I FORWARD -o eth1 -p udp --dport 53 -d 8.8.8.8  -j ACCEPT #разрешаем ходить на DNS
#создаем таблички в ipset
/usr/local/sbin/ipset -F DEBTORS 
/usr/local/sbin/ipset -X DEBTORS 
/usr/local/sbin/ipset -N DEBTORS ipmap --network 172.16.0.0/24 #Тут возможно у Вас своя подсеть
/sbin/iptables -t nat -I PREROUTING -m set --set DEBTORS src -p tcp -d ! 172.16.0.0/24 --dport 80 -j DNAT --to-destination 172.16.0.1:85 #у меня виртуалхост висит на 85 порту 

у меня сделано так:

и соответственно п.4 и п.5 - неактуальные

.....
/sbin/iptables -t filter -A FORWARD -m set --match-set internet src,dst -j ACCEPT
/sbin/iptables -t filter -A FORWARD -m set --match-set internet dst,src -j ACCEPT
.....
# для неподключенных - на 10.1.1.1:81
/sbin/iptables -t nat -N park
/sbin/iptables -t nat -A park -m set --match-set internet src -j RETURN
/sbin/iptables -t nat -A park -m set --match-set internet_mac_10_1 src -j RETURN
/sbin/iptables -t nat -A park -d $INT_NET -j RETURN
/sbin/iptables -t nat -A park -d $EXT_IP -j RETURN
/sbin/iptables -t nat -A park -p TCP --dport 80 -j DNAT --to 10.1.1.1:81
/sbin/iptables -t nat -A park -p TCP --dport 443 -j DNAT --to 10.1.1.1:81
/sbin/iptables -t nat -A PREROUTING -s $INT_NET -j park
Ссылка на сообщение
Поделиться на других сайтах
  • 7 months later...

Всем привет я как нубина думаю имею право спросить, а на Ubuntu-server 12.04 LTS всё также делаетса как описано здесь http://wiki.ubilling.net.ua/doku.php?id=debtredir

 

или ето описание для фри? ато я вот поставил на убунте и к примеру не нахожу некоторых файлов там в первую очередь вот етого 

 /usr/local/www/apache22/data/index.php  

 

может мне ево просто нужно создать и заполнить ?

 

отпишыте плиз на понятном человеческом 

 

 

я использовал мс для поиска етого файла и нашол кучу index.php но штоб в папке data к сожелению такого не нашлось 

 

 

Ссылка на сообщение
Поделиться на других сайтах
 /usr/local/www/apache22/data/index.php  

 

 

этот файлик находится в рабочей директории вэб-сервера.

для debian например это 

 

/var/www/

 

ето описание для фри?

 

 

да это описание для фри. поищите в ветке   там рассматривался этот вопрос.

Ссылка на сообщение
Поделиться на других сайтах

Спс Felixio, меня просто удивляет ход мысли разработчиков типа чо вы все тупите ето нуна делать так и так вот вы все такии тупые а мы умные и т.д у меня вопрос почему ето не встроено ??? даже в самых древнейшых билингах ето могли встроить а здесь бери и допишы )))

я канешн понимаю што бесплатно и т.д но ето же просто функцыя как к примеру днцп сервер ето должно быть но нету (((

Ссылка на сообщение
Поделиться на других сайтах

Спс Felixio, меня просто удивляет ход мысли разработчиков типа чо вы все тупите ето нуна делать так и так вот вы все такии тупые а мы умные и т.д у меня вопрос почему ето не встроено ??? даже в самых древнейшых билингах ето могли встроить а здесь бери и допишы )))

я канешн понимаю што бесплатно и т.д но ето же просто функцыя как к примеру днцп сервер ето должно быть но нету (((

Извините, но наш продукт изначально не рассчитан на олигофренов, неспособных осилить базовую орфографию.

 

 

вот вы все такии тупые а мы умные и т.д

это хорошо, что вы адекватно осознаете уровень своего интеллекта.

Ссылка на сообщение
Поделиться на других сайтах

Спс Felixio, меня просто удивляет ход мысли разработчиков типа чо вы все тупите ето нуна делать так и так вот вы все такии тупые а мы умные и т.д у меня вопрос почему ето не встроено ??? даже в самых древнейшых билингах ето могли встроить а здесь бери и допишы )))

я канешн понимаю што бесплатно и т.д но ето же просто функцыя как к примеру днцп сервер ето должно быть но нету (((

 

Fatal Error

 

Мало того что берёшь бесплатно довольно не плохой продукт, работающий стабильно, со всеми основными функциями, необходимыми для работы провайдера, так ещё не соизволишь немного поднапречь мозги.

 

Будьте вежливы и уважительны и Вам, как ни странно, помогут. А после того что Вы написали, думаю нет. 

Ссылка на сообщение
Поделиться на других сайтах

ой зара ногами забьють  :wacko:  але запитаю.

 

є BSD NAS rscriptd 172.16.1.1/16

 

 

 

firewall.conf 



${FwCMD} add 6 fwd 127.0.0.1,80 ip from table\(47\) to not me dst-port 80

index.php

<script type="text/javascript">
<!--
window.location = "http://172.16.0.1/billing/userstats/"
//-->
</script>

перенаправлення  відбуваэться але

172.16.0.1 != 172.16.1.1 

і перенаправлення відбувається ще раз .... зациклились.

${FwCMD} add 6 fwd 127.0.0.1,80 ip from table\(47\) to not me, 172.16.0.1 dst-port 80

так ніфіга не їде(

 

які ще є варіянти?

Ссылка на сообщение
Поделиться на других сайтах
${FwCMD} add 6 fwd 127.0.0.1,80 ip from table\(47\) to not me dst-port 80

Ткну носом. to not me, або зробіть табличку з адресами, або вкажіть явно, назразок

to not me and not my_billing_ip

або to not table\(111\)

 

Але у нот-енд не впевнений, що моя логіка тут правильна.

Відредаговано L1ght
Ссылка на сообщение
Поделиться на других сайтах

 

to not me and not my_billing_ip

кома між me і 172.16.0.1  малаб бути  отим and

 

я би спробував винести not 127.0.0.1, 172.16.1.1, 172.16.1.1 в окрему табличку замість not me

 

(17) - адреса 80-й порт которых будет доступен всегда по-умолчанию (зарезервировано)

 

ну доступ на білінг і на вебсервер наса потрібен завжди, думаю мона юзнути 17 табличку

Ссылка на сообщение
Поделиться на других сайтах

Тут навіть без варіантів.

Припустим захтів пускати бідного юзера у банк, додав сайт банку в 17 табличку, а тут редірект замість банку :blink: .

 

Усе добре завертає через табличку, спасибі!

Ссылка на сообщение
Поделиться на других сайтах

До речі, хтось реалізовував доступ до Приват24 при заблокованому доступі до Інтернет?

Ресурси привата додав у дозволені, але враховуючи що велика частина п24 крутиться в хмарі google - всі виловити не зміг.

Як результат не відбувається авторизація.

Буду вдячний за повний список.

Ссылка на сообщение
Поделиться на других сайтах

Це добре, добре що є мануал: http://wiki.ubilling.net.ua/doku.php?id=debtredir , але там нічого не сказано про редірект https (я вже піднімав цю тему http://local.com.ua/forum/topic/58455-%D1%80%D0%B5%D0%B4%D1%96%D1%80%D0%B5%D0%BA%D1%82-%D0%BA%D0%BE%D1%80%D0%B8%D1%81%D1%82%D1%83%D0%B2%D0%B0%D1%87%D1%96%D0%B2-https/)

Ссылка на сообщение
Поделиться на других сайтах
Опубліковано: (відредаговано)
але там нічого не сказано про редірект https

Тому, що забудьте.

 

Він для того і є HTTPS (secure)  аби контролювати валідність сертифікату та унеможливити фішинг. Всі ці завороти тим і займаються, що підміняють оригінальну сторінку лівою.

Можна звісно погратись і нагородити упороту проксю, котра буде підміняти сертифікати на льоту... але маразм це, котрий не вартий тих ресурсозатрат.

Відредаговано nightfly
Ссылка на сообщение
Поделиться на других сайтах

я то розумію для чого HTTPS, але як це пояснити юзверу чо в нього нічого не відкривається, який (на гугл каже - гугля, а на скайп - скупе  :) ), - йому не розкажеш шоб не пробував свої контактіки відкривати через пошук в гуглі, а на пряму в адресній строці писав вк.сом (більшість навіть не знає де адресна строка) і тоді в нього відкриється сторінка де напише шо в нього нема грошей, і буде ссилка в кабінет де може взяти собі в борг.

 

Та менше з тим я собі замутив і в мене працює редірект. 

Ссылка на сообщение
Поделиться на других сайтах

 

Та менше з тим я собі замутив і в мене працює редірект.

Ну це поки юзерів небагато і насів менше декількох стійок ;)

 

Потім приходить розуміння, що юзерам продається інтернет а не фігурні редіректи, і воно того не вартує.

Ссылка на сообщение
Поделиться на других сайтах

До речі, хтось реалізовував доступ до Приват24 при заблокованому доступі до Інтернет?

Ресурси привата додав у дозволені, але враховуючи що велика частина п24 крутиться в хмарі google - всі виловити не зміг.

Як результат не відбувається авторизація.

Буду вдячний за повний список.

я забиваю разрешенную таблицу с помощью скрипта и на вот эти адреса:

cap.attempts.securecode.com

24money.com.ua

24nonstop.com.ua

static.liqpay.com

fonts.googleapis.com

ajax.googleapis.com

themes.googleusercontent.com

www.liqpay.com

liqpay.com

ecommerce.liqpay.com

www.google-analytics.com

google-analytics.com

ssl.google-analytics.com

widget.siteheart.com

static.siteheart.com

 

скрипт : ipfw table 22 flush

dig +short -f /home/pay_host | grep '\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}' | xargs -L1 ipfw table 22 add

была тема тут где-то.

Відредаговано DemonidZe
Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

  • Схожий контент

    • Від mac
      Глюк в тому, що один (так - тільки один) mac адрес onu існує в білінгу у вигляді строки. Це трохи заважає.
      olt - bdcom gepon.
      Наскільки зрозумів, це виключно проблема реалізації snmpwalk у freebsd, де snmpwalk може на свій розсуд віддати mac адресу не як hex-string, а як звичайний string.
      Можливо snmpwalk тригериться на якомусь символі, мені невідомо.
       
      # tcpdump -vv -i em0 udp port 161 and host olt and host ub | grep "3320.101.10.4.1.1.241 ... olt.snmp > ub.47940: [udp sum ok] { SNMPv2c C="*****" { GetResponse(44) R=93278354 E:3320.101.10.4.1.1.241="8LO"W*" } } ub.47940 > olt.snmp: [udp sum ok] { SNMPv2c C="*****" { GetNextRequest(34) R=93278355 E:3320.101.10.4.1.1.241 } } snmpwalk -c***** -v2c -t5 olt .1.3.6.1.4.1.3320.101.10.4.1.1 SNMPv2-SMI::enterprises.3320.101.10.4.1.1.241 = STRING: "8LO\"W*" snmpwalk -Ox -c***** -v2c -t5 olt .1.3.6.1.4.1.3320.101.10.4.1.1 SNMPv2-SMI::enterprises.3320.101.10.4.1.1.241 = Hex-STRING: 38 4C 4F 22 57 2A  
      Це стосується таких параметрів у snmp конфізі bdcom
       
      [signal] MACINDEX=".1.3.6.1.4.1.3320.101.10.4.1.1" [misc] ONUINDEX=".1.3.6.1.4.1.3320.101.11.1.1.3"  
      За для усунення глюку спробував трошки змінити код і завдати тип snmp параметру явно у ./api/libs/api.ponbdcom.php у function collect()
      Це працює. Мабуть станеться у нагоді:
       
      # diff api.ponbdcom.php{.new,.bak} 37c37 < $onuIndex = $this->snmp->walk('-Ox ' . $oltIp . ':' . self::SNMPPORT, $oltCommunity, $onuIndexOid, self::SNMPCACHE); --- > $onuIndex = $this->snmp->walk($oltIp . ':' . self::SNMPPORT, $oltCommunity, $onuIndexOid, self::SNMPCACHE); 91c91 < $macIndex = $this->snmp->walk('-Ox ' . $oltIp . ':' . self::SNMPPORT, $oltCommunity, $macIndexOID, self::SNMPCACHE); --- > $macIndex = $this->snmp->walk($oltIp . ':' . self::SNMPPORT, $oltCommunity, $macIndexOID, self::SNMPCACHE);  
      P.S. Створив тему, а зараз міркую: а може це глюк у ПЗ olt. Оновлю фірмваре olt та перевірю...
       

    • Від Plastilin
      Вітаю. Маю наступний комплект. Ubilling на Debian + Mikrotik CHR як маршрутизатор. Наче все запустилось, але виникло питання яке не вдається розрулити. Читав Wiki, ковиряв, читав знову Wiki, знову ковиряв - не допомогло.
      Чи можливо якось визначити конкретну IP адресу з пулу який видає Mikrotik клієнту через Radius? Мені пропонує обрати наступну вільну адресу з пулу при спробі зміни адреси?
      З цього з'являється додаткове питання, чи можливо контролювати доступ користувачам у яких IP назначений статично, тобто прописаний вручну? Наприклад при зміні статусу не активний - пхати до Firewall Mikrotik правила заборони доступу з IP адреси визначеної вручну, навіть якщо вона не отримана по DHCP.
       
      UPD: з першою частиною знайшов: IP_CUSTOM=1 в alter.ini 
    • Від ppv
      Потрібно було витерти одну мережу, всі абоненти з неї були перенесені в іншу. Але світить що 6 IP зайняті, хоча вона повністю вільна.
       
      ID    Мережа/CID           RВсього IP        Використано IP ▾           Вільно IPСервіс
      6      172.16.70.0/23        506                    6                                       500
       
      Підкажіть як правильно це підчистити щоб видалити мережу.
    • Від a_n_h
      Всем доброго дня и мирного неба!
        После многочисленных экспериментов выяснил, что на последних версиях freebsd  максимум удавалось прокачать до 14 ГБт суммарно трафика со 100% загрузкой процессора. На том-же железе но с установленной freebsd 11.2 прокачивается до 20-ти ГБт суммарно тестового трафика с загрузкой процессора около 50%. 
        Подскажите, что можно убрать или наоборот добавить в систему с freebsd 13,3 для получения аналогичного результата...
    • Від sanyadnepr
      Приветствую всех.
      Подскажите пожалуйста где копнуть и нет ли проблемы со стороны протокола взаимодействия сити24 или возможно не учтена необходимая проверка в модуле сити24 в Ubilling, пока писал понял что похоже в проверке payID, но это не точно.  
      Недавно обнаружилось с сити24 начали прилетать дубликаты платежей, в целом платежей мало, два одинаковых запроса Pay с одинаковым transactionID и payID в одну секунду одному платежному ID при этом биллинг "думает" примерно чуть больше минуты и отвечает одним ответом <result>0</result>, сити24 утверждает что ответ они не получили и по протоколу дальше повторяет запросы дублем, биллинг ответ и так по кругу, сити24 спрашивает каким образом с одинаковым payID от сити24 билл продолжает обрабатывать запросы и пополнять абоненту счет раз в 5 минут примерно, на одну и туже сумму, ведь этот payID уже был обработан предполагают сити24 согласно протоколу.
      Конечно есть вопрос к сити24 зачем они дублем присылают два запроса, но они отвечают что эта ситуация учтена в протоколе и проблема на стороне биллинга, потому что он пополняет счет по уже обработанному одинаковому payID.
      При этом transactionID в дублях одинаковый, но с каждым новым дублем разный.
      Если зафаерволить запросы от сити24, но оставить возможность отвечать то после блокировки билл отправляет 2-3 минуты 6 ответов <account>0001</account>  <result>0</result>.
      После снятия блокировки, дубли и платежи нескольких проблемных абонентов прилетают так же по кругу, при этом и с некоторыми новыми пополнениями происходит аналогичная ситуация.
      В openpayz в платежах transactionID и не видно payID.
×
×
  • Створити нове...