Проект учета пользовательских счетов для интернет-провайдеров на базе OS FreeBSD
Страница 2
Для справки некоторые коммерческие операционные системы могут достигать стоимости 5000$, при это с ограниченным числом установок и с ограниченным числом пользователей плюс к этому около 2000-3000$ может стоить какая ни будь посредственная биллинговая система.
Из всего выше сказанного видно, что при применении данного программного обеспечения интернет-провайдеры получают существенную выгоду.
2. Разработка информационного обеспечения задачи.
2.1. Описание входной информации.
Основным входным документом, с которым взаимодействует рассматриваемая биллинговая система это копия платежного поручения пользователя ISP. При регистрации клиента провайдер предлагает ему выбрать установленный тариф (прайс-лист) на услуги коммутируемого подключения на определенное (тарифом) время, по которому клиент будет перечислять установленную денежную сумму. После регистрации и предоплаты услуг нашего ISP на счет (в домашний каталог пользователя копируются определенный набор файлов см. ниже) пользователя поступает определенная прайс-листом сумма, которая в процессе работы пользователя в интернете уменьшается через определенный тарифом (прайс-листом) квант на определенную сумму. Соответственно все, что делает одна часть программы биллинга другая ее часть фиксирует все в базе данных и в том же личном каталоге пользователя в отдельный лог-файл на основании, которого и генерируются отчеты пользователю и администратору. Также к входной информации можно отнести: отчисления с пользовательского счета, проведенное время в интернете, время подключения (регистрации в системе). На основании изложенной выше информации вспомогательный модуль программы билинга может предоставлять подробную статистикуего счета пользователя, как администратору так и самому клиенту ISP.
#
#
# Пример файла account.conf (.account.conf).
# Лидирующие пробелы, пустые строки,
# строки, начинающиеся с символа "#" игнорируются.
# Обрабатываются лишь строки, начинающиеся с ключевого
# слова "price:". Количество строк "price" неограченно.
# Формат прайс-листа (тарифной схемы) -
# price: День_недели, час_начала-час_окончания $стоимость_в_у.е.
# что соответствует промежутку времени
# час_начала:00-час_окончания:59
# Если при указании временные диапазоны пересекаются, то стоимость
# часа принимается последняя.
# Основная тарифная схема.
# Цена: в будние дни с 10:00-18:00 - $1
# в остальное время - $0,6
#
#
comment: Поле_comment_будет_автоматически_выводиться_при_запуске
comment: демома_в_режиме_получения_сведений_о_размере_лицевого
comment: счета_пользователя._Удобно_использовать_для_задания_комментарий
comment: к_прайс_листу.
commenth:
commenth: Поле_commenth_выводится,_если_размер_лицевого_счета
commenth: выдается_в_html_формате._Пробелы_должны
commenth: заменяться_на_подчеркивания._Количество_строк_comment_и
commenth: commenth_не_ограничено,_однако_суммарная_длина_каждой_не
commenth: не_должна_превышать_1000_символов.
price: Monday, 0-9 $0.6
price: Monday, 10-17 $1
price: Monday, 18-23 $0,6
price: Tuesday, 0-9 $0.6
price: Tuesday, 10-17 $1
price: Tuesday, 18-23 $0,6
price: Wednesday, 0-9 $0.6
price: Wednesday, 10-17 $1
price: Wednesday, 18-23 $0,6
price: Thursday, 0-9 $0.6
price: Thursday, 10-17 $1
price: Thursday, 18-23 $0,6
price: Friday, 0-9 $0.6
price: Friday, 10-17 $1
price: Friday, 18-23 $0,6
price: Saturday, 0-23 $0.6
price: Sunday, 0-23 $0.6
Описание файлов в домашнем каталоге пользователя с "биллинговой информацией"
.pay - информация о начислениях (история начислений) на лицевой счет пользователя условных единиц или $. Файл имеет формат вида:
#
#
# Платежи клиента ivan
#
#
1999/02/27 13:00:01 Add pay | 10.5
1999/03/15 15:12:00 Add pay | 23
1999/05/05 12:30:40 Add pay | 6.5
Как видно, данный файл имеет два поля произвольной длины разделенные символом "|". Первое (левое) поле содержит комментарий или, другими словами, обоснование для второго (правого) поля, в котором содержится число с плавающей точкой, определяющее стоимость транзакции, т.е. стоимость биллинговой информации. Основная и единственная единица измерения биллинговой информации - условная единица или $. Если приведенный выше файл содержится в домашнем каталоге пользователя ivan, то, просуммировав второе (правое) поле, можно выяснить, что общий размер начислений на лицевой счет (или платежей) клиента ivan равняется 40 условным единицам. Открыв этот файл, системный администратор или пользователь ivan может не только узнать сколько вообще было начислено на данный лицевой счет, но и то, когда (кем) это было сделано (забегая вперед, хочется отметить, что подобный способ хранения биллинговой информации в обычных текстовых файлах, т.е. "дата, обоснование операции | размер", является основным для предлагаемой системы). Добавлять или изменять информацию в файлах .pay должен только системный администратор. Делать это можно как из командной строки, так и через веб-интерфейс;
.weekly - информация об отчислениях (история отчислений) с лицевого счета пользователя в условных единицах за фактическую работу за текущую неделю по каждому соединению (по каждой предоставленной услуге). Формат файла аналогичен формату файла .pay
#
#
# Работа клиента ivan за текущую неделю
#
#
1999/05/18 13:00:01 Time elapsed=40 sec., cost | 0.052
1999/05/19 15:12:00 Time elapsed=1200 sec., cost | 0.156
1999/05/19 16:30:40 Time elapsed=75 sec., cost | 0.101
Запись в файл .weekly делает демон после окончания соединения. В приведенном выше фрагменте файла .weekly в первом поле содержится следующая информация: дата окончания соединения (YYYY/MM/DD), вреня окончания соединения (HH:MM:SS), продолжительность соединения в секундах (Time elapsed). Во втором поле файла .weekly, отделенного символом "|" содержится стоимость транзакции (стоимость соединения, стоимость фактически предоставленной услуги в условных единицах);
.work - информация об отчислениях (история отчислений) с лицевого счета пользователя по за целые недели в сумме. В конце каждой недели второе поле файла .weekly суммируется и итоговая сумма заносится в файл .work.
1999/05/18 1999/05/25 cost | 5.011
1999/05/26 1999/06/01 cost | 2.133
Файлы .weekly в домашних каталогах пользователей "разбухают" вследствие того, что там протоколируется каждое соединение. С другой стороны, как показывает практика, большинству пользователей интересен лишь подробный отчет использования машинного времени за текущую и прошедшую неделю, поэтому информация, накопленная в файлах .weekly должна "компрессироваться". Если же пользователю нужно предоставить подробный отчет за работу двух- (трех-, четырех- и т.д.) недельной давности (что случается не так часто), то эту информацию системный администратор может "вытащить" из SQL-базы. Обновлением файлов .work, .weekly и .weekly.last должна заниматься специальная программа w_update.pl, запускаемая по крону еженедельно;
.weekly.last - копия файла .weekly за прошлую неделю;
.current - текущий размер лицевого счета пользователя в условных единицах, файл обновляется после завершения каждой сессии данного пользователя, служит для "быстрого" вычисления размера лицевого счета пользователя, например, при старте нового соединения;
.time - наличие такого файла (под наличием файла подразумевается файл с данным именем любой длины, в том числе и нулевой, доступный для чтения в данный момент) сигнализирует о том, что баланс лицевого счета пользователя всегда положителен. В русском языке обычно под этим подразумевают сладкое слово "халява". Разумеется, этот файл прежде всего должны иметь, например, сотрудники ISP и их ближайшие родственники ;-)