Здравствуйте.
Возникла задача создать бесплатное интернет кафе. Т.е. что бы пользователи свободно подключались бес логинов и паролей.
Проблема в том, что нужно для каждого соединения резать трафик и время соединения.
Например 128 кб на полч часа, потом обрыв. И заново подключение.
Можно ли это сделать на Iptables? Или нужны доп. пакеты?
Ставь биллинг, который может учитывать время, ну и само собой трафик.
Они специально заточены под эти нужды, тебе меньше гемора и автоматизация этих процессов в одной проге.
$db = mysql_connect('localhost', 'root', '')
or die('connect to database failed');
mysql_set_charset('cp1251');
mysql_select_db('wifi')
or die('db not found');
//увеличиваем счетчик на 1 минуту
mysql_query("UPDATE `Sessions` SET time = time + 1");
//проверка статусов
mysql_query("UPDATE `Sessions` SET status = 0, time = 0, bytes = 0 WHERE (time > '".LIMIT_TIME."' OR bytes > '".LIMIT_BYTES."') AND status = 1");
mysql_query("UPDATE `Sessions` SET status = 1 WHERE time > '".LIMIT_TIME_WAIT."' AND status = 0");
//формирование листа ip
mysql_query("INSERT INTO `DenyList` (`clientip`) SELECT clientip FROM `Sessions` WHERE status = 0");
$time = time();
$lasttime = LIMIT_LAST_TIME*60;
mysql_query("DELETE FROM `DenyList` WHERE clientip IN (SELECT clientip FROM `Sessions` WHERE status = 1 OR (".$time." - lasttime) > ".$lasttime.")");
mysql_query("DELETE FROM `Sessions` WHERE (".$time." - lasttime) > ".$lasttime." "); //неактивные соединения
mysql_query("UPDATE `Sessions` SET time = time + 1");
mysql_query("UPDATE `Sessions` SET status = 0, time = 0, bytes = 0 WHERE (time > '".LIMIT_TIME."' OR bytes > '".LIMIT_BYTES."') AND status = 1");
mysql_query("UPDATE `Sessions` SET status = 1 WHERE time > '".LIMIT_TIME_WAIT."' AND status = 0");
mysql_query("INSERT INTO `DenyList` (`clientip`) SELECT clientip FROM `Sessions` WHERE status = 0");
$time = time();
$lasttime = LIMIT_LAST_TIME*60;
mysql_query("DELETE FROM `DenyList` WHERE clientip IN (SELECT clientip FROM `Sessions` WHERE status = 1 OR (".$time." - lasttime) > ".$lasttime.")");
mysql_query("DELETE FROM `Sessions` WHERE (".$time." - lasttime) > ".$lasttime." ");
magistr_foreverНу а так вообщем ничего, если не считать, что при первом запуске скрипта сквид упал ;)
Хотя таких реализаций много, но мне кажется этому делу тоже нужно дать ход.
Например, можно дамп для мускула, а то в первый раз базу создавать много руками тыкать - не каждый поймёт.
И таки написать инструкцию, как в крон добавить, что в какой последовательности. Запаковать в архивчик и присвоить номер релиза.
Как Вам идея?
Так и начинаются велики дела ;)
P.S. Можно ещё вебморду прикрутить. Джае готовую взять.
А нужно что бы обрывало?
squid -k reconfigure заставляет сквид перечитать файл конфигурации. Естественно, что все запущенные процессы останутся.
Мне кажется добавлением чего угодно в конфигу не добится что бы он рвал соединения. ИМХО, это уже явно нужно делать, либо перезапуском сетевого интенрфейса, либо правилами iptables