Мегаобучалка Главная | О нас | Обратная связь


Описание ввода в базу данных входной информации.



2019-07-03 166 Обсуждений (0)
Описание ввода в базу данных входной информации. 0.00 из 5.00 0 оценок




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

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

Если файл .pay в домашнем каталоге пользователя отсутствует, то занести размер платежа в файл .pay, а индекс прайс-листа в файл .account. Переход к пункту 3;

Вычислить текущий размер лицевого счета пользователя. Если он отрицателен или равен нулю, то очередной платеж заносится в файл .pay, а выбранный индекс прайс-лист в файл .account. Если текущий размер лицевого счета пользователя положителен, то очередной платеж заносится в файл .pay.next, а выбранный индекс прайс-листа в файл .account.next;

Обновить файл .current с текущим размером лицевого счета;

Занести платеж в таблицу "ПЛАТЕЖИ" базы данных (опционально).

 

Алгоритм фиксации в базе статистической информации

Введение.

Рассматриваемый программный продукт напрямую зависит от системных вызовов операционной среды, в которой он работает, а также и от некоторых приложений, например PPPD (название этого демона происходит от названия протокола соединения пользователя и провайдера Point to Point Protocol), syslog (системная программа, которая фиксирует пребывание пользователя в системе, а также фиксирует в лог-файлы сообщения ядра ОС). В связи с тем, что описания данных продуктов это тема отдельной курсовой работы, данный алгоритм будет описан поверхностно.

При соединении пользователя к провайдеру запускается программа Mgetty, которая управляет и инициализирует работу модема. Запуск данной програмы фиксируется в системных лог-файлах системы. После ее запуска она активизирует, в нашем случаи демон PPPD, который в свою очередь принемает и регистрирует пользовательские запросы и после проверки всего необходимого впускает или нет в систему. Все действия данных сервисов после соединения отслеживает программа syslog, которая и генерирует основную базу действий пользователя в системе.

Billing ISP, как уже говорилось выше напрямую взаимодействует с PPPD проверяя актуальность данного подключения и в случаи удачного входа изменяет (уменьшает) за определенный квант времени счет пользователя.

Также демон биллинга с момента соединения пользователя начинает вести подсчет времени пребывания пользователя с соответствующим изменением в SQL базе полей.

Обобщенный алгоритм решения задачи.

Ядром предлагаемой системы является специально написанный демон "биллинга" (в дальнейшем просто демон), осуществляющий контроль за израсходованнным временем и/или условными единицами пользователя, находящегося в данный момент в режиме "он-лайн". Демон запускается в момент входа пользователя в систему, по истечении одного кванта времени (например, 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, продолжительность_сессии, стоимость_сессии.

Контрольный пример.



2019-07-03 166 Обсуждений (0)
Описание ввода в базу данных входной информации. 0.00 из 5.00 0 оценок









Обсуждение в статье: Описание ввода в базу данных входной информации.

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (166)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)