Для початку припустимо, що ви настільки ліниві, що навіть не потрудилися підняти свій власний 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 щось типу цього:
<?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
#!/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 він уже лежить де потрібно)