Рефераты. Проект учета пользовательских счетов для интернет-провайдеров на базе OS FreeBSD с применением программы "Billing ISP" - (курсовая)

p>Ядром предлагаемой системы является специально написанный демон "биллинга" (в дальнейшем просто демон), осуществляющий контроль за израсходованнным временем и/или условными единицами пользователя, находящегося в данный момент в режиме "он-лайн". Демон запускается в момент входа пользователя в систему, по истечении одного кванта времени (например, 5 секунд) снимает с лицевого счета пользователя стоимость одного кванта в соответствии с действующей в данный момент ценой, которая, кстати, может меняться в зависимости от времени суток, а после завершения сеанса связи демон прекращает свою работу, протоколируя информацию о продолжительности сеанса связи и отработанной стоимости в специальный лог-файл в домашнем каталоге пользователя и, при необходимости, в общую SQL-базу данных. Другими словами, отдельная копия демона постоянно присутствует в памяти сервера биллинга и "следит" за пользователем на протяжении всего сеанса связи. Информация о начислениях на лицевой счет пользователя и снятия с лицевого счета за фактически отработанное "он-лайновое" время (так называемая "биллинговая информация") хранится в домашних каталогах пользователей в обычных текстовых файлах. Т. е. для каждого пользователя создается свой набор файлов с биллинговой информацией. Соответственно, вычисление размера лицевого счета пользователя происходит на основании содержимого этих файлов. Такое распределенное хранение биллинговой информации по каждому пользователю обеспечивает простоту построения системы, а значит надежность, и предоставляет возможность организации несложной системы доступа к лицевым счетам через www-интерфейс. В тоже время, такая же информация, но немного в другом виде хранится в SQL-базе, однако она используется исключительно для генерации статистической информации предоставляемой системному администратору.

    Алгоритм выполнения отдельных модулей.

Алгоритм вычисления лицевого счета при входе пользователя в систему

Данный алгоритм должна реализовывать программа, выполняющая аутентификацию пользователя (TACACS+ или pppd) на этапе подключения его к Интернету. В этот случае основную роль должен играть файл . current, который содержит уже вычисленное значение размера лицевого счета, т. к. в данный момент размер лицевого счета должен быть получен практически мгновенно. Если файл . refused присутствует в домашнем каталоге пользователя, то текущий размер лицевого счета принимается отрицательным. Переход к пункту 5; Если файл . time присутствует в домашнем каталоге пользователя, то текущий размер лицевого счета принимается положительным. Переход к пункту 5; Если файл . current присутствует в домашнем каталоге пользователя, то из него берется текущий размер лицевого счета (файл . current обновляется каждый раз после завершения работы демона). Переход к пункту 5; Текущий размер лицевого счета вычисляется по формуле : "общая сумма начислений из файла . pay минус общая сумма отчислений из файла . work минус общая сумма отчислений из файла . weekly"; Если текущий размер лицевого счета положителен, доступ в систему пользователю разрешатеся, в противном случае - запрещается. Алгоритм выбора прайс-листа (тарифной схемы) для пользователя при старте демона Если в домашнем каталоге пользователя находится файл . account. conf, то прайс-лист для данного пользователя читается из этого файла; Если в домашнем каталоге пользователя присутсвует файл . account, то из него читается первая строчка, которая добавляется в слову account, к полученной строке добавляется расширение . conf, и, таким образом файл c прайс-листом с полученным именем читается из каталога /var/statserv/etc; Если файлы . account. conf и . account отсутствуют в домашнем каталоге пользователя, то прайс-лист для данного пользователя читается из файла /var/statserv/etc/account. conf (прайс-лист по умолчанию)

    Действия, выполняемые демоном при старте

Анализирует командную строку. В качестве первого параметра ему передается имя пользователя, в качестве второго - NAS-порт (или устройство, например, /dev/cuaa2), в качестве третьего - адрес NAS-сервера (третий параметр нужен только в том случае когда у провайдера более одного NAS'a); Выбирает прайс-лист (тарифную схему) для пользователя (см. "Алгоритм выбора прайс-листа для пользователя при старте демона"); Проверяет присутствие в домашнем каталоге файла . time, если он там есть - взводит соответствующий флажок в переменную us. unoff=1; Проверяет присутствие в домашнем каталоге файла . refused, если он там есть - взводит соответствующий флажок в переменную us. refused=1; Вычисляет значение лицевого счета пользователя (см. пункт 4 "Алгоритма вычисления лицевого счета при входе пользователя в систему"). Даже если размер лицевого счета отрицателен, демон все равно продолжит свою работу, поскольку по истечении первого же кванта времени он, при необходимости, подаст сигнал на отключение этого пользователя; Демонизируется ; -);

Записывает свой PID в файл с именем NAS-порта в каталог /var/run (если у провайдера больше одного NAS'a - то необходимо модифицировать демон, чтобы избежать конфликтов в каталоге /var/run между NAS'ами); Программирует собственный таймер на заданный квант времени и входит в бесконечный цикл, вывести из которого может только SIGHUP. Действия, выполняемые демоном при истечении одного кванта времени Обновить счетчик (в секундах) продолжительности текущего соединения, в соответствии с действующим тарифом вычислить стоимость одного кванта времени, обновить переменную в которой накапливается стоимость текущей сессии; Проверить, присутствует ли пользователь все еще в системе - просмотреть файл /var/run/utmp. Если пользователя в системе нет, то вызвать процедуру, выполняемую при завершении сессии; Если пользователь не исчерпал свой лицевой счет, то ждать истечение следующего кванта времени. В противном случае описанные ниже действия возникают при исчерпывании средств на лицевом счете: Проверить, является ли этот пользовать "привелегированным". Для этого посмотреть на флажок us. unoff. Если us. unoff==1, то ждать истечение следующего кванта времени; Проверить, была ли вызвана программа /var/statserv/bin/killuser, если да - то ждать истечение следующего кванта времени. Дело в том, что из-за особенностей построения некоторых систем аутентификации, при исчерпывании средств на лицевом счете, фактически пользователь отключается не сразу после вызова программы /var/statserv/bin/killuser, а через некоторый интервал времени; Если файл . pay. next отсутствует в домашнем каталоге пользователя, значит, пользователя необходимо принудительно отключить. Переход к пункту 9; Прочитать сумму из файла . pay. next. Переписать ее в файл . pay. Удалить файл . pay. next. Вычислить текущий размер лицевого счета пользователя. Если он отрицателен, то переход к пункту 9; Перечитать новый прайс-лист из файла . account. next. Удалить файл . account. conf, если он присутствует. Переименовать файл . account. next в файл . account и ждать истечение следующего кванта времени. Вызвать программу /var/statserv/bin/killuser с параметрами имя_пользователя и NAS-порт, которая пошлет сигнал на отключение пользователя; Действия, выполняемые демоном при завершении сессии

При завершении сессии сервер аутентификации TACACS (или pppd) читает PID демона из каталога /var/run/ и посылает ему SIGHUP (возможен, также другой вариант, когда демон постоянно сканирует файл utmp и выполняет ниже описанные действия, если пользователь "изчез" из файла utmp). Демон удаляет файл со своим PID-ом из /var/run/, записывает сведения о только что завершенной сессии в файл . weekly, обновляет файл . current с текущим размером лицевого счета пользователя и вызывает скрипт /var/statserv/bin/close_session. с параметрами имя_пользователя, NAS-port, продолжительность_сессии, стоимость_сессии.

    Контрольный пример.
    Описание использования демона биллинга
    Описание использования демона биллинга

Демон billing является ядром предлагаемой системы учета пользователей для ISP. Он может работать в двух режимах - в "основном" режиме (т. е. режиме демона) для контроля лицевого счета пользователя в реальном масштабе времени и в "вспомогательном" режиме выдачи сведений о размере лицевого счета пользователя или контроля правильности задания тарифной схемы. Ниже приведены все возможные ключи запуска и параметры командной строки: /var/statserv/bin/billing

Usage error: billing [-vdeashtpPrRwW] [username] [port] [nas] -v show version and exit

    -d daemonize billing
    -e increase debug level in daemonize mode
    -a show current price
    -c show current account for sysadmin
    -s show current account
    -h show current account in HTML format
    -t total user account
    -p show pay -P show pay history
    -n show pay. next -N show pay. next history
    -r show work -R show work history
    -w show weekly -W show weekly history

Режим демона - запуск с ключом -d. Далее следуют обязательные параметры - имя пользователя, NAS-порт (порт модема) и имя NAS-сервера (если NAS-сервер у ISP один, то этот параметр выбирается произвольно, однако совсем опускать его нельзя). Пример: /var/statserv/bin/billing -d jackson Async2 access. provider. net Режим выдачи сведений о размере лицевого счета пользователя - запуск с ключом -s и единственным параметром - именем пользователя. Пример: /var/statserv/bin/billing -s jackson

В данном варианте на стандартный вывод ничего не выводится, а "знак" лицевого счета отражается в коде возврата. Если размер лицевого счета больше либо равен нулю, т. е. доступ пользователю в систему разрешен, то billing возвращает число 0, если меньше нуля, т. е. доступ пользователю в систему ограничен, то billing возвращает число 1. /var/statserv/bin/billing -st jackson

На стандартный вывод выводится общий размер лицевого счета пользователя в plain text. См. п. 4 алгоритма вычисления размера лицевого счета пользователя /var/statserv/bin/billing -spt jackson

На стандартный вывод выводится общий размер начислений на лицевой счет пользователя и его общий размер в plain text. Алгоритм вычисления лицевого счета тот же самый. Ключ -P задает вывод истории начислений. /var/statserv/bin/billing -c jackson

    Соответствует вызову
    /var/statserv/bin/billing -stpnrw jackson

т. е. наиболее "употребительному" использованию billing с точки зрения системного администратора. Вызов billing с ключом -h, например /var/statserv/bin/billing -shtpnrw jackson

выводит информацию о лицевом счете пользователя в HTML-формате для того, чтобы ее можно было предоставлять пользователю через www-интерфейс; Режим проверки алгоритма выбора прайс-листа для пользователя. Вызов:

    /var/statserv/bin/billing -a jackson

Предназначен исключительно для системного администратора чтобы контролировать правильность задания тарифной схемы для данного пользователя.

Страницы: 1, 2, 3



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.