Користувальницькькі налаштування

Налаштування сайту


Сайдбар

Розділи

Загальний опис
Історія змін
Рекомендації до оновлення
Плани на майбутнє
Відомі проблеми
Онлайн демо
Допомога проекту
Люди
Трохи про безпеку

FAQ



Редагувати сайдбар

debtredir

Це стара версія документу!


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

Нам потребуется чистый Ubilling установленный при помощи UBinstaller с работающим fwd (options IPFIREWALL_FORWARD). Для FreeBSD 9.x все должно работать из коробки. Для FreeBSD 8.x возможно потребуется пересборка ядра вручную.

Для начала допустим, что вы настолько ленивы, что даже не потрудились поднять свой собственный DNS сервер и используете пресеты Ubilling-а “как есть”. Также понадеемся, что в сторону пользователей заглядывает интерфейс em0 с назначенным адресом 172.16.0.1. Возможно вы даже не потрудились поподнимать внятных виртуалхостов для типовых сервисов, которые предоставляет Ubilling.
Ничего - сегодня будем считать, что это система для ленивых :)

Засим рисуем в конце /etc/firewall.conf следующую радость:

#Debtors forwarding
${FwCMD} add 4 allow ip from table\(2\) to 8.8.8.8 dst-port 53 via em0
${FwCMD} add 4 allow ip from 8.8.8.8 to table\(2\) src-port 53 via em0
${FwCMD} add 4 allow ip from table\(2\) to me dst-port 80 via em0
${FwCMD} add 4 allow ip from me to table\(2\) src-port 80 via em0
${FwCMD} add 6 fwd 127.0.0.1,80 ip from table\(47\) to not me dst-port 80
${FwCMD} delete 65534

Где 8.8.8.8 как не сложно догадаться - адрес DNS сервера который вы раздаете своим пользователям.

А в /usr/local/www/apache22/data/index.php что-то типа такого:

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/uhw/");
    }
?>

Чтобы редирект работал для URL отличных от “/” можем добавить в файлик /usr/local/www/apache22/data/.htaccess такой вот обработчик 404:

    ErrorDocument 404 /index.php

Как показывает практика, перманентный ужас у всех вызывает заполнение 47-й таблички с должниками при перезагрузке сервера. Почему многие испытывают с этим трудности - на данный момент остается загадкой и продолжает исследоваться британскими учеными.

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

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("/sbin/ipfw -q table 47 add ".$row['ip']);
           }
 
?>

(начиная с Ubilling 0.4.4 он уже лежит где нужно)

debtredir.1664019551.txt.gz · Востаннє змінено: 2022/09/24 14:39 повз 127.0.0.1