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

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


Сайдбар

Розділи

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

FAQ



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

debtredir

Перенаправлення боржників у кабінет користувача

Для початку припустимо, що ви настільки ліниві, що навіть не потрудилися підняти свій власний 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.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/apache24/data/.htaccess такий ось обробник 404:

    ErrorDocument 404 /index.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.txt · Востаннє змінено: 2023/06/16 10:15 повз nightfly