Jump to content

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


Recommended Posts

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

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

Link to post
Share on other sites

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 (так как от дистра к дистру они могут отличаться) ну и соответственно оратить на доменные имена и ваши подсети - ибо как они тоже могут быть разными =)

Link to post
Share on other sites
  • 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
Link to post
Share on other sites
  • 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 к сожелению такого не нашлось 

 

 

Link to post
Share on other sites
 /usr/local/www/apache22/data/index.php  

 

 

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

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

 

/var/www/

 

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

 

 

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

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

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

 

 

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

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

Link to post
Share on other sites

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

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

 

Fatal Error

 

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

 

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

Link to post
Share on other sites

ой зара ногами забьють  :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

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

 

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

Link to post
Share on other sites
${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\)

 

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

Edited by L1ght
Link to post
Share on other sites

 

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 табличку

Link to post
Share on other sites

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

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

 

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

Link to post
Share on other sites

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

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

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

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

Link to post
Share on other sites

Це добре, добре що є мануал: 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/)

Link to post
Share on other sites
але там нічого не сказано про редірект https

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

 

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

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

Edited by nightfly
Link to post
Share on other sites

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

 

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

Link to post
Share on other sites

 

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

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

 

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

Link to post
Share on other sites

До речі, хтось реалізовував доступ до Приват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

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

Edited by DemonidZe
Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By nightfly
      Ubilling 1.5.9 rev 9525 The Perfect Lock
       
      Зміни в структурі БД. alter.ini: нова опція GENERATORS_ENABLED, що вмикає модуль моніторингу генераторів. alter.ini: нова опція TB_GENERATORS_NOTIFY, що вмикає нотифікацію про запущені генератори в області сповіщень. alter.ini: нова опція PON_ONU_UNI_STATUS_COMPACT, що вмикає компактне відображення стану мідних портів на ONU. alter.ini: нова опція PONBOXES_MINIMAP, що дозволяє вмикати та вимикати міні-мапу, при редагування ПОН коробки. Новий модуль Єдинорожий телепорт: дозволяє просто та зручно переносити ваш робочий білінг на новий сервер. Модуль “Реєстрація користувачів”: виправлено проблеми сумісності з PHP 8.5. Модуль “Останні події”: викинуто дубову статку на мороз. Askozia PBX: інтеграція була давно непідтримуваною, викинуто на мороз, разом зі всіма опціями. Модуль Mapon: тепер використовує OmaeURL для взаємодії з API. Модуль “Мапа ONU”: в черговий раз покращення навігації між мапою та іншими модулями системи. Новий модуль Генератори: дозволяє моніторити стан генераторів, базово облікувати мотогодини, пальне та планувати ТО. Модуль ПОНізатор: тепер причини останньої дереєстрації ONU можуть визначатись також по серійнику ONU а не тільки за MAC. Модуль “ПОН Коробки”: покращено продуктивність відмальовки зв'язків коробок на мапах. Глобально: проведено чергову спробу зробити логування подій, що відбуваються навколо користувачів, якимось трішки більш притомним. RemoteAPI: новий виклик generators, що запускає скрипти обробки станів генераторів з автоматичним запуском. RemoteAPI: новий виклик gencontrol, для примусового запуску/зупинки генераторів за допомогою зовнішнього ПЗ. Бібліотека UbillingCache: виправлено проблеми сумісності з PHP 8.5. Бібліотека OmaeURL: виправлено проблеми сумісності з PHP 8.5. Бібліотека UbillingTelegram: вся робота з CURL перенесена до одного методу, покращено сумісність з PHP 8.5. Кабінет користувача: виправлено проблеми сумісності з PHP 8.5. UBinstaller: тепер при встановленні попередньо розгортає та конфігурує SphinxSearch. UBinstaller: Зібрано бінарні пакунки для FreeBSD 14.3 amd64 + PHP 8.5. UBinstaller: Зібрано бінарні пакунки для FreeBSD 15.0 amd64 + PHP 8.5.  
      Повний чейнджлог
      Оновлена демка
       
       

    • By maxkorn
      Доброго дня!
      На Mikrotik NAS, створив нову підмережу для клієнтів, все наче порядок, тільки помітив, що не створюються шейпери в Queues для клієнтів цієї підмережі.
      В логах Stargazer наступне:
      2025-12-29 09:05:57 - [Ubilling] - OnConnect started for user `xxasdb5rzm`:
      2025-12-29 09:05:57 - [Executer] - Success: Firewall entry was updated/created
      2025-12-29 09:05:57 - [Executer] - Error: Queue entry can't be updated, missing
      2025-12-29 09:05:57 - [Executer] - Success: Queue_tree entry was updated/created
      2025-12-29 09:05:57 - [Executer] - Success: DHCP entry was updated/created
      2025-12-29 09:05:57 - [Executer] - Success: ARP entry was updated/created
      2025-12-29 09:05:57 - [Ubilling] - QC: 6, elapsed time: 0.064 sec.
       
      При чому, на тому ж мікротіку є ще кілька підмереж, в яких все проходить нормально:
       
      2025-12-29 08:30:17 - [Ubilling] - OnConnect started for user `22zxp7u58x`:
      2025-12-29 08:30:17 - [Executer] - Success: Firewall entry was updated/created
      2025-12-29 08:30:17 - [Executer] - Success: Queue entry was updated/created
      2025-12-29 08:30:17 - [Executer] - Success: Queue_tree entry was updated/created
      2025-12-29 08:30:17 - [Executer] - Success: DHCP entry was updated/created
      2025-12-29 08:30:17 - [Executer] - Success: ARP entry was updated/created
      2025-12-29 08:30:17 - [Ubilling] - QC: 6, elapsed time: 0.602 sec.
       
      Налаштування аналогічні, в чому може бути причина?
    • By ProstoName
      Змінювали мережеву карту. Здається все поправив. Працює. Але є невелика проблема - після внесення коштів (коли абонент був відключений), інет в нього не з'являється. Тільки після заміни тарифу на інший (і потім вернувши тариф) в абонента з'являється інет. 
    • By ppv
      Собака-посилака перестала відправляти повідомлення. Підкажіть де шукати.
      Можливо таке після пропадання світла, сервер ребутнувся, але я не впевнений. Візуально все працює, крон працює, а повідомлення висять в черзі, смс така ж картина.

    • By camchatix
      Привіт!
       
      Є багато запитів, щоб інтернет не виключався у північ, а скажімо в день (сигналізації, камери під охороною і тд)
      При щоденній абонплаті - як знімати гроші не у 12:00 у північ, а наприклад у 11 годин дня ?
×
×
  • Create New...