Перейти до

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


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

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

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

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

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 користувачів

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

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

    • Від nightfly
      Ubilling 1.5.2 rev 9302 Book of Endings
       
      Зміни в структурі БД. alter.ini: нова опція FASTPROFITCALC_ENABLED, що вмикає швидкий підрахунок прибутку. alter.ini: нова необов'язкова опція KARMA_IN_PROFILE що вмикає показ карми в профілі користувача. alter.ini: нова опція SWITCHES_AUTH_ENABLED, що вмикає довідник даних авторизації пристроїв. alter.ini: нова опція PON_SCRIPTS_ENABLED, що вмикає підтримку скриптів OLT в ПОНізаторі. alter.ini: нова опція PON_ONU_FDB_SELFFILTER, що вмикає фільтр MAC-ів при відображенні FDB за ONU. alter.ini: нова опція USERBYIP_ENABLED, що вмикає виклик userbyip в RemoteAPI. alter.ini: пачка нових опцій PB_FASTURL_*, що керують поведінкою модулю відсилання коротких посилань на оплату. Модуль PONizer: виправлена помилка зникнення PON інтерфейсів при опиті BDCOM GP3600 Модуль “Профіль користувача”: для опису плагінів профілю та оверлеїв на кшталт “чорної магії” тепер опційно можливо вказувати link_target. Модуль “Панель задач”: для опису елементів панелі задач, тепер опційно можна вказувати LINK_TARGET. Модуль Записи телефонних розмов: вирішено проблеми швидкодії, при перегляді списку записів дзвінків. Модуль “Записи телефонних розмов”: більше не призводить до вичерпання пам'яті процесу, при перегляді великих архівів дзвінків. Модуль “Записи телефонних розмов”: новий аудіо-плеєр для прослуховування записів з візуалізацією аудіо-хвилі. Модуль “Пошук оплат”: реалізовано можливість швиденького підрахунку прибутку по обраних чекбоксами платежах. Модуль УКВ: реалізовано можливість швиденького підрахунку прибутку по обраних чекбоксами платежах. Модулі Мапа обладнання та користувачів: трішки вичищено код. Ліпше не стало. Модуль “Мапа будинків”: поле пошуку при розташуванні будинку, тепер попередньо заповнено локацією, при переході за посиланням “розташувати на мапі”. Модуль “Панель задач”: опція TB_QUICKSEARCH_INLINE змінила свою поведінку, та може тепер приймати значення 0|1|2. Модуль “Звіт по трафіку”: виправлено проблему відображення графіків OphanimFlow для NAS на роздільних здатностях менше ніж FullHD. Кабінет користувача: в модулі “Відеоспостереження” відображення попереднього перегляду каналів користувача, стало трішки притомнішим. Сховище зображень: трішки покращено поведінку форми завантаження. RemoteAPI: новий виклик onusigcompressor, що радикально стискає розпухаючі дані історії сигналів ONU. RemoteAPI: новий виклик pbxmonrefill, що оновлює кеш записів телефонних розмов. RemoteAPI: новий виклик userbyip, що повертає дані про користувача за його IP. OpenPayz: в бекенді та фронтенді platon виправлено проблему диких заокруглень, при вказанні зовнішньої комісії.  
      Повний чейнджлог
      Оновлена демка
       

    • Від ppv
      Після оновлення до 1.5.1 не відображаються сигнали на
      OLT BDCOM P3310B (Device version10.1.0B)

      та
      P3608-2TE (Firmware Version10.1.0E). 

      3310C та P3608B ніяких проблем немає, знімає все добре. 
      З GPON3600-8 все зрозуміло будуть виправлення в Ubilling: 1.5.2.
       
      Може в когось було щось подібне? Хочу знати куди копати.
    • Від 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
       
      Підкажіть як правильно це підчистити щоб видалити мережу.
×
×
  • Створити нове...