Traffic Reg Software  
English version    С момента открытия сайта прошло: 14 лет 6 месяцев 18 дней  auto
Статьи  Как считать трафик на FreeBSD. Часть третья. Веб-интерфейс для пользователей 
 

Как считать трафик на FreeBSD. Часть третья. Веб-интерфейс для пользователей

Автор TMeter

В предыдущих статьях я рассказал о том, как заносить трафик в MySQL таблицу и построить веб-интерфейс просмотра счетчиков трафика для сисадмина. Но мы пойдем дальше. Теперь задача усложнена до предела - предоставить возможность пользователям самим смотреть свою статистику через веб-браузер, причем одному пользователю может принадлежать несколько IP адресов и ему разрешено смотреть статистику только по своим адресам. Кроме того, каждый пользователь должен пройти аутентификацию перед просмотром статистики. А на сисадмина возлагается почетная обязанность управлять пользователями - добавить нового, изменить пароль пользователю, назначить новый IP адрес - и это все через веб-интерфейс.

Требования к программному обеспечению

Сначала нам потребуется сервер Apache с включенными модулями PHP и mod_auth_mysql (модуль для аутентификации с возможностью хранения базы пользователей и паролей в MySQL базе данных). mod_auth_mysql можно использовать от Zeev Suraski, который в FreeBSD находится в /usr/ports/www/mod_auth_mysql.

Проектирование таблиц базы данных

Прежде всего, у нас есть таблица traffic, в которой хранится трафик по каждому интересному для нас IP адресу. Формат этой таблицы описан в предыдущей статье. Другая таблица (назовем ее mysql_auth) будет содержать сведения о пользователях для аутентификации средствами Apache. Ее формат:

Имя поляТип поляНазначение поля
useridint, primary key, AUTO_INCREMENTИдентификатор пользователя
usernamechar(25)Имя пользователя
passwdchar(25)Пароль пользователя в plaintext
groupschar(25)Группа для пользователя (требование mod_auth_mysql, в нашей системе не используется)
descrchar(100)Описание пользователя

Рис. 1. Формат таблицы mysql_auth

И, наконец, потребуется таблица, которая бы "привязывала" пользователей к IP адресам из таблицы traffic. Такая связь называется "один-ко-многим":

Имя поляТип поляНазначение поля
useridintИдентификатор пользователя
ipchar(16)IP адрес

Рис. 2. Формат таблицы users2ip

Шаг 1. Настройка виртуальных серверов

Нам потребуется два виртуальных сервера. Первый (например, lanadmin.tmeter.ru) - для сисадмина, где можно будет просматривать статистику по всем IP адресам и управлять пользователями. Второй (например, stat.tmeter.ru) - для пользователей. Используя свой пароль, пользователи могут здесь посмотреть статистику по разрешенным для них IP адресам. Сервер stat.tmeter.ru необходимо сконфигурировать так, чтобы доступ к нему осуществлялся только аутентифицированным пользователям используя модуль mod_auth_mysql. Естественно, что база данных пользователей и паролей должна храниться в таблице MySQL. Например:

<VirtualHost *>
   DocumentRoot /usr/local/virtual/stat/htdocs
   ServerName stat.tmeter.ru
   ErrorLog /usr/local/virtual/stat/logs/error.log
   CustomLog /usr/local/virtual/stat/logs/access.log common
   DirectoryIndex index.php index.htm index.html
   AddType application/x-httpd-php .php
   <Directory /usr/local/virtual/stat/htdocs>
      AuthName "LanStatSQL"
      AuthType Basic
      Auth_MySQL_DB ipacc
      Auth_MySQL_Password_Table mysql_auth
      Auth_MySQL_Encryption_Types Plaintext
      Auth_MySQL_Encrypted_Passwords off
      Auth_MySQL on
      <Limit GET POST>
         require valid-user   
      </Limit>
   </Directory>
</VirtualHost>

Шаг 2. Настройка виртуального сервера для сисадмина

Распакуйте содержимое архива ipacc_trafd3_lanadmin.tgz в корневую директорию сервера lanadmin.tmeter.ru и отредактируйте параметры подключения к базе данных в заголовке скрипта "inc/procs.inc". Создайте пустые таблицы mysql_auth и users2ip.

Шаг 3. Настройка виртуального сервера для пользователей

Распакуйте содержимое архива ipacc_trafd3_stat.tgz в корневую директорию сервера stat.tmeter.ru и отредактируйте параметры подключения к базе данных в заголовке скрипта "inc/procs.inc".

Откройте страницу http://lanadmin.tmeter.ru, создайте пользователей и назначьте им IP адреса. После чего, пользователи внесенные в базу данных, mysql_auth могут заходить на сервер http://stat.tmeter.ru для просмотра своей статистики по трафику.

 
 

Как вы оцениваете эту статью?

Отлично
Хорошо
Так себе
Отстой