Jump to content
Local
nightfly

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

Recommended Posts

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

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

Share this post


Link to post
Share on other sites

а эти наши линуксы со своими iptables и ipset, как всегда в стороне... )))))

Share this post


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

Share this post


Link to post
Share on other sites

 

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

Share this post


Link to post
Share on other sites

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

 

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

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

 

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

 

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

 

 

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

 

 

Share this post


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

 

 

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

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

 

/var/www/

 

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

 

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

 

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

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

Share this post


Link to post
Share on other sites

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

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

 

Fatal Error

 

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

 

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

Share this post


Link to post
Share on other sites

хотел ему ответить, но вижу, что правильно зделал ))))

Share this post


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

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

 

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

Share this post


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

Share this post


Link to post
Share on other sites

 

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

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

 

Share this post


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

Share this post


Link to post
Share on other sites

 

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

як варіант

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


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/)

Share this post


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

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

 

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

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

Edited by nightfly

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

 

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

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

 

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

Share this post


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

Share this post


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 bolelshik
      Добрый день.
      Обновил порты на freebsd перезагрузил сервер и после получаю
      Warning: mysqli::__construct(): (HY000/2002): No such file or directory in /usr/local/www/apache24/data/billing/api/libs/api.mysql.php on line 29
      Connection error (2002) No such file or directory
      Что делать?
       
    • By Sayrax
      Добрый день! Подключил данный модуль. Подключил Fondy(тестовый мерчант). Делаю оплату из личного кабинета(тестовая карта). А в админке, платежа нет(((
      В чем может быть проблема?
    • By a_n_h
      Всем доброго дня!
      Подскажите как правильно объединить vlans bridge? Что-то Гугл плохо помогает...
    • By Новичок я тут
      Доброго вечера, подскажите как в юбилинге реализовать тарифі с предоплатой.
    • By Ivan_pro100_5
      Кто сможет настроить и установить биллинг за фин.помощь. сумму в личку
×