МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Проект учета пользовательских счетов для интернет-провайдеров на базе OS FreeBSD с применением программы Billing ISP

    всегда положителен. В русском языке обычно под этим подразумевают сладкое

    слово "халява". Разумеется, этот файл прежде всего должны иметь, например,

    сотрудники ISP и их ближайшие родственники ;-)

    .refused - наличие такого файла сигнализирует о том, что баланс лицевого

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

    приостановлен;

    .type - тип пользователя (например, "свой", "халява", "бартер", "деньги").

    Служит для деления пользователей на группы, по которым в дальнейшем

    генерируется статистическая информация;

    .account - тип (или индекс) прайс-листа для данного пользователя. Этот файл

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

    пользователей. Вы создаете желаемый прайс-лист и помещаете его в каталог

    /var/statserv/etc, а пользователям в домашних каталогах указываете лишь

    ссылку на него. Если Вы хотите поменять прайс-лист для некоторой группы

    пользователей, то, Вы редактируете прайс-лист всего в одном месте (см. ниже

    "Алгоритм выбора тарифной схемы для пользователя при старте демона");

    .account.conf - собственный прайс-лист для данного пользователя. См.

    структуру файла .account.conf. Этот файл следует применять в том случае,

    когда Вы хотите задать для пользователя индивидуальный прайс-лист;

    .pay.next - авансовый платеж, или следующее начисление на лицевой счет

    пользователя после обнуления текущего лицевого счета. Может быть

    использовано в том случае, когда пользователь не исчерпал текущий лицевой

    счет, однако оплатил следующую услугу по прежнему или новому прайс-листу;

    .account.next - то же, что и .account (см. выше), но только для авансового

    платежа.

    2. Описание выходных документов.

    В результате работы биллинговой программы вся информация о работе

    пользователь, как было сказано выше, фиксируется в лог-файлах и базе

    данных. Это является основным базисом для генерации отчетов и статистики.

    Извлекаемые данные могут быть представлены в качестве структурированных

    таблиц, либо в форме отчетов по запрашиваемым данным. Данная информация,

    также является подтверждением того, что пользователь работал в сети на

    случай претензий последнего.

    Список информации - данных, которые предлагаются пользователю и системному

    администратору (биллинг-инженеру):

    1. Время регистрации пользователя в конкретный день

    2. Оставшаяся сумма на счету у пользователя

    3. Время, проведенное в сети

    4. Статистика работы в сети по дням, неделям и месяцам

    5. Почтовое уведомление пользователя и администратора об истечении

    денежного взноса.

    6. Общая структурированная таблица статистики за определенный период

    времени

    При генерации выше указанной информации используются дополнительные модули

    программы «Billing ISP» и системные программы Unix такие как, CGI- модули

    (для обращения к базам данных и генерации HTML кода и форм или писем),

    Apache web server (для вывода на экран HTML кода сгенерированного CGI

    программой), MTA Sendmail (для отправки электронного письма пользователю об

    окончании счета).

    2. Описание технологии и алгоритмов решения задачи и их машинная

    реализация.

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

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

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

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

    Это определяется в основном спецификой данного программного продукта и

    операционной среды, в которой он работает.

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

    1. Если файл .pay в домашнем каталоге пользователя отсутствует, то

    занести размер платежа в файл .pay, а индекс прайс-листа в файл

    .account. Переход к пункту 3;

    2. Вычислить текущий размер лицевого счета пользователя. Если он

    отрицателен или равен нулю, то очередной платеж заносится в файл .pay,

    а выбранный индекс прайс-лист в файл .account. Если текущий размер

    лицевого счета пользователя положителен, то очередной платеж заносится

    в файл .pay.next, а выбранный индекс прайс-листа в файл .account.next;

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

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

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

    Введение.

    Рассматриваемый программный продукт напрямую зависит от системных вызовов

    операционной среды, в которой он работает, а также и от некоторых

    приложений, например PPPD (название этого демона происходит от названия

    протокола соединения пользователя и провайдера Point to Point Protocol),

    syslog (системная программа, которая фиксирует пребывание пользователя в

    системе, а также фиксирует в лог-файлы сообщения ядра ОС). В связи с тем,

    что описания данных продуктов это тема отдельной курсовой работы, данный

    алгоритм будет описан поверхностно.

    1. При соединении пользователя к провайдеру запускается программа Mgetty,

    которая управляет и инициализирует работу модема. Запуск данной

    програмы фиксируется в системных лог-файлах системы. После ее запуска

    она активизирует, в нашем случаи демон PPPD, который в свою очередь

    принемает и регистрирует пользовательские запросы и после проверки

    всего необходимого впускает или нет в систему. Все действия данных

    сервисов после соединения отслеживает программа syslog, которая и

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

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

    проверяя актуальность данного подключения и в случаи удачного входа

    изменяет (уменьшает) за определенный квант времени счет пользователя.

    3. Также демон биллинга с момента соединения пользователя начинает вести

    подсчет времени пребывания пользователя с соответствующим изменением в

    SQL базе полей.

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

    Ядром предлагаемой системы является специально написанный демон "биллинга"

    (в дальнейшем просто демон), осуществляющий контроль за израсходованнным

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

    момент в режиме "он-лайн". Демон запускается в момент входа пользователя в

    систему, по истечении одного кванта времени (например, 5 секунд) снимает с

    лицевого счета пользователя стоимость одного кванта в соответствии с

    действующей в данный момент ценой, которая, кстати, может меняться в

    зависимости от времени суток, а после завершения сеанса связи демон

    прекращает свою работу, протоколируя информацию о продолжительности сеанса

    связи и отработанной стоимости в специальный лог-файл в домашнем каталоге

    пользователя и, при необходимости, в общую SQL-базу данных. Другими

    словами, отдельная копия демона постоянно присутствует в памяти сервера

    биллинга и "следит" за пользователем на протяжении всего сеанса связи.

    Информация о начислениях на лицевой счет пользователя и снятия с лицевого

    счета за фактически отработанное "он-лайновое" время (так называемая

    "биллинговая информация") хранится в домашних каталогах пользователей в

    обычных текстовых файлах. Т.е. для каждого пользователя создается свой

    набор файлов с биллинговой информацией. Соответственно, вычисление размера

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

    файлов. Такое распределенное хранение биллинговой информации по каждому

    пользователю обеспечивает простоту построения системы, а значит надежность,

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

    счетам через www-интерфейс. В тоже время, такая же информация, но немного в

    другом виде хранится в SQL-базе, однако она используется исключительно для

    генерации статистической информации предоставляемой системному

    администратору.

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

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

    Данный алгоритм должна реализовывать программа, выполняющая аутентификацию

    пользователя (TACACS+ или pppd) на этапе подключения его к Интернету. В

    этот случае основную роль должен играть файл .current, который содержит уже

    вычисленное значение размера лицевого счета, т.к. в данный момент размер

    лицевого счета должен быть получен практически мгновенно.

    1. Если файл .refused присутствует в домашнем каталоге пользователя, то

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

    пункту 5;

    2. Если файл .time присутствует в домашнем каталоге пользователя, то

    текущий размер лицевого счета принимается положительным. Переход к

    пункту 5;

    3. Если файл .current присутствует в домашнем каталоге пользователя, то

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

    обновляется каждый раз после завершения работы демона). Переход к

    пункту 5;

    4. Текущий размер лицевого счета вычисляется по формуле : "общая сумма

    начислений из файла .pay минус общая сумма отчислений из файла .work

    минус общая сумма отчислений из файла .weekly";

    5. Если текущий размер лицевого счета положителен, доступ в систему

    пользователю разрешатеся, в противном случае - запрещается.

    Алгоритм выбора прайс-листа (тарифной схемы) для пользователя при старте

    демона

    . Если в домашнем каталоге пользователя находится файл .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.

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

    1. Обновить счетчик (в секундах) продолжительности текущего соединения, в

    соответствии с действующим тарифом вычислить стоимость одного кванта

    времени, обновить переменную в которой накапливается стоимость текущей

    сессии;

    2. Проверить, присутствует ли пользователь все еще в системе -

    просмотреть файл /var/run/utmp. Если пользователя в системе нет, то

    вызвать процедуру, выполняемую при завершении сессии;

    3. Если пользователь не исчерпал свой лицевой счет, то ждать истечение

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

    возникают при исчерпывании средств на лицевом счете:

    4. Проверить, является ли этот пользовать "привелегированным". Для этого

    посмотреть на флажок us.unoff. Если us.unoff==1, то ждать истечение

    следующего кванта времени;

    5. Проверить, была ли вызвана программа /var/statserv/bin/killuser, если

    да - то ждать истечение следующего кванта времени. Дело в том, что из-

    за особенностей построения некоторых систем аутентификации, при

    исчерпывании средств на лицевом счете, фактически пользователь

    отключается не сразу после вызова программы

    /var/statserv/bin/killuser, а через некоторый интервал времени;

    6. Если файл .pay.next отсутствует в домашнем каталоге пользователя,

    значит, пользователя необходимо принудительно отключить. Переход к

    пункту 9;

    7. Прочитать сумму из файла .pay.next. Переписать ее в файл .pay. Удалить

    файл .pay.next. Вычислить текущий размер лицевого счета пользователя.

    Если он отрицателен, то переход к пункту 9;

    8. Перечитать новый прайс-лист из файла .account.next. Удалить файл

    .account.conf, если он присутствует. Переименовать файл .account.next

    в файл .account и ждать истечение следующего кванта времени.

    9. Вызвать программу /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,

    продолжительность_сессии, стоимость_сессии.

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

    Описание использования демона биллинга

    Описание использования демона биллинга

    Демон 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


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.