DiplomMerzlyakovx

advertisement
Национальный исследовательский ядерный университет «МИФИ»
Факультет Кибернетики
Кафедра «Компьютерные системы и технологии»
Пояснительная записка к дипломному проекту
(выпускной квалификационной работе)
на тему:
Разработка корпоративного Web-портала IP-телефонии для предприятий
среднего бизнеса
Студент-дипломник:
/
Мерзляков И. В.
/
Руководитель проекта:
/
Васильев Н.П.
/
Рецензент:
/
Сильнов Д.С.
/
И.О. заведующий кафедрой №12:
/
Иванов М.А.
/
Москва 2011
1
Аннотация
Дипломный проект посвящен разработке корпоративного Web-портала IP-телефонии
на основе IP-АТС Asterisk, внедрение которого позволит предоставить более качественное
обслуживание клиентов сотрудниками организации.
Во введении обосновывается актуальность внедрения и использования IP-телефонии
на предприятии, определяются требования к разрабатываемой системе, а также
практическая значимость работы.
В первой главе проведен сравнительный анализ современных платформ IPтелефонии, на основе которых возможно построить систему, а также обзор и выбор
технологий Web-программирования, на основе которых будет реализован портал.
Во второй главе рассматривается разработка структуры и архитектуры системы,
производится разработка и реализация хранилища данных, настройка сервера Asterisk на
хранение необходимой информации в разработанном хранилище. Производится градация
пользователей по ролям и разрабатываются соответствующие интерфейсы системы и их
функционал.
Реализуется
система
безопасности
Web-портала,
защищающая
от
несанкционированного доступа.
В третьей главе рассматривается создание базы данных, конфигурирование
компонентов системы, реализация программного обеспечения портала, а так же отладка и
тестирование.
В заключении описаны достигнутые результаты проделанной работы.
В
приложениях
представлены
листинги
программ,
реализующих
систему,
инструкции по использованию системы, код скрипта создания базы данных.
В результате дипломного проектирования была выполнена разработка и реализация
корпоративного Web-портала, построено хранилище данных, произведены его отладка и
тестирование, портал подготовлен к запуску в режиме опытной эксплуатации.
Пояснительная записка содержит страниц, рисунка, таблиц, и 3 приложения.
2
Задание
3
Содержание
Введение ........................................................................................................................................... 5
1. Обзорная часть ............................................................................................................................. 8
1.1. Обзор технологий Web-программирования ...................................................................... 8
1.1.1. Клиентские технологии ............................................................................................. 8
1.1.2. Серверные технологии ............................................................................................ 11
1.2. Сравнительный анализ современных програмных продуктов для организации
IP-телефонии ...................................................................................................................... 18
2. Разработка системы корпоративной IP-телефонии ................................................................ 24
2.1. Разработка структуры и архитектуры системы .............................................................. 24
2.2. Разработка информационного хранилища системы ....................................................... 27
2.2.1 Разработка базы данных системы ........................................................................... 27
2.2.2. Хранилище дополнительных файлов .................................................................... 36
2.3. Разработка подсистемы полномочий пользователей ..................................................... 37
2.4. Разработка алгоритмов функционирования Web-приложения ..................................... 39
2.4.1. Обобщенный алгоритм функционирования Web-приложения ........................... 39
2.4.2. Алгоритм работы пользовательской подсистемы ................................................ 41
2.4.3. Алгоритм работы администраторской подсистемы ............................................. 43
3. Реализация системы .................................................................................................................. 45
3.1. Реализация базы данных системы средствами СУБД .................................................... 45
3.2. Конфигурирование компонентов системы ...................................................................... 47
3.2.1 Интеграция Asterisk с базой данных ....................................................................... 47
3.2.2 Настройка хранения истории звонков в базе данных .......................................... 48
3.2.3 Настройка хранения параметров SIP-пользователей в базе данных ................... 50
3.2.4 Организация записи разговоров .............................................................................. 51
3.2.5 Установка и настройка пакета Samba ..................................................................... 51
3.3. Реализация подсистемы безопасности ............................................................................. 52
3.4. Реализация алгоритмов работы Web-приложения ......................................................... 58
3.5. Тестирование и отладка .................................................................................................... 61
Заключение..................................................................................................................................... 65
Список литературы ........................................................................................................................ 67
4
Введение
В настоящее время невозможно себе представить деятельность успешной,
развивающейся компании без эффективного использования информационных технологий.
Именно поэтому создание качественной современной информационной инфраструктуры
офиса на сегодня является одной из приоритетных задач для любой компании. От того,
насколько качественно и удобно организована информационная инфраструктура офиса, в
той или иной степени зависит успешное протекание всех бизнес-процессов.
Деловая переписка по электронной почте, подготовка и печать документов - все это
необходимые инструменты для функционирования любого бизнеса. Но для того чтобы
уверенно лидировать на рынке преуспевающей организации, независимо от ее размера,
необходима также и современная многофункциональная связь, позволяющая не только
принимать “городские” звонки и осуществлять телефонную связь внутри офиса, но и
обеспечивающая более продвинутые интеллектуальные услуги, позволяющие повысить как
качество обслуживания клиентов, так и эффективность работы персонала самой компании.
Среди этих функций: автосекретарь, голосовые меню, конференции, гибкое управление
вызовами, справочники на дисплее телефонного аппарата, интеграция с компьютерными
программами и др. До недавнего времени эти функции были недоступны для организаций,
использующих
традиционные
мини-АТС,
по
причине
отсутствия
у
них
таких
функциональных возможностей.
Фактически возможности обычной телефонной сети ограничиваются способностью
передавать голос и факсимильные сообщения. В то время как при помощи универсальных
коммуникаций можно создавать видеоконференции, передавать текстовые сообщения и
почту, осуществлять автоматизированное перенаправление и сохранять информацию о
звонящем. И это не исчерпывающий список преимуществ.
В результате все большее число организаций отдает предпочтение интегрированным
решениям. Такие решения позволяют не только обеспечить потребности организации в
телефонии, видео и передаче данных, но и упростить управление и эксплуатацию единой
сети. При таком подходе корпоративная телефония, видеоконференции и сеть передачи
данных больше не являются изолированными системами, каждая из которых требует своей
собственной инфраструктуры и собственных средств управления.
Интеграция телефонии и данных в рамках одного решения также позволяет
расширить возможности, доступные пользователю такой сети. Теперь можно запланировать
и организовать телефонное совещание из приложения-календаря на персональном
компьютере. Абонент может произвести поиск телефонного номера в централизованном
каталоге сотрудников непосредственно со своего телефонного аппарата. Он также может
получить оставленное ему голосовое сообщение по электронной почте. Конечная же цель
5
интегрированной системы – обеспечение сотрудников максимально удобными средствами,
помогающими им решать стоящие перед ними бизнес - задачи. Это поможет повысить
производительность
труда,
упростить
взаимодействие
между
сотрудниками
и
усовершенствовать процесс общения с клиентами.
Наибольшее распространение получил подход к построению интегрированных
информационных систем на базе сетей передачи данных, использующих протокол IP.
Ярким примером такого решения является технологи VOIP (IP-телефония). Аббревиатура
VoIP образована из словосочетания Voice over Internet Protocol, означающего "голос,
передаваемый по сетям, построенным на базе стека протоколов TCP/IP", т.е. появляется
возможность использования одной кабельной инфраструктуры для функционирования как
локальной сети передачи данных компании, так и телефонной сети.
Благодаря принципу открытости в системе IP-телефонии возможно расширение
предоставляемых услуг, интеграция с существующими и планируемыми сервисами. IPтелефония позволяет построить единую централизованную систему управления с
разграничением прав доступа для всех бизнес - подсистем предприятия. Подобная
возможность интегрировать прежде обособленное телефонное решение в пул рядовых
корпоративных IP- сервисов – главное преимущество VoIP над традиционными
телефонными решениями.
Сегодня развитие этой технологии уже достигло того уровня, когда услуги IPтелефонии стали достаточно надежными и качественными, чтобы рассматриваться как
альтернатива услугам традиционной телефонной связи.
Принимая во внимание всё вышесказанное, а также постоянное снижение цен на
коммуникационное оборудование и увеличение количества качественных каналов передачи
данных, можно утверждать, что IP телефония в ближайшем будущем получит широкое
распространение по всему миру и, вероятно, в конечном счете, заменит собой
традиционную телефонию с использованием АТС.
Учитывая преимущества, которые дает использование IP телефонии, было принято
решение по внедрению этой технологии в офисы компании. Основными требованиями,
предъявляемыми к новому решению, являются:
1. Сохранение всех возможностей, предоставляемых традиционными средствами
телефонной связи.
2. Возможность использования как стационарных телефонных аппаратов для
персонала компании, так и программных решений для использования сотрудниками Callцентра.
6
3. Возможность задания гибкой маршрутизации звонков в зависимости от любых
факторов, таких как: время суток, дата, линия, номер абонента, наличие сотрудника в офисе
или любых других.
4. Возможность записи телефонных разговоров сотрудников и ведение подробной
статистики. При этом обеспечить возможность доступа сотрудников компании к этой
информации через Интернет из любого места, где бы они не находились: в офисе
предприятия, дома или командировке.
5. Надежность внедряемого решения должна обеспечивать офисы компании
бесперебойной
телефонной
связью
и
всеми
дополнительными
сервисами,
предоставляемыми этим решением.
6. Возможность интеграции голосовых сервисов в бизнес-приложения и бизнеспроцессы компании.
7. Бесплатная голосовая связь внутри компании, включая связь с географически
удаленными офисами, при этом необходимо объединение телефонной емкости филиалов в
единый номерной план.
Таким образом, для решения поставленной задачи в рамках данной дипломной
работы необходимо:
1. Изучить современные средства и способы организации корпоративной IPтелефонии
2. Провести сравнительный анализ современных решений представленных на
рынке IP телефонии.
3. На основе анализа выбрать решение, удовлетворяющее потребностям компании.
7
1.
Обзорная часть
1.1
Обзор технологий Web-программирования.
Параллельно с развитием средств автоматизации бизнес-процессов на базе
традиционных приложений шло бурное развитие технологий web-программирования.
Появление
различных
технологий
создания
скриптов,
новых
языков
web-
программирования и разнообразных новых платформ – естественный виток в развитии webтехнологий. Они появлялись по мере возникновения все более сложных задач, требовавших
новых возможностей и путей их решения. Постепенно в их числе появились средства
реализации
интерактивности,
персонализации
информационного
наполнения,
взаимодействия с клиентами, а также инструменты для осуществления интеграции с
корпоративными информационными системами.
В настоящее время спектр технологий, использующихся для разработки Webприложений, очень широк. К ним относятся системы, позволяющие создать Webприложение любого уровня сложности как без самостоятельного написания кода, так и
Web-ориентированные языки и технологии программирования. Разделить все технологии
Web-программирования можно на два основных вида – клиентские и серверные. Обе эти
технологии не являются ни в коей мере самостоятельными и не применяются одни в отрыве
от других. Как клиентская часть самостоятельно не сможет ничего сделать без сервера, так
и серверная часть не сможет заменить собой клиентскую. Это симбиоз, эти технологии
всегда работают во взаимосвязи.
1.1.1 Клиентские технологии
Клиентские языки обрабатываются браузером на стороне клиента. Cтраницы вебсайтов описываются при помощи языка гипертекстовой разметки – HTML. Но поскольку
этот язык отвечает всего лишь за оформление веб-страниц, то задать с его помощью какоелибо динамическое действие невозможно. Восполнить это позволяют клиентские скрипты специальные
веб-сценарии,
зачастую
встраиваемые
прямо
в
html-код
страницы.
Применяются они главным образом для повышения интерактивности приложений,
например, для проверки корректности вводимых данных без дополнительного обращения к
серверу, для формирования удобного пользовательского интерфейса: создание некоторых
элементов дизайна — наподобие всплывающих кнопок и меню, а также управление
другими объектами, внедренными в HTML-страницу.
Достоинства клиентских технологий очевидны:

данные не отправляются на сервер, что значительно ускоряет работу веб-
приложений;
8

имеется возможность динамически изменять стиль или содержание веб-страниц
в зависимости от характеристик браузера клиента;

можно осуществлять автоматическое обновление страниц через определенные
промежутки времени;

возможность реагирования на разные события (движение курсора мыши,
нажатие кнопок мыши);

можно производить всевозможные математические расчеты.
Главный недостаток клиентских языков – это то, что обработка скрипта зависит от
браузера пользователя, а пользователь имеет возможность настроить свой браузер так,
чтобы он вообще игнорировал скрипты. К тому же, если браузер устарел, то существует
вероятность того, что он будет конфликтовать с тем или иным языком или его версией. Код
клиентского скрипта общедоступен, его может посмотреть каждый, кто откроет страницу
со скриптом. К языкам веб-программирования, предназначенным для создания клиентских
скриптов, относят Javascript, Java Applet, VBScript, Microsoft ActiveX, ActionScript,
использующийся в технологии Flash и SilverLight. Рассмотрим наиболее распространенные
из них.
Javascript
JavaScript предназначен для написания сценариев активных HTML-страниц.
JavaScript не предназначен для создания автономных приложений. Программа на JavaScript
встраивается непосредственно в исходный текст HTML-документа и интерпретируется
брaузером по мере загрузки документа. С помощью JavaScript можно динамически
изменять текст загружаемого HTML-документа и реагировать на события, связанные с
действиями посетителя или изменениями состояния документа или окна.
Важная особенность JavaScript - объектная ориентированность. Программисту
доступны многочисленные объекты, такие как: документы, гиперссылки, формы, фреймы и
т.д. Объекты характеризуются описательной информацией – свойствами и возможными
действиями - методами.
Java Applet
Практически все современные браузеры способны отображать и выполнять Javaапплеты — специальные Java-приложения, которые пользователь получает в составе Webстраницы. Эти приложения нередко включаются в состав Web-страниц с целью добавления
функциональности, которую сложно или невозможно реализовать с помощью скриптовых
языков. Апплеты могут выполняться на всех платформах, для которых доступна
виртуальная Java-машина.
Апплеты обычно создаются в соответствии с правилами, оговаривающими период
их жизни и способы взаимодействия со своим окружением. Чаще всего эти способы весьма
9
ограниченны (например, такие операции, как считывание и запись файлов, по умолчанию
для апплетов запрещены; если же подобные операции необходимы, разрешения на их
выполнение для конкретных апплетов и конкретных файлов описываются на клиентском
компьютере; сетевой доступ из апплета возможен только к тому компьютеру, с которого он
был загружен; запуск других приложений на компьютере пользователя из апплетов
невозможен). Однако апплет способен считывать значения параметров (например, цвета,
шрифтов, файлов с графическими изображениями, используемыми при выполнении
апплета) с содержащей его Web-страницы и в соответствии с этими параметрами изменять
свое поведение. Кроме того, параметры апплета можно менять динамически из кода на
скриптовых языках, содержащихся в составе той же страницы.
Поскольку апплеты реализуют выполнение кода на компьютере клиента, они в
определенной степени являются потенциально опасным содержимым. Именно поэтому все
современные браузеры обладают доступными пользователю средствами ограничения
возможностей выполнения апплетов.
Microsoft ActiveX
Некоторые из современных браузеров (в частности, Microsoft Internet Explorer) могут
служить контейнерами для элементов управления ActiveX — специальных COM-серверов,
выполняющихся в адресном пространстве браузера и получаемых в составе Web-страницы.
С помощью элементов управления ActiveX, как и посредством Java-апплетов, можно
реализовать любую функциональность, в том числе и неблагоприятную для компьютера
пользователя, при этом, в отличие от Java-апплетов при выполнении элементов управления
ActiveX в общем случае нет никаких ограничений на доступ к файлам и иным ресурсам
операционной системы и сети, а код, содержащийся в них, выполняется от имени,
загрузившего их пользователя. Как и Java-апплеты, элементы управления ActiveX могут
считывать свои свойства с содержащей их страницы; кроме того, свойства элемента
управления ActiveX можно менять динамически из кода на скриптовых языках,
содержащихся в составе той же страницы; в том же коде можно обрабатывать события,
возникающие в таких элементах управления.
При работе с элементами управления ActiveX и Java-апплетами абсолютно
бесполезно полагаться на антивирусное программное обеспечение: признаков, характерных
для вирусов (таких как способность внедряться внутрь исполняемых файлов и документов),
подобные приложения, как правило, не содержат. Естественно, Microsoft Internet Explorer
обладает средствами ограничения возможностей выполнения элементов управления
ActiveX, в том числе управления ими из кода на скриптовых языках. Однако для контроля
безопасности их выполнения имеется еще одно средство, называемое электронной
цифровой подписью. Цифровая подпись помещается внутрь элемента управления ActiveX,
10
для чего требуется наличие соответствующего электронного сертификата. Электронная
подпись, помимо сведений о фирме-производителе, содержит и другую полезную
информацию. Так, например, если файл с элементом управления ActiveX после добавления
электронной подписи был изменен, то об этом будет немедленно сообщено перед запуском
такого элемента управления. Естественно, наличие электронного сертификата не
гарантирует отсутствия потенциально опасного содержимого, но, по крайней мере,
позволяет клиенту установить его источник.
Flash
Приложения
Macromedia
Flash
являются
сегодня
наиболее
популярным
расширением функциональности Web-браузеров — с их помощью многие Web-дизайнеры
придают своим сайтам интерактивность и оригинальность.
Модель безопасности приложений Flash основана на том, что Macromedia Flash
Player, как и виртуальная Java-машина, выполняет приложения в ограниченном адресном
пространстве, при этом выполняемые приложения не имеют доступа к файловой системе
(кроме одного конкретного каталога, используемого Macromedia Flash Player для
служебных целей) и другим ресурсам компьютера пользователя; исключение делается для
микрофонов и видеокамер, однако пользователь должен дать разрешение на передачу
данных, полученных с этих устройств. Доступ к сетевым ресурсам ограничивается
доменом, с которого было получено приложение. Приложения Flash также могут
управляться с помощью кода JavaScript, присутствующего на той же странице. Сам
Macromedia Flash Player для Microsoft Internet Explorer является элементом управления
ActiveX и использует возможности элементов управления ActiveX для доступа к свойствам
приложений Flash из скриптовых языков.
1.1.2 Серверные технологии
С применением клиентских технологий страница может иметь по-настоящему
сложную структуру, но, тем не менее, она так и не станет динамичной в истинном смысле
этого слова, то есть она не сможет изменять свое содержимое в зависимости от действий
пользователя. Дело в том, что для того чтобы сгенерировать информацию, которую
запросил пользователь, необходимо сперва эту информацию откуда-нибудь извлечь
(например из базы данных), а следовательно необходимы полномочия для чтения и,
возможно, записи файлов на сервере. Те средства, которые выполняются на стороне
клиента, не обладают такими возможностями, следовательно, необходимы расширения,
которые будут выполняться на стороне сервера, предоставляя эти возможности.
Такой технологий создания веб-приложений, выполняющихся на серверах, является
CGI (Common Gateway Interface - «общий интерфейс шлюза») - особая платформа, которая
определяет именно интерфейс между сервером и написанной программой, где сервер
11
выступает в роли посредника между браузером и CGI-программой. Она позволяет
выполнять серверные приложения, обращение к которым происходит посредством
указания их имени (а иногда — и параметров) в URL. Входной информацией для таких
приложений служит содержимое HTTP-заголовка либо тело запроса, в зависимости от
применяемого протокола. CGI-приложения — это приложения, которые генерируют
HTML-код, передаваемый браузеру. Подобные приложения могут представлять собой код
на скриптовых языках, интерпретируемый на сервере, либо исполняемый файл для
операционной системы, под управлением которой функционирует веб-сервер, который
можно создать с помощью практически любого средства разработки, генерирующего
консольные приложения, работающие со стандартными устройствами ввода/вывода.
JAVA
JAVA - объектно-ориентированный язык программирования. Программы на Java
транслируются в байт-код, выполняемый виртуальной java-машиной (JVM) — программой,
обрабатывающей
байтовый
код
и
передающей
инструкции
оборудованию
как
интерпретатор, но с тем отличием, что байтовый код, в отличие от текста, обрабатывается
значительно быстрее. Достоинство подобного способа выполнения программ — в полной
независимости байт-кода от ОС и оборудования, что позволяет выполнять Java-приложения
на любом устройстве, которое поддерживает виртуальную машину. Другой важной
особенностью технологии Java является гибкая система безопасности благодаря тому, что
исполнение программы полностью контролируется виртуальной машиной. Любые
операции, которые превышают установленные полномочия программы (например, попытка
несанкционированного доступа к данным или соединения с другим компьютером),
вызывают немедленное прерывание. Основные возможности:
 автоматическое управление памятью;
 расширенные возможности обработки исключительных ситуаций;
 богатый набор средств фильтрации ввода/вывода;
 наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;
 встроенные в язык средства создания многопоточных приложений;
 унифицированный доступ к базам данных на основе JDBC и SQLJ.
Perl
Perl - это интерпретируемый язык, оптимизированный для просмотра содержимого
текстовых файлов, выделения из них информации и генерирования отчетов на основе этой
информации, а также язык для выполнения многих задач системного администрирования
UNIX. Он обладает большим набором преимуществ как язык сценариев общего назначения,
которые проявляются через его характерные черты и возможности.
12
Основной отличительной особенностью языка Perl является его интерпретируемость.
Perl призван решать задачи администрирования и обработки текстовых файлов с помощью
небольших
по
программирования
размерам
которых
сценариев,
могло
бы
решающих
нетрадиционные
потребоваться
взаимодействие
задачи,
для
нескольких
специализированных языков и потребовалось бы намного больше времени, чем
использование одного интерпретируемого: ведь цикл разработки программ на таком языке
короче и проще, чем на компилируемом.
Интерпретатор perl отличается от традиционных интерпретаторов тем, что
программа транслируется в промежуточный байт-код, и только после этого выполняется. В
традиционных интерпретаторах каждый вводимый оператор интерпретируется и сразу же
выполняется, что может приводить к синтаксическим ошибкам во время выполнения. Perlпрограмма свободна от этого "недостатка", так как все синтаксические ошибки
обнаруживаются во время трансляции в байт-код.
Так же отличительной особенностью использования Perl является его доступность
для большинства платформ: практически все варианты UNIX, Windows NT, Macintosh. Для
всех перечисленных платформ разработаны и свободно распространяются интерпретаторы
Perl вместе с документацией по их установке и работе.
Способность Perl работать с сокетами TCP/IP сделала его популярным для
реализации информационных систем взаимодействия с сетевыми серверами любых типов,
использующих сокеты в качестве механизма обмена информацией. Именно эта
возможность в сочетании с использованием Perl для создания CGI-сценариев послужила
широкому распространению языка на многочисленных платформах.
Для многих программистов одним из достоинств Perl является наличие большого
числа готовых модулей, которые позволяют использовать Perl практически в любой
области. Множество модулей включено в базовую поставку, но еще большее количество
можно найти воспользовавшись Comprehensive Perl Archive Network (Всеобъемлющую
Сеть Архивов Perl), называемую также CPAN.
PHP
PHP (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста», англ.
Personal Home Page Tools[5] (устар.) — «Инструменты для создания персональных вебстраниц») - язык программирования с открытым кодом, использующий интерпретатор на
стороне сервера, кросс-платформенный язык HTML скриптов, особенно подходящий для
веб-разработок, так как легко встраивается в HTML страницы.
Благодаря своей простоте, скорости исполнения и широкой функциональности
является одним из популярнейших скриптовых языков в области программирования Webприложений. Также популярность определяется наличием большого набора как встроенных
13
средств разработки Web-приложений, так и подключаемых модулей, «расширений»: для
работы с базами данных, динамической графикой, криптографическими библиотеками и др.
Основные из них:

Автоматическое извлечение POST и GET-параметров, а также переменных
окружения Web-сервера в предопределенные массивы;

Файловые функции успешно обрабатывают как локальные, так и удаленные
файлы;

Автоматическая отправка HTTP-заголовков;

Работа с cookies и сессиями;

Обработка файлов, загружаемых на сервер;

Работа с HTTP заголовками и HTTP авторизацией;

Работа с XForms;

Работа с удаленными файлами и сокетами.
ASP.NET
ASP.NET– самая «молодая» из всех рассмотренных технологий, первая версия
появилась в 2001 году.
Основная особенность этой технологии – наличие общеязыковой исполняющей
среды (CLR), которую упрощенно можно рассматривать как прослойку между интерфейсом
программы и системными вызовами. Код, предназначенный для CLR, называется
управляемым кодом и представляет собой команды псевдомашинного языка (CIL). Эти
команды компилируются в машинный код процессора по запросу (just-in-time) с помощью
специального компилятора (JIT-компилятор). Как правило, компиляция любого метода
производится один раз – при его первом вызове, затем результат компиляции кэшируется
системой и при следующем обращении вызывается из кэша. Очевидно, что подобный
подход снижает производительность, но так как каждый метод компилируется не более
одного раза, а также в связи с тем, что JIT-компилятор способен оптимизировать код для
того процессора, на котором он сейчас запущен, теоретически данный подход способен
обеспечить производительность выше, чем обычный машинный код. Также JIT-компилятор
проводит верификацию кода, что позволяет исключить потенциально опасные ошибки
(нарушение защиты памяти, ошибки инициализации указателей и т.д.), а также усложняет
написание вредоносных программ, хотя и не исключает этого полностью. Еще одно
преимущество CLR – отсутствие утечек памяти в приложениях, так как все выделенные
ресурсы освобождаются сборщиком мусора. Алгоритм выделения памяти в CLR
значительно быстрее, чем аналогичные функции выделения памяти на этапе выполнения в
языке C [1].
14
Все описанные возможности реализованы библиотеками пакета .NET Framework.
Это позволило значительно облегчить работу программистов за счет упрощения доступа к
системным вызовам и наличия большого количества реализованных методов и классов
(криптография, работа с графикой и т.д.).
К основным новшествам ASP.NET можно отнести следующие [1]:
 страницы Web-приложений ASP.NET могут быть написаны на любом языке,
входящем в состав Visual Studio (на сегодняшний день это: Visual Basic, Visual C++, Visual
C# и Visual J#);
 возможность оформления приложения в виде Web-сервиса, что означает
предварительную компиляцию приложения и использование его в дальнейшем в виде
библиотеки DLL, то есть Web-сервис позволяет ускорить выполнение приложения;
 возможность гибкого управления процессом исполнения Web-приложения, легко
указать выполнение компонента приложения на стороне сервера или клиента;
 тесная интеграция Web-приложения с системой управления Windows-доменом –
так называемая встроенная Windows-аутентификация;
 простота организации Web-сервера – используется Web-сервер Internet Information
Server (IIS), который входит в поставку любых ОС Windows, начиная с версии 2000;
 возможность работы с наиболее распространенными СУБД – Microsoft SQL Server,
Access, Oracle;
 поддержка работы с форматом разметки XML;
 компиляторы всех возможных типов проектов Visual Studio находятся в пакете
.NET Framework, то есть они доступны бесплатно сразу после установки пакета, а в .NET
Framework SDK включен ассемблер CIL, так что можно писать программы прямо на CIL.
Традиционным недостатком Visual Studio считается достаточно высокая цена.
Конечно, можно использовать текстовый редактор для ввода текста Web-приложения и
встроенный консольный компилятор пакета .NET Framework, но в этом случае теряются
преимущества Visual Studio как комплексной интегрированной среды разработки.
Следовательно, данный путь можно рассматривать только на начальном этапе разработки,
когда Web-проект еще довольно небольшой по объему, затем переход к среде разработки
неизбежен. Однако, начиная с Visual Studio 2005, наряду с основным пакетом корпорация
стала выпускать новый продукт – Visual Studio Express. Этот продукт аналогичен
полноценной версии Visual Studio, за исключением отсутствия в нем некоторых
дополнительных
компонентов
[7].
Это
пакеты
для
отладки
и
тестирования
производительности, пакеты для совместной работы группы программистов над одним
проектом и т.д. Иначе говоря, эти пакеты носят скорее сервисные функции и в большинстве
15
случаев могут быть заменены аналогичными по функциональности пакетами других
производителей (зачастую даже бесплатными). В пакет входят Visual Basic Express, Visual
C# Express, Visual C++ Express, Visual J# Express и SQL Server Express. SQL Server Express –
это
несколько
ограниченная
версия
полноценного
SQL
Server
2005,
которая
предоставляется бесплатно на неограниченный период, кроме того SQL Server Express
призван заменить другой устаревший продукт корпорации – Microsoft Desktop Engine
(MSDE). Ограничения версии Express по сравнению с полноценной версией SQL Server на
первоначальном этапе развития проекта не представляются существенными [8]:
 максимальный размер базы данных 4 Гбайт;
 поддерживается работа не более чем на 2-х процессорах сервера;
 размер оперативной памяти сервера не более 2 Гбайт;
 отсутствует удаленное администрирование;
 не поддерживается автоматическое зеркалирование баз данных.
SQL Server Express позиционируется корпорацией как наиболее подходящее
решение на начальном этапе развития любого проекта, использующего СУБД, поэтому он
также входит в состав профессиональной версии Visual Studio 2005. Процесс внедрения
лицензионной версии SQL Server не представляет каких-либо сложностей, т.к. все базы
данных SQL Server Express напрямую поддерживаются SQL Server 2005.
Рассмотрим некоторые возможности технологии ASP.NET [11], использование
которых значительно упрощает разработку и последующее сопровождение:
 четко выраженная трехзвенная архитектура разрабатываемых приложений;
 тесная интеграция с СУБД;
 широкое использование Web-сервисов;
 модульная архитектура;
 аутентификация и механизм доступа пользователей на основе ролей;
 применение объектно-ориентированных методов программирования, в основном
инкапсуляции и наследования;
 применение XML-файла для хранения настроек.
Трехзвенная архитектура – на сегодняшний день это традиционный способ создания
распределенных Web-приложений. Согласно данному принципу, при проектировании и
реализации Web-приложения выделяют следующие три логических звена (рис.1.1) [11]:
 уровень доступа к базам данных (DAL);
 уровень бизнес-логики (BLL);
 уровень представления.
16
Для четкого разделения любого Web-приложения на три перечисленных звена
используются хранимые процедуры в базе данных, интерфейс запросов, предоставляемый
СУБД, а также представление отдельных элементов приложения в виде Web-сервисов.
Уровень представления
Уровень бизнес-логики
Web-приложение
Web-сервис
Уровень доступа к данным
СУБД
SQL Server
Рисунок 1.1. Трехзвенная архитектура Web-приложений ASP.NET.
Выделение уровня DAL и использование хранимых процедур базы данных
позволяет упростить последующие внесения изменений в схему базы данных, так как они
будут незаметны для компонентов доступа к данным. Хранимые процедуры также
способствуют некоторому ускорению работы Web-приложения, так как при первом
обращении они загружаются в память, и при дальнейших вызовах происходит обращение к
уже загруженным в память процедурам [8].
Интеграция
с
СУБД
позволяет
реализовать
Web-портал
с
динамически
изменяющимся содержанием, благодаря чему новая информация выводится на Webстраницу портала без изменения её исходного кода, для этого необходимо просто добавить
в базу данных новую запись или модифицировать старую. База данных также отлично
подходит для хранения учетные записей всех пользователей портала, настройки внешнего
вида портала для каждого пользователя и т.д.
Web-сервис
–
это
приложение,
исполняющееся
на
стороне
сервера
и
предоставляющее клиентам Web-методы [1]. То есть сам Web-сервис не поддерживает
какого-либо пользовательского интерфейса, а лишь реализует заданный перечень
вызываемых методов. Обычно с помощью Web-сервисов реализуется бизнес-логика Webприложения, которая должна быть скрыта от пользователя (аутентификация пользователей,
системы Интернет-магазинов и т.д.). Также с помощью Web-сервисов зачастую реализуется
доступ к хранимым процедурам базы данных.
Модульная архитектура Web-приложения позволяет легко и быстро расширять
функциональность проекта путем подключения новых модулей без внесения изменений в
старые модули и бизнес-логику проекта. Модульная архитектура удобна и при отладке
Web-приложения, так как позволяет легко локализовать источник возникшего сбоя путем
последовательного отключения модулей. Наконец, при использовании модульной
17
архитектуры Web-портала легко реализовать одно из требований задания – настройку
пользователем внешнего вида каждой страницы по своему усмотрению путем изменения
порядка расположения модулей.
Использование XML-файла – в ASP.NET наиболее удобный способ хранения
настроек Web-сайта. Это связано с тем, что обращение к XML-файлу не требует таких
серьезных системных ресурсов, как доступ к базе данных, а информация, содержащаяся в
XML-файле, имеет четкую структуру, и при ее считывании нет необходимости в
использовании
дополнительной
обработки.
Библиотеки
пакета
.NET
Framework
предоставляют удобные методы для доступа к информации XML-файла, что делает данный
язык идеальным средством хранения структурированной информации, которой являются
параметры настроек Web-сайта.
1.2 Сравнительный анализ современных программных продуктов для
организации IP-телефонии.
Рынок корпоративной IP-телефонии – один из наиболее перспективных сегментов
телекоммуникационной отрасли. Объем рынка постоянно растет, появляются новые
поставщики, появляются новые решения. К числу наиболее известных игроков рынка
корпоративной IP-телефонии можно отнести компании Cisco, Avaya, Alcatel, Nortel,
Siemens, 3Com и Digium. Тем не менее, основная борьба идет между двумя первыми
компаниями. Доли рынка, занимаемые Cisco и Avaya, по разным оценкам аналитиков
достаточно сильно разнятся: в определенных регионах лидирует Avaya, в других Cisco.
Столь жесткая конкуренция стимулирует развитие новых технологий и решений.
Стоит отметить, что компании предлагают принципиально различные подходы к
организации корпоративной IP-сети. Именно эта разница объясняет различие в лидерстве
участников рынка IP-телефонии. Так, одни компании придерживается революционного
подхода к реализации своих решений – быстрый переход от традиционных аналоговых
сетей к IP-сетям. Другие предлагают постепенный способ внедрения
– построение
конвергентных сетей с использованием существующей телефонной сети и наращивание
дополнительного функционала, который дает технология VoIP, за счет применения
аппаратных и программных решений. Современное состояние рынка корпоративной IPтелефонии свидетельствует о жизнеспособности обоих подходов.
Компании, принявшей решение о переходе на IP-телефонию, предстоит сделать
непростой выбор между поставщиками решений. Достоинства того или иного решения и
выбор варианта его реализации в значительной степени зависят от класса задачи, требуемой
функциональности, числа сотрудников и характера деятельности компании, существующей
инфраструктуры, и бюджета.
18
Рассмотрим наиболее распространенные решения основных производителей IPтелефонии.
Cisco
Принципиальное отличие решений Cisco – использование «чистого» IP. Компания
предлагает кардинальную смену существующих телефонных линий и инфраструктурного
оборудования на аналогичное, необходимое для построения корпоративной IP-сети. В
качестве базы, Cisco использует свою собственную разработку – архитектуру AVVID
(Architecture for Voice, Video and Integrated Data), основное достоинство которой возможность построения своих собственных приложений с целью реализации необходимых
и уникальных функций. По оценкам экспертов, из всего широкого функционала,
предлагаемого технологией VoIP, на практике используется от трех до десяти функций.
Именно в этом сегменте решения Cisco оказываются уникальными – при ограниченном
базовом наборе возможностей, всегда можно построить свое собственное решение,
обладающее уникальными функциями с сохранением способности интеграции в общую
сеть. Именно это достоинство компания считает одним из основных конкурентных
преимуществ своих решений.
Основу
архитектуры
AVVID
(рис.
1.2)
составляет
собственно
сетевая
инфраструктура, полностью реализованная на IP и аппаратные решения. На нее
«навешиваются» клиентские места (обычно стандартные IP-телефоны). Управление всей
сетью осуществляется с помощью специальных серверных приложений, основное из
которых – CallManager.
Один сервер Cisco CallManager может поддерживать множество IP-телефонов,
количество которых зависит от используемой серверной платформы. Кроме того, все
серверы Cisco могут быть объединены в кластер, что, в свою очередь, повысит
отказоустойчивость системы и даст возможность дальнейшего масштабирования сети.
Рис. 1.2. Основные компоненты архитектуры AVVID
19
Несмотря на лоббирование компанией Cisco перехода к «чистой» IP-телефонии,
новое решение также можно состыковать с уже существующей учрежденческой АТС
(УАТС) и подключить к телефонной сети общего пользования. Для реализации этого
используются мультисервисные маршрутизаторы или голосовые шлюзы Сisсо.
Avaya
Компания
Avaya,
отделившаяся
несколько
лет
назад
от
гиганта
телекоммуникационного рынка Lucent Technologies (наследника традиций Bell Labs,
создателем которых являлся Александр Грэм Белл), является одним из наиболее ярких
приверженцев
построения
корпоративной
IP-телефонии
на
основе
развертывания
конвергентных сетей. В отличие от Cisco, Avaya не делает ставку на использование IP, а
выбор конкретного транспортного протокола зависит от требований и существующих
условий заказчика. Avaya сосредотачивает свое внимание на внутренней инфраструктуре,
где и работает телефония, предоставляя заказчику возможность сохранить инвестиции в
существующее оборудование, наследуя и масштабируя существующие системы связи.
Архитектурное
решение
компании
–
Avaya
Communication
Architecture
подразумевает модульное построение системы с параметрами, необходимыми заказчику.
Кроме pure-IP модели, в портфеле Avaya есть традиционные (IP-enabled) и конвергентные
модели серверов. Построенная с их использованием коммуникационная система может
стыковаться как с ТфОП сетями, так и с IP-сетями (выделенными или публичными) с
использованием стандартных технологий и интерфейсов.
Базой для построения подобной мультисервисной сети является программное
обеспечение Avaya Communication Manager, являющееся наследником ПО Definity ECS
(Enterprise Communications Server). Сервер выступает в качестве центрального процессора
единой платформы для передачи голоса, данных и видео, на базе которой реализована
поддержка до 44 000 портов. Унифицированное управление системой осуществляется с
помощью сервера на базе RISC-процессора (либо процессора Intel в новых моделях
серверов). Повышение надёжности системы осуществляется за счёт резервирования
центрального сервера и каналов связи (служебных и голосовых), а также за счёт установки
локальных резервных процессоров в важных локациях. Что касается пользовательского
функционала, то кроме набора базовых функций телефонии, существуют стандартные
интерфейсы для создания новых приложений и функций.
Для небольших предприятий (количество поддерживаемых абонентов в одной точке
- от 2 до 360) существует специальное решение - Avaya IP Office, которое, по сути,
объединяет в себе полнофункциональную телефонную станцию (обычная АТС и IP-УАТС),
средства доступа к интернету и поддержки VPN, платформы поддержки приложений и
необходимые аппаратные средства. В настоящее время семейство IP Office включает в себя
20
помимо модели IP Office серии 500, также Small Office Edition (предназначеный для
поддержки небольших узлов телефонии и передачи данных: от 2 до 28 пользователей).
Поддержка стандартов Q.SIG и H.323 позволяет применять IP Office совместно с серверами
Definity ECS, шлюзами G600 и продуктами других производителей.
Digium
Компания Digium является разработчиком первой в отрасли телефонной платформы
Asterisk – программной IP-АТС (IP-PBX) с открытым исходным кодом, распространяемой
по лицензии GNU General Public License (GPL) и предназначенной для создания решений
компьютерной телефонии. Предлагая неслыханную в мире коммуникаций гибкость,
Asterisk позволяет разработчикам и интеграторам создавать продвинутые решения в
области VoIP-телефонии бесплатно.
Для
подключения
сервера
IP-телефонии
IP-PBX
Asterisk
к
стандартным
интерфейсам телефонии компанией Digium были разработаны интерфейсные платы,
названные Wildcards, обеспечивающие преобразование аналоговых и цифровых потоков
голосовых данных, а также управление телефонной сигнализацией. В сочетании с этими
платами Digium, Asterisk предлагает стратегический, высоко рентабельный подход к
транспортировке голоса и данных по IP, TDM, коммутируемым и Ethernet архитектурам.
Возможности Digium включают VoIP, конференц-связь, голосовую почту, функции УАТС,
интерактивный автоответчик, медиасерверы и шлюзы, серверы и шлюзы приложений.
Digium была основана в 1999 году и начинала свою деятельность, как венчурная
компания. Основатель и исполнительный директор компании Марк Спенсер (Mark Spencer)
создал небольшую фирму, специализирующуюся на технической поддержке Linux–систем,
и написал прототип Asterisk для экономии средств на телефонных переговорах.
Впоследствии программа обрела огромную популярность, а сообщество Asterisk стало
наиболее влиятельным в области VoIP.
Nortel Networks
Nortel Networks Corporation работает со своими партнерами над задачами разработки
и построения телекоммуникационных и IP - оптимизированных сетей. Опираясь на
стратегию Unified Networks, компания Nortel Networks предоставляет своим партнерам и
заказчикам уникальную возможность поставки интегрированного сетевого решения,
объединяющего технологии передачи телефонии и данных. Данная стратегия рассчитана на
самый широкий спектр организаций - частные и государственные предприятия, Интернет
сервис-провайдеры, операторы связи национального, регионального, всемирного масштаба,
компании кабельного телевидения и другие организации.
Разработанные
Nortel Networks унифицированные коммуникационные решения,
позволяют пользоваться преимуществами современных технологий связи, одновременно
21
защищая инвестиции в ранее приобретенные телефонные системы Nortel. Платформа
Communication Server 1000 – флагманская система IP-телефонии от компании Nortel –
помогает
предприятиям-заказчикам
реализовать
потенциал
унифицированных
коммуникаций путем получения максимальной отдачи от каждого сеанса связи.
Решение Nortel Communication Server 1000 включает полный набор механизмов,
обеспечивающих надежность и отказоустойчивость сети и гарантирующих устойчивость и
безопасность связи. Поддерживая широчайший спектр критически важных функций
телефонии и мультимедийного обмена, решение Nortel Communication Server 1000 делает
их доступными для всех пользователей, где бы они ни находились.
Как видно из представленной таблицы 1.1, все современные продукты для
организации IP-телефонии предоставляют одинаковый набор минимально необходимых
функций
для
организации
корпоративной
телефонной
связи.
Все
продукты
зарекомендовали себя как надежные высокопроизводительные системы. Таким образом, в
силу ограниченного бюджета, предпочтительнее выделяется на фоне остальных бесплатно
распространяемый продукт Asterisk, затраты на внедрение которого будут складываться
только из стоимости аппаратного обеспечения сервера. Также немаловажным фактором,
определившим выбор, является простота интеграции его с другими информационными
системами предприятия и возможность расширения функционала системы путем написания
необходимых программных модулей.
Таким образом, в качестве корпоративного сервера IP-телефонии, было решено
использовать Asterisk, работа которого будет организована на сервере с процессором класса
Xeon, 4Гб оперативной памяти, 6 жесткими дисками, сконфигурированными в Raidмассивы, работающем под управлением операционной системы FreeBSD 8.0.
Единственным недостатком использования этой системы является отсутствие
простой и интуитивно понятной системы управления. Учитывая это, было принято решение
о создании Web-приложения, обеспечивающего возможность создания учетных записей
пользователей телефонии, а также доступа к информации по статистике телефонных
вызовов с возможностью прослушивания записи необходимого разговора.
22
Таблица 1.1. Основные сравнительные характеристики серверов IP-телефонии.
Производитель
Продукт
Реализация
Операционная
система
Аппаратные
требования
Поддерживаемые
протоколы
Интерактивное
голосовое меню
(IRV)
Digium
Nortel Networks
Asterisk
Communications
Server 1000
Програмная
Програмная
Linux, BSD,
Mac OS X,
VXWorks
Solaris
Любой сервер,
совместимый с
Проприетарная
*NIX
системой
SIP, H.323,
SIP, H232
IAX
Cisco
Avaya IP
Unified Call
Manager/Media
Convergence Server IP Office
7800 Series
ПрограмноПрограмная
аппаратная
Windows/Linux
IP Office
release 4
Media
Convergence
Servers
Avaya Office
IP 500
SIP, H232
SIP, H232
+
+
+
+
+
+
+
Webинтерфейс
Web-интерфейс и
Windows
приложения
Набор утилит
Набор
приложений
Количество линий
Зависит от
используемого
сервера
До 16000
До 7500
телефонов на
сервер, и до
30000 на кластер
До 270
Модульность/
наращивание
С помощью
плат
расширения
С помощью
дополнительных
модулей
С помощью
карт/дополнитель
ных модулей
С помощью
дополнительн
ых модулей
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Простая
Сложная
Сложная
Сложная
Начиная от
1000$
Начиная от 6000$
Начиная от
20000$
Начиная
17000$
Интеграция с
Outlook
Управление и
администрировани
е
Система контроля
и присутствия
Голосовая почта
Запись разговоров
Статистика
звонков
Маршрутизация
звонков,
внутренний
номерной план
Телеконференции
Интеграция с
другими
системами
Стоимость
+
+
23
2. Разработка системы корпоративной IP-телефонии
2.1. Разработка структуры и архитектуры системы
Корпоративный портал, как и многие другие Web-приложения, строится на основе
многоуровневневой архитектуры клиент-сервер – это разновидность архитектуры клиентсервер, в которой функция обработки данных вынесена на один или несколько отдельных
серверов. Это позволяет разделить функции хранения, обработки и представления данных
для более эффективного использования возможностей серверов и клиентов.
Среди многоуровневой архитектуры клиент-сервер наиболее распространена
трехуровневая архитектура (трехзвенная архитектура, three-tier), предполагающая наличие
следующих компонентов: клиентское приложение, в данном случае выступает Webобозреватель пользователя, обращающийся к Web-приложению, размещающегося на
сервере приложений, в роли которого в рамках данного дипломного проекта выступает
сервер IIS , который в свою очередь подключен к серверу базы данных.
В простейшей конфигурации физически сервер приложений может быть совмещен с
сервером базы данных на одном компьютере, к которому по сети подключается один или
несколько клиентов. Но в "правильной" (с точки зрения безопасности, надежности и
масштабирования) конфигурации сервер базы данных находится на выделенном
компьютере (или кластере), к которому по сети подключены один или несколько серверов
приложений, к которым, в свою очередь, по сети подключаются клиенты.
Плюсами данной архитектуры являются:
 клиентское ПО не нуждается в администрировании;
 масштабируемость;
 конфигурируемость – изолированность уровней друг от друга позволяет быстро и
простыми средствами переконфигурировать систему при возникновении сбоев или при
плановом обслуживании на одном из уровней;
 высокая безопасность;
 высокая надежность;
 низкие требования к скорости канала (сети) между терминалами и сервером
приложений;
 низкие требования к производительности и техническим характеристикам ПО
клиентов, как следствие снижение их стоимости.
Минусы:
 растет сложность серверной части и, как следствие, затраты на администрирование
и обслуживание;
 более высокая сложность создания приложений;
24
 сложнее в разворачивании и администрировании;
 высокие требования к производительности серверов приложений и сервера базы
данных, а, значит, и высокая стоимость серверного оборудования;
 высокие требования к скорости канала (сети) между сервером базы данных и
серверами приложений.
Разрабатываемое Web-приложение строится на основе базы данных, в которой
должна храниться информация о входящих и исходящих
телефонных вызовах, SIP-
параметрах сервера Asterisk, а также регистрационная информация пользователей IPтелефонии. На настоящий момент работа информационной системы предприятия основана
на использовании программных продуктов фирмы 1С, работающих в клиент-серверном
режиме, основанном на использовании СУБД Microsoft SQL Server 2005. Таким образом,
для хранения информации было решено использовать существующий сервер баз данных,
что в дальнейшем облегчит процесс интеграции систем в единое целое (рис 2.1).
Поставщики услуг
IP-телефонии
Сервер Asterisk
Файл-сервер Samba
SIP
SIP
SMB
Internet
Information Server
Шлюз
Microsoft SQL
Server 2005
HTTPS
Internet
LDAP
Интернет пользователи
Пользователи
корпоративной сети
Сервер
1С:Предприятие
Сервер контроллера
домена
Active Directory
Рис. 2.1. Архитектура системы
Для разграничения доступа к Web-приложению необходимо использовать учетные
записи, хранящиеся на сервере Active Directory предприятия. В процессе обработки
запрошенной
страницы
сервер
приложений
для
аутентификации
и
авторизации
пользователей обращается к контроллеру домена по протоколу LDAP (Lightweight Directory
25
Access Protocol) – это стандартный протокол доступа к информации домена и на основе
прав доступа пользователя разрешает или запрещает доступ к запрашиваемому ресурсу. В
состав ASP.NET входят простые в использовании методы для работы с информацией,
получаемой с контроллера домена по этому протоколу, позволяющие более гибко
настраивать права доступа пользователей и динамически формировать содержимое Webстраниц в зависимости от полученной информации.
Поскольку необходимо предоставить доступ к разрабатываемому приложению
пользователям как внутри сети, так и из общедоступной сети – Internet, а передача данных
по протоколу HTTP производится в открытом виде, то для обмена конфиденциальной
информацией между приложением клиента и Web-сервером используется шифрование,
основанное на проколе SSL.
Основой корпоративной IP-АТС является программный комплекс
Asterisk,
работающий под управлением операционной системы FreeBSD. Он обеспечивает
обработку входящих и исходящих вызовов, регистрацию пользователей телефонии в
системе, осуществляет запись телефонных разговоров. В процессе работы Asterisk
использует такие данные, как: регистрационная информация пользователей и их SIPпараметры, список добавочных номеров сотрудников организации и т.д. Хранение этой
информации
организовано в базе данных
непосредственно взаимодействует.
предприятия,
с которой
Asterisk
Помимо обработки и маршрутизации телефонных
вызовов на сервере Asterisk организована запись совершенных разговоров. Для доступа к
файлам записей на сервере Asterisk установлен программный продукт SAMBA,
позволяющий предоставить в совместное использование Windows-клиентам (в рамках
данной дипломной работы серверу IIS) ресурсы Unix системы FreeBSD.
В соответствии с заданием на разработку Web-приложения, в рамках дипломной
работы, разработаны интерфейсы пользователя и администратора. Интерфейс приложения
формируется системой безопасности на основе ролей (групп Active Directory), к которым
относятся пользователи системы. Структурная схема разрабатываемого приложения
приведена на рис. 2.2.
Интерфейс администратора включает в свой состав:
 Средство управления SIP-аккаунтами, позволяющее создавать, удалять и изменять
регистрационные данные пользователей телефонии;
 Средство управления SIP-параметрами, позволяющее создавать дополнительные
необходимые SIP-параметры, удалять ненужные и назначать их пользователям;
 Редактор критериев качества обслуживания, позволяющий управлять критериями,
использующимися для оценки качества работы оператора.
Интерфейс пользователя состоит из:
26
 Средства формирования истории вызовов, позволяющее по необходимым
параметрам сформировать и отобразить историю совершенных вызовов, а также
предоставляет возможность прослушать или сохранить необходимую запись разговора,
оставить комментарий или оценить разговор по необходимому критерию;
 Средство формирования статистики, позволяющее в соответствии с заданными
параметрами сформировать статистическую информацию по совершенным вызовам в виде
графиков и диаграмм;
 Средство, позволяющее оценить качество обслуживания клиентов операторами
call-центра.
Интерфейс WEB-приложения
(формы, элементы управления)
Система безопасности и формирования
интерфейса на основе ролей
Интерфейс
администратора
Интерфейс
пользователя
Управление
Sip-аккаунтами
История
вызовов
Управление
Sip-параметрами
Статистика
Редактор
критериев
качества
обслуживания
Качество
обслуживания
Компоненты доступа к данным
Файлы записей
разговоров
База данных
Active Directory
.
Рисунок 2.2. Структура Web-приложения
2.2. Разработка информационного хранилища системы
2.2.1 Разработка базы данных системы
На этапе проектирования были выявлены объекты, которые должны использоваться
для представления предметной области. Для каждого вида объектов была зафиксирована
совокупность свойств, с помощью которых должны описываться объекты этого вида в БД и
виды отношений между этими объектами.
27
Инфологическое проектирование
Анализ требований к порталу позволил выделить ряд сущностей (т.е. таблиц) базы
данных, которые необходимы для реализации необходимых функций портала:
1. Данные пользователя – Код пользователя, Код организации и отдела, Имя
пользователя, Фамилия пользователя, Доменное имя пользователя;
2. SIP-параметры пользователя – Код SIP-параметра,
Код пользователя,
Добавочный номер SIP – пользователя, Пароль SIP-пользователя, Флаг удаления, Порт
назначения вызова, Служебное поле Asterisk, Значение system name при регистрации, IPадрес SIP-пользователя, Длительность регистрации, SIP-адрес, Регистрационное имя SIPпользователя, IP адрес или имя хоста клиента, Тип клиента, Контекст по умолчанию,
Блокирует отправку сообщений INVITE, Трансляция адресов, Номер порта приема SIP
вызовов, Разрешенные кодеки;
3. Телефонные вызовы - Код вызова, Дата и время вызова, CallerID, Вызывающий
абонент, Вызываемый абонент, Контекст направления, Используемый канал, Канал
направления, Последнее приложение, Дата последнего приложения, Время в секундах от
набора номера до отключения, Время в секундах от ответа до отключения, Итог вызова,
Флаг канала, Учетный код, Идентификатор канала, Пользовательское поле;
4. Комментарии – Код комментария, Код телефонного вызова, Код пользователя,
Комментарий, Дата и время комментария;
5. Справочник критериев качества обслуживания – Код критерия, Критерий,
Описание критерия;
6. Справочник оценок качества обслуживания – Код оценки, Оценка, Описание
7. Оценки критериев качества обслуживания – Код оценки критерия, Код критерия,
Код оценки;
8. Организация – Код организации, Название организации, Город, Адрес
организации, Комментарий, Вид деятельности организации;
9. Отдел – Код отдела, Название отдела, Описание отдела;
10. Организация и отделы– Код организации и отдела, Код организации, Код отдела;
11. Качество обслуживания – Код качества обслуживания, Код оценки критерия, Код
вызова, Код пользователя;
12. Полномочия пользователя – Код полномочий, Код пользователя, Код страницы,
Разрешение редактировать/Сохранять;
13. Справочник SIP-параметров – Код параметра, Параметр, Описание параметра
14. Справочник значений SIP-параметров – Код значения, Код параметра, Значение
параметра, Описание значения параметра.
Таблица 2.1. Связи между сущностями.
28
Сущность
Организация
Отдел
Организация и отделы
Справочник SIPпараметров
Справочник критериев
качества обслуживания
Справочник оценок
качества обслуживания
Данные пользователя
Телефонные вызовы
Оценки критериев
качества обслуживания
Данные пользователя
Данные пользователя
Телефонные вызовы
Данные пользователя
Сущность
Организация и отделы
Организация и отделы
Данные пользователя
Справочник значений SIPпараметров
Оценки критериев качества
обслуживания
Оценки критериев качества
обслуживания
Тип
связи
1:N
1:N
1:1
1:N
Поле
Код организации
Код отдела
Код организации и отдела
Код параметра
1:N
Код критерия
1:N
Код оценки
Качество обслуживания
Качество обслуживания
Качество обслуживания
1:N
1:N
1:N
Код пользователя
Код вызова
Код оценки критерия
SIP-параметры пользователя
Комментарии
Комментарии
Полномочия пользователя
1:N
1:N
1:N
1:N
Код пользователя
Код пользователя
Код вызова
Код пользователя
29
Рисунок 2.3. Инфологическая модель уровня ключей
30
Даталогическое проектирование
Таблица 2.2. Сущность “SIP-параметры пользователя” – ast_config.
Тип
ключа
PK
FK
Имя атрибута
ast_configID
userID
name
secret
deleted
port
lastms
regserver
ipaddr
regseconds
fullcontact
username
host
type
contex
canreinvite
nat
bindport
allow
Тип атрибута
Размер
атрибута
Краткое описание
INT
INT
VARCHAR
VARCHAR
BIT
INT
INT
VARCHAR
VARCHAR
INT
VARCHAR
VARCHAR
VARCHAR
VARCHAR
VARCHAR
VARCHAR
VARCHAR
VARCHAR
VARCHAR
4
4
50
50
1
4
4
20
50
4
128
50
50
50
50
50
50
50
50
Код SIP-параметра
Код пользователя
Добавочный номер пользователя
Пароль пользователя
Флаг удаления.
Порт назначения вызова
Служебное поле Asterisk
Значение system name при
регистрации
IP-адрес
SIP-пользователя
Длительность регистрации
SIP-адрес
Регистрационное имя SIPпользователя
IP
адрес или имя хоста клиента.
Тип клиента
Контекст по умолчанию.
Блокировка отправки сообщений
INVITE
Трансляция
адресов
Номер порта приема SIP
вызовов
Разрешенные кодеки.
Созданная таблица представляет собой структуру, в которой имя столбца - это
название параметра, а хранимые данные в этих столбцах – значения этих параметров. Такая
организация таблицы обусловлена используемыми Asterisk алгоритмами хранения и
обработки информации о SIP-пользователях. Для уменьшения вероятности ввода неверной
информации, а также ускорения процесса ввода используются создаваемые пользователем
значения параметров, хранящиеся в отдельной таблице (ParametrsValue).
Таблица 2.5. Сущность “Данные пользователя”. UsersInfo.
Тип
ключа
PK
FK
Имя атрибута
usersID
OrgDepID
lastname
firstname
ADUserName
Тип атрибута
Размер
атрибута
INT
INT
VARCHAR
VARCHAR
VARCHAR
4
4
50
50
50
Краткое описание
Код пользователя
Код организации и отдела
Имя пользователя
Фамилия пользователя
Доменное имя пользователя
31
Тип
ключа
PK
Таблица 2.3. Сущность “Справочник SIP-параметров” - ParametersName.
Размер
Имя атрибута
Тип атрибута
Краткое описание
атрибута
Код параметра
ParametrsNameID
INT
4
parametr
description
Тип
ключа
PK
Имя атрибута
DepartmensID
name
description
VARCHAR
VARCHAR
50
MAX
Тип атрибута
INT
VARCHAR
VARCHAR
Параметр
Описание параметра
Таблица 2.4. Сущность “Отдел” - Departmens.
Размер
Краткое описание
атрибута
4
100
MAX
Код отдела
Название отдела
Описание отдела
Таблица 2.6. Сущность “Организация” - Organizations.
Тип
ключа
PK
Тип атрибута
Размер
атрибута
OrganizationsID
name
сity
adress
INT
VARCHAR
VARCHAR
VARCHAR
4
100
20
100
Код организации
Название организации
Город
Адрес организации
comments
VARCHAR
MAX
Комментарии
activitycategory
VARCHAR
MAX
Вид деятельности организации
Имя атрибута
Краткое описание
Таблица 2.7. Сущность “Отдел” - Departmens.
Тип
ключа
PK
Имя атрибута
DepartmensID
name
description
Тип атрибута
Размер
атрибута
INT
VARCHAR
VARCHAR
4
100
MAX
Краткое описание
Код отдела
Название отдела
Описание отдела
Таблица 2.8. Сущность “Организация и отделы”- OrgDepRef.
Тип
ключа
PK
FK
FK
Имя атрибута
OrgDepID
OrganizationsID
DepartmensID
Тип атрибута
INT
INT
INT
Размер
атрибута
4
4
4
Краткое описание
Код организации и отдела
Код организации
Код отдела
Таблица 2.10. Сущность “Справочник критериев” - QualityCriterions.
Тип
ключа
PK
Тип атрибута
Размер
атрибута
QualityCriterionID
QualityCriterion
INT
VARCHAR
4
50
Код критерия
Критерий
Description
VARCHAR
MAX
Описание критерия
Имя атрибута
Краткое описание
32
Таблица 2.9. Сущность “Комментарии” - Comments.
Тип
ключа
PK
Тип атрибута
Размер
атрибута
CommentID
cdrID
INT
INT
4
4
Код комментария
Код телефонного вызова
userID
INT
4
Код пользователя
Comment
CommentDate
VARCHAR
DATETIME
MAX
4
Комментарий
Дата и время комментария
Имя атрибута
Краткое описание
Таблица 2.11. Сущность “Оценки вызова” - QualityValues.
Тип
ключа
Имя атрибута
Тип атрибута
Размер
атрибута
Краткое описание
PK
QualityValueID
INT
4
Код качества обслуживания
FK
FK
FK
QualCritValRefsID INT
cdrID
INT
userID
INT
4
4
4
Код оценки критерия
Код вызова
Код пользователя
Таблица 2.12. Сущность “Телефонные вызовы” - cdr.
Тип
ключа
PK
Имя атрибута
Размер
атрибута
Тип атрибута
cdrID
calldate
clid
src
dst
dcontext
channel
dstchannel
lastapp
lastdata
INT
DATETIME
VARCHAR
VARCHAR
VARCHAR
VARCHAR
VARCHAR
VARCHAR
VARCHAR
VARCHAR
4
duration
INT
4
billsec
INT
4
disposition
amaflags
accountcode
uniqueid
userfield
VARCHAR
VARCHAR
VARCHAR
VARCHAR
VARCHAR
50
50
20
150
MAX
80
50
50
80
80
80
80
80
Краткое описание
Код вызова
Дата и время вызова
CallerID
Вызывающий абонент
Вызываемый абонент
Контекст направления
Используемый канал
Канал направления
Последнее приложение
Дата последнего приложения
Время в секундах от набора
номера до отключения
Время в секундах от ответа до
отключения
Итог вызова
Флаг канала
Учетный код
Идентификатор канала
Пользовательское поле
33
Таблица 2.13. Сущность “Справочник оценок” - QualityVolumes.
Тип
ключа
PK
Имя атрибута
Размер
атрибута
Тип атрибута
Краткое описание
QualityVolumeID
QualityVolume
INT
VARCHAR
4
50
Код оценки
Оценка
Description
VARCHAR
MAX
Описание оценки
Таблица 2.14. Сущность “Критерии и оценки” - QualCritValRefs.
Тип
ключа
PK
FK
FK
Тип
ключа
PK
FK
Тип
ключа
PK
FK
Имя атрибута
Тип атрибута
QualCritValRefsID INT
QualityCriterionID INT
QualityVolumeID INT
Размер
атрибута
4
4
4
Краткое описание
Код оценки критерия
Код критерия
Код оценки
Таблица 2.15. Сущность “Справочник значений SIP параметров” - ParametrsValue.
Размер
Имя атрибута
Тип атрибута
Краткое описание
атрибута
ParametrsValueID
ParametrsNameID
Value
Description
Имя атрибута
INT
INT
VARCHAR
VARCHAR
4
4
50
MAX
Код значения
Код параметра
Значение параметра
Описание значения параметра
Таблица 2.16. Сущность “Полномочия пользователя” - Permissions.
Размер
Тип атрибута
Краткое описание
атрибута
PermissionID
usersID
PageId
INT
INT
INT
4
4
4
EnableEdit
BIT
1
Код полномочий
Код пользователя
Код страницы
Разрешение
редактировать/Сохранять
Полученная в результате разработки даталогическая модель представлена на
рисунке 2.4.
34
Рисунок 2.4. Схема базы данных.
35
2.2.2. Хранилище дополнительных файлов
Работу современного портала невозможно представить без его связи с хранилищем
данных. В хранилище находится вся информация, с которой работают пользователи,
информация о самих пользователях. Но на сегодняшний день хранилище данных зачастую
состоит не только из базы данных, в него также входят XML-файлы.
Использование XML-файлов в составе хранилища данных связано с тем, что
предоставляемые ASP.NET методы доступа к информации XML позволяют упростить и
ускорить эту процедуру, доступ к XML-файлу требует меньших ресурсов, чем к базе
данных, что позволяет хранить в этих файлах относительно небольшие объемы данных, к
которым происходят частые обращения. В данном случае для корпоративного портала было
предложено в XML-файле хранить глобальные настройки, т.к. при работе портала к этим
данным происходит максимальное количество обращений. Таким образом, информация о
пользователях, их параметрах и т.д. хранится в базе данных, а настройки портала: путь к
файлам записей, имя домена, имя сервера баз данных - находятся в XML-файле.
Наряду с возможностью предоставления пользователям средств доступа и обработки
информации по совершенным телефонным вызовам, необходимо также предоставить
возможность прослушать или сохранить на локальном диске пользователя запись
телефонного разговора. Для этого необходимо обеспечить формирование в формате Wav
запись разговоров средствами Asterisk.
Несмотря на гораздо больший размер wav-файла в отличие от mp3, выбор этого
формата обусловлен гораздо меньшей нагрузкой на сервер при кодировании. В плане
развития системы рассматривается вопрос по созданию архивного хранилища записей
разговоров, в которое будут помещаться старые записи в формате mp3. Формирование
записей будет производится в ночное - нерабочее время, что к тому же повысит
утилизацию вычислительных ресурсов сервера.
Хранение файлов записей целесообразно обеспечить в представленной ниже
структуре каталогов:
/год/месяц/число
Таким образом можно детализировать дату совершенного вызова вплоть до дня.
Время совершенного вызова будет формироваться средствами IP-АТС Asterisk и
кодироваться в имени файла.
Такая структура позволит однозначно идентифицировать файл записи разговора
вплоть до времени его совершения.
36
2.3. Разработка подсистемы разграничения полномочий пользователей
Аутентификация
Аутентификация в ASP.NET может реализовываться одним из следующих способов:
- Passport-аутентификация;
- Forms-аутентификация;
- Windows-аутентификация (Basic, Digest, Integrated).
Passport-аутентификация – основана на обращении к сервису Microsoft Passport –
базе данных имен пользователей и паролей, поддерживаемой Microsoft.
Forms-аутентификация – основана на использовании на Web-страницах специальных
форм для ввода имени пользователя и пароля. Очевидно, что этот способ аутентификации
необходимо использовать только в тех случаях, когда нет возможности применить
Windows-аутентификацию (например, в Интернете, когда на сервере невозможно выделить
учетные записи для пользователей, зарегистрированных на Web-сайте). Недостатком
Forms-аутентификации
в
ASP.NET
является
то,
что
она
защищает
только
зарегистрированные в ASP.NET файлы (.ASPX, .ASCX), но не защищает другие типы. Один
из способов решения этой проблемы – присвоить всем файлам «правильные» расширения, а
при обращении к ним программным путем изменять расширения на необходимые [1].
Конечно, такой способ усложняет реализацию Web-приложения, но позволяет защитить все
необходимое от несанкционированного доступа.
Windows-аутентификация настраивает IIS на проверку удостоверений пользователей
по зарегистрированным пользовательским учетным записям Windows – либо на локальной
машине, либо внутри домена.
Для создания маркера Windows, IIS использует один из имеющихся методов
аутентификации:
 обычная (Basic);
 краткая (Digest);
 встроенная (Integrated).
При обычной аутентификации имя пользователя и пароль передаются в каждом
запросе. IIS связывает их с учетной записью на Web-сервере и порождает маркер доступа,
необходимый при дальнейшей авторизации. Имя пользователя и пароль вводятся в
специальном окне, которое отображает Web-обозреватель. Регистрационные данные
передаются открытым текстом, что в случае не шифруемого канала позволяет без труда
перехватить запрос и получить несанкционированный доступ к серверу.
Краткая аутентификация – аналогична обычной, за исключением того, что
передаются
не
регистрационные
данные,
а
криптографически
стойкий
маркер
37
аутентификации. Пароли хранятся на сервере в открытом виде или в виде, допускающем их
восстановление.
Встроенная аутентификация – используется во внутренних сетях организаций.
Основана на использовании для идентификации пользователей параметров регистрации
Windows. При обращении Web-обозревателя к защищенному ресурсу вместо того, чтобы
запрашивать имя и пароль у пользователя, он сразу осуществляет обмен с Web-сервером
идентификационной информацией, которая была получена при регистрации пользователя в
системе на клиентском компьютере. Если же в ЛВС, где работает Web-сайт, настроен
домен Windows, то учетные записи пользователей берутся с контроллера домена. В этом
случае значительно упрощается регистрация новых пользователей на сайте, т.к. не
требуется отдельно создавать учетную запись на компьютере пользователя, а затем
добавлять ту же запись на Web-сервере. Сразу же после добавления пользователя в домен и
определения роли (т.е. принадлежности к группе) он получает доступ к Web-сайту как
зарегистрированный пользователь.
Авторизация
ASP.NET поддерживает два вида авторизации:
 ACL или файловая авторизация;
 URL-авторизация.
ACL-авторизация основана на правах доступа файловой системы. Так как все
файловые серверы, на которых установлены IIS и ASP.NET, имеют файловую систему
NTFS, то для применения ACL-авторизации необходимо назначить права доступа
средствами файловой системы (т.е. в свойствах файлов и папок) для пользователей,
зарегистрированных на сервере[1]. ACL-авторизация позволяет разграничивать доступ к
любым типам файлов, хотя ее использование немного сложнее, чем у URL-авторизации.
URL-авторизация
использует
специальные
директивы
из
специального
управляющего файла web.config, который может находится в любой директории Webпроекта. Нужно отметить, что URL-авторизация осуществляется целиком средствами
ASP.NET без какого-либо участия со стороны IIS. Недостатком URL-авторизации является
то, что она контролирует только типы файлов, зарегистрированные в ASP.NET. Например,
если запретить доступ незарегистрированным пользователям к какой-либо папке, то они не
смогут открывать файлы с расширениями .ASPX, .ASCX и т.д., но смогут загружать
обычные Web-страницы (.HTML) или zip-архивы. Несмотря на свои недостатки, URLавторизация используется довольно часто совместно с любыми видами аутентификации.
Кроме стандартных механизмов аутентификации, при которых в качестве данных
для идентификации используются имена пользователей и пароли, имеется механизм
идентификации на основе ролей. Роли фактически представляют собой группы
38
пользователей, в том виде, как они заданы в политике домена, либо, при его отсутствии, на
сервере. Механизм защиты на основе ролей позволяет менять права доступа к отдельным
частям Web-приложения не отдельным пользователям, а целым группам. Это позволяет
более просто и наглядно структурировать доступ пользователей к различным ресурсам
приложения. Механизм защиты на основе ролей работает с любыми перечисленными выше
вариантами аутентификации и авторизации пользователей.
Исходя из рассмотренных вариантов аутентификации и авторизации, для
разграничения
прав
пользователей
в
разрабатываемом
Web-приложении
решено
использовать встроенную Windows-аутентификацию совместно с URL-авторизацией. При
этом, для аутентификации пользователей используются учетные записи пользователей,
хранящиеся в службе Active Directory предприятия.
2.4. Разработка алгоритмов функционирования Web-приложения
2.4.1. Обобщенный алгоритм функционирования Web-приложения
Схема общего алгоритма функционирования портала представлена на рис. 2.5.
Работа с порталом начинается с процесса аутентификации и авторизации. Если
пользователь не аутентифицирован, то ему отображается страница “В доступе отказано”, и
работа с порталом прекращается. Если пользователь зарегистрирован в домене Active
Directory то происходит определение его роли. По окончании проверки формируется и
отображается главная страницы портала, состав которой зависит от роли к которой
принадлежит пользователь.
В структуре программного обеспечения Web-портала можно выделить подсистему
администрирования
и
пользовательскую
подсистему,
различающиеся
доступными
пользователю функциями. Очевидно, что к подсистеме администрирования имеют доступ
только администраторы портала, все остальные пользователи должны иметь доступ только
к пользовательской подсистеме.
После
отображения
главной
страницы
производится
ожидание
выбора
пользователем необходимого ему раздела, реализующего заданный функционал. Данная
процедура повторяется циклически до тех пор, пока пользователь не завершит работу с
порталом.
39
Начало
Отображение
страницы
«в доступе
отказано»
Ввод имени и
пароля
пользователя
А
Пользователь
зарегистрирован
в AD?
Нет
Формирование
интерфейса
пользователя
Да
Определение
роли
пользователя
Роль
пользователя
администратор?
Выбор элемента меню
пользователя
Раздел
“История вызовов”
Раздел
“Качество обслуживания”
Сформировать историю
вызовов
Сформировать отчет о
качестве обслуживания
Нет
Да
Формирование
интерфейса
администратора
Выбор элемента меню
администратора
Нет
Раздел
“Статистика”
Сформировать
статистику
совершенных вызовов
Действие пользователя
Форма
“Оценок и комментариев”
Форма
“Запись разгоовора”
Оценить/
Комментировать
совершенный вызов
Прослушать/Сохранить
запись разговора
Раздел
“История вызовов”
Раздел
“Учетные записи”
Создание/Удаление
параметров и их
значений
Создание/Удаление/
Редактирование
учетных записей
пользователей
IP-телефонии
Завершение работы
с порталом
А
Да
Конец
Рисунок 2.5. Обобщенный алгоритм функционирования Web-портала
40
2.4.2. Алгоритм работы пользовательской подсистемы
Помимо разграничения доступа пользователей к ресурсам портала на основе ролей,
необходимо реализовать ограничения на редактирование и сохранение данных. При этом
администраторам портала предоставляется полный доступ к модификации данных.
Пользователям необходимо предоставлять возможность редактировать и сохранять
информацию на основе назначенных им прав.
Алгоритм реализующий такие ограничения представлен на рисунке 2.6.
Начало
Отображение
страницы
«в доступе
отказано»
Ввод имени и
пароля
пользователя
Пользователь
зарегистрирован
в AD?
А
Нет
Да
Выборка данных
для текущего
пользователя из
таблицы
Permission
(PageId,
EnableEdit)
Определение
роли
пользователя
Роль
пользователя
“Администратор”
Да
Нет
Данные есть
Да
Нет
Считать XMLPageID для
запрашиваемой страницы из
GlobalSettings.XML
Предоставить полный
доступ
Нет
XmlPageID == PageId
Да
Нет
Соединение с базой данных
EnableEdit==true
Да
Разрешить редактировать и
сохранять данные
Запретить редактировать и
сохранять данные
Отобразить интерфейс
пользователя
А
Конец
Рисунок 2.6. Алгоритм подсистемы полномочий пользователей
41
Начало
Выделить из строки
переданных параметров
идентификационный номер
записи телефонного
разговора
Нет
Данные есть
Да
Добавить элемент
управления отображающий
критерий качества
обслуживания
Соединение с базой данных
Есть права сохранять
выставленные оценки
Нет
Да
На основе
идентификацион
ного номера
выбрать
название файла
записи разговора
и путь к нему
Данные есть
Нет
Добавить элемент
управления выбора оценки
Добавить кнопку “Сохранить”
в форму “Качество
обслуживания”
Выборка набора
возможных
оценок критерия
качества
обслуживания
Выборка
комментарие
в из базы
данных
Да
Файл существует по
указанному пути
Да
Указать WMP путь к файлу
записи разговора и название
файла
Нет
Данные есть
Нет
Да
Данные есть
Нет
Да
Добавить комментарий,
время создания и автора
комментария в форму
Добавить оценку в список
значений элемента
управления выбора оценки
Вставить Windows Media
Player в страницу
Нет
Есть список оценок
Да
Выборка
критериев
качества
обслуживания
Нет
Да
Выборка
выставленной
оценки по
текущему
критерию
Данные есть
Есть права сохранять
комментарии
Добавить кнопку “Сохранить”
в форму “Качество
обслуживания”
Нет
Закрыть соединение с базой
данных
Да
Сделать активным значение
выставленной оценки
Динамическое
формирование страницы и
отображение ее.
Конец
Рисунок 2.7. Алгоритм пользовательской подсистемы. Раздел “Запись разговора”.
42
2.4.3. Алгоритм работы администраторской подсистемы
Работу подсистемы администратора предлагается рассмотреть на примере алгоритма
раздела “Управление параметрами” (рис.2.7).
При обращении к разделу происходит считывание параметров (таблица
ParametrsName) и их возможных значений (таблица ParametrsValue) из базы данных. После
этого происходит создание и инициализация элементов управления, реализующих
отображение и возможность выбора значения полученными данными. Происходит
динамическое формирование страницы и предоставляется возможность выбора
пользователем следующих возможных действий:
 Выбор необходимого параметра;
 Создание параметра;
 Создание значения параметра.
Для создания параметра необходимо ввести его название, описание и значение по
умолчанию. Поскольку параметр должен быть уникальным, то перед добавлением его в
базу данных происходит проверка на существование такого параметра при помощи
хранимой процедуры PrmIsEnable, реализованной в виде функции возвращающей True или
False. Если такой параметр существует, то пользователю отображается окно с информацией
существования таких данных, и происходит ожидание дальнейших действий пользователя.
Если вновь создаваемого параметра нет, то происходит добавление в таблицу ast_config
дополнительного столбца с именем создаваемого параметра и сохранение в этот столбец
для всех записей указанного значения по умолчанию. Хранение значений параметров
осуществляется в таблице ParametrsValue. Для обеспечения формирования наборов
возможных значений для соответствующих параметров используется таблица
ParametrsName в которой хранится имя и описание параметра. Таким образом следующим
шагом является сохранение названия параметра в таблицу ParametrsName, а значения по
умолчанию в таблицу ParametrsValue.
При создании нового значения параметра, при помощи хранимой процедуры
VleIsEnable, проверяется существование создаваемого значения параметра в базе данных.
Если значение для необходимого параметра уникально, то оно сохраняется в базе данных,
если же такое значение уже есть, происходит отображение сообщения, информирующее
пользователя о существования таких данных, и происходит ожидание дальнейших действий
пользователя. При выборе пользователем другого параметра выполнение алгоритма
происходит сначала: выборка указанного параметра и его значений из базы данных,
инициализация элементов управления, динамическое формирование странницы.
43
Начало
Инициализиро
вать элементы
управления
полученными
данными
Соединение с базой данных
В
А
Отобразить
страницу
”Управление
параметрами
и значениями”
Выборка
параметра и
его значений
из таблиц
Parametrs
Name И
ParametrsValue
Отобразить модальное окно
“Данные существуют”
Действие пользователя
Форма “Создание
параметра”
Форма выбор
параметра
Форма “Создание
значения параметра”
Создать параметр
Выбор другого
параметра
Создать значение
параметра
Завершить работу
Ввод значения
параметра и
описания
Закрыть соединение с базой
данных
Ввод названия
параметра,
описания и
значения по
умолчанию
В
Вызов
функции
RecIsEnable с
параметрами
Параметр существует в
БД
Нет
Добавление столбца в
таблице ast_config с именем
параметра
Сохранение в созданный
столбец всех записей
значения по умолчанию
Конец
Вызов
функции
VleIsEnable
Да
Да
Сохранение параметра и
описания в таблице
ParametrsName
Параметр существует в
БД
А
Нет
Сохранение в таблицу
ParmetrsValue значения
параметра по умолчанию
А
Сохранить значение
параметра и описание в
таблице ParametrsValue
В
Рисунок 2.7. Алгоритм администраторской подсистемы. Раздел “Управление параметрами”.
44
3. Реализация системы
3.1. Реализация базы данных системы средствами СУБД
В качестве платформы для реализации базы данных был выбран Microsoft SQL
Server. Данная программа имеет средства для визуальной разработки таблиц, а также
обработчик запросов SQL Query Analyzer, который обрабатывает код на языке запросов
Transact-SQL и производит соответствующие изменения в базе данных.
Для создания новой базы данных нужно в списке в левой части окна программы
выбрать строку «Databases», вывести контекстное меню и выбрать пункт «New Database...».
Далее потребуется ввести основную информацию о новой базе:
 название;
 владелец – пользователь, от имени которого будет производиться доступ к базе;
 расположение файлов базы данных.
После этого необходимо ввести в структуру базы данных необходимые таблицы.
Для этого можно воспользоваться визуальной средой редактирования, раскроем список с
именем базы данных, выделим строку Tables и в контекстном меню выбираем пункт New
Table... В открывшемся окне редактора таблицы нужно определить поля таблицы и их тип,
после чего нажать кнопку «Сохранить» в панели инструментов.
То же самое можно сделать с использованием языка запросов. Для этого открываем
окно редактора запросов нажатием кнопки «New Query...» в панели инструментов и вводим
следующий запрос на создание таблицы ast_config:
CREATE TABLE ast_config(
ast_configID INT IDENTITY(1,1) PRIMARY KEY,
userID INT REFERENCES UsersInfo(userID),
name VARCHAR(50),
secret VARCHAR(50),
deleted BIT,
port INT,
lastms INT,
regserver VARCHAR(20),
ipaddr VARCHAR(16),
regseconds INT,
fullcontact VARCHAR(128),
username VARCHAR(50),
host VARCHAR(50),
[type] VARCHAR(50),
context VARCHAR(50),
canreinvite VARCHAR(50),
nat VARCHAR(50),
bindport VARCHAR(50),
bindaddr VARCHAR(50),
allow VARCHAR(50)
)
45
После нажатия кнопки Execute в панели инструментов мы получим в дереве текущей
базы данных таблицу ast_config.
Задавать первичные и внешние ключи можно как при создании самой таблицы при
помощи
параметров
PRIMARY
KEY
и
REFERENCES
ИмяТаблицы(ПолеID)
соответственно. Либо после создания таблицы задать первичный ключ при помощи
запроса:
ALTER TABLE ast_config ADD
CONSTRAINT [PK_Announcements] PRIMARY KEY NONCLUSTERED (ast_configID)
GO
Внешний ключ задается следующим образом:
ALTER TABLE ast_config ADD
CONSTRAINT [PK1_Announcements] foreign key (userID) references UsersInfo(userID)
GO
SQL
Server
Management
Studio
имеет
в
своем
составе
функцию
для
автоматизированного получения схемы структуры разработанной базы данных. Этот
компонент позволяет визуально контролировать схему базы данных, наличие всех
требуемых таблиц, внутренних и внешних ключей. Для создания схемы нужно в дереве
базы данных выбрать пункт Database Diagrams, а далее в контекстном меню «New Database
Diagram…». Далее нужно выбрать те таблицы базы данных, которые будут отображаться на
схеме, после чего начнется процесс формирования схемы, и через некоторое время она
будет выведена на экран.
Внешние ключи удобнее задавать с помощью специального мастера. Для этого
нужно выбрать таблицу, являющуюся первичной для ключа, и в контекстном меню выбрать
пункт «New Foreign Key...». Откроется окно мастера, в котором нужно выбрать внешнюю
таблицу и те поля, которые будут являться ключевыми. Далее нужно задать действие,
которое будет выполняться при возникновении событий UPDATE и DELETE. Часто
требуется каскадное обновление и удаление данных по внешнему ключу, поэтому в
соответствующих списках нужно выбрать пункт Cascade. Если оставить значения No
Action, то это может вызвать замусоривание таблиц и неоправданное увеличение объема
базы. В таком случае придется соответствующим образом модифицировать хранимые
процедуры, что приведет к неоправданному увеличению их сложности.
Для создания хранимых процедур используется тот же обработчик запросов, что и
при создании таблиц. Кроме этого, можно разрабатывать хранимую процедуру на основе
шаблона, для этого в списке характеристик базы данных нужно выбрать пункт
Programmability → Stored Procedures и в контекстном меню выбрать “New Stored
Procedure…”. В результате откроется окно обработчика запросов, в котором будет
46
находиться шаблон процедуры с необходимыми комментариями. После ввода текста
процедуры для её компиляции и помещения в базу данных следует нажать кнопку Execute в
панели инструментов. Если процедура написана корректно и без синтаксических ошибок,
то она сохраняется в базе, о чем будет выдано соответствующее сообщение. При этом в
дереве базы данных появится новый пункт с названием, соответствующим названию
хранимой процедуры.
Полный тест запроса для создания базы данных представлен в приложении 1.
3.2. Конфигурирование компонентов системы
3.2.1 Интеграция Asterisk с базой данных
Установка и конфигурирование пакета unixODBC.
UnixODBC
проект,
-
в
рамках
которого
разрабатывается
и
развивается
универсальный API-интерфейс для доступа к различным типам баз данных, призванный
стать стандартом для ODBC на *nix системах.
tar -zxvf unixODBC-2.2.9.tar.gz &&
cd unixODBC-2.2.9 &&
./configure --sysconfdir=/etc --prefix=/usr --disable-gui &&
make &&
make install
Для связи с базой данных прописываем необходимые драйвера в файле
/etc/odbcinst.ini.
[FreeTDS]
Description
= FreeTDS ODBC driver for MSSQL
Driver
= /usr/local/lib/libtdsodbc.so
Setup
= /usr/local/lib/libtdsS.so
FileUsage
=1
Для того чтобы убедиться, что система обращается к необходимому драйверу,
необходимо выполнить приведенную ниже команду. Если все настроено правильно, она
должна возвратить имя признака используемой СУБД.
#odbcinst –q –d
[FreeTDS]
Далее необходимо сконфигурировать файл /etc/odbc.ini, используемый для создания
коннектора, который Asterisk будет применять для ссылки на эту конфигурацию. Если в
будущем понадобиться изменить базу данных или что-то еще, надо будет просто внести
изменения в этот файл, не меняя ссылок в Asterisk.
[MSSQL-asterisk]
47
Description
= Asterisk ODBC for MSSQL
Driver
= FreeTDS
Server
= 192.168.0.7
Port
= 1433
Database
= asterisk
tds_version
= 7.0
Установка и конфигурирование пакета freetds.
MS SQL Server был разработан Microsoft в партнерстве с Sybase. Впоследствии эти
два сервера стали очень похожими. Фактически настолько похожими, что протокол связи,
используемый клиентским программным обеспечением, чтобы связаться с этими серверами
является фактически идентичным. Этот протокол называется Табличным Потоком Данных
(Tabular Data Stream, сокращенно TDS). FreeTDS - открытый проект, обеспечивающий
реализацию протокола TDS.
tar -zxvf freetds-0.62.4.tar.gz &&
cd freetds-0.62.4 &&
./configure --prefix=/usr --with -tdsver=7.0 \ --with-unixodbc=/usr/lib &&
make &&
make install
Для проверки соединения с базой данных можно использовать приложение isql, для
этого необходимо выполнить команду:
Echo “select * from cdr” | isql –v MSSQL-asterisk login password
На экране отобразится содержимое таблицы cdr базы Asterisk.
Конфигурирование Asterisk для использования odbc.
Для включения в Asterisk возможности использования пакета odbc, его необходимо
пересобрать командой:
make clean && ./configure --with-odbc &&
make update &&
make &&
make install
3.2.2 Настройка хранения истории звонков в базе данных.
Asterisk автоматически генерирует записи
CDR (Call Detail Record), которые
содержат детализированную информацию о вызовах, порожденных, завершенных или
проходящих через телефонную станцию. По умолчанию записи хранятся в текстовом CSVфайле, в котором значения полей разделяются запятыми.
48
При хранении данных в CSV-файле, доступ к этой информации и ее обработка
затруднительны, и ведут к дополнительным накладным расходам. Наряду с сохранением
статистики звонков в CSV-файлах, Asterisk позволяет использовать для этих целей таблицы
баз данных, позволяющие упростить работу с данными.
Для организации возможности сохранять информацию о совершенных вызовах в базе
данных, на сервере телефонии необходимо установить и сконфигурировать пакеты
unixODBC и freetds, создать базу данных с необходимым набором таблиц, а также
настроить Asterisk на использование созданного хранилища.
Для
записи
истории
совершенных
звонков
в
базу
данных
необходимо
сконфигурировать файл cdr_odbc.conf, хранящий настройки ODBC-коннекторов.
/usr/local/etc/asterisk/cdr_odbc.conf
[global]
dsn=MSSQL-asterisk
username=login
password=password
loguniqueid=yes
table=cdr
Опция
dsn
указывает
на
соединение
с
базой
данных,
которое
было
сконфигурировано в файле /etc/odbc.ini.
Необходимо использовать только один из возможных видов коннекторов, для этого
очищаем файл /usr/local/etc/asterisk/cdr_tds.conf командой:
[ -f /etc/asterisk/cdr_tds.conf ] > /etc/asterisk/cdr_tds.conf
Проверить соединение Asterisk с базой данных можно использовав CLI-команду:
odbc show
Если все правильно настроено, то на экран будет выведена информация об
успешном соединении с базой данных:
*CLI> odbc show
Name: asterisk
DSN: MSSQL-asterisk
Connected: yes
Для того, чтобы проверить правильность настроек, необходимо выполнить CLIкоманду:
*CLI>cdr status
При правильных настройках на экран будет выведена информация о том, что
история звонков сохраняется не в csv-файл, а в базу данных.
49
3.2.3 Настройка хранения параметров SIP-пользователей в базе данных.
По умолчанию Asterisk хранит настройки SIP-пользователей в файле sip.conf как
текстовый блок вида:
[xxx]
type=yyy
parameter1=value
parameter2=value
…
parameterN=value
Где xxx - это имя, ассоциируемое с SIP-пользователем, или это может быть
произвольным именем SIP-устройства, на которое можно ссылаться из
других
конфигурационных фалов. Обычно, если SIP-телефон имеет добавочный номер 123, тогда
соответствующие ему настройки в этом файле начинаются со строки [123]. Далее в блоке
описываются необходимые настройки пользователя в виде “параметр=значение ”.
Помимо хранения настроек SIP-пользователей в конфигурационном файле, Asterisk,
благодаря архитектурам реального времени, позволяет использовать для этих целей
таблицы баз данных. Существует два типа архитектур реального времени:
- статическая – аналогична методу хранения в конфигурационных файлах, но чтение
данных происходит из БД и любое изменение опций конфигурации влечет за собой
необходимость перезагрузки сервера Asterisk;
- динамическая – используется для хранения в базе данных конфигураций файлов
SIP, IAX2, голосовой почты и загружает данные по необходимости и соответственно не
требует перезагрузки.
Исходя из выше сказанного, наиболее приемлемым вариантом для хранения
настроек пользователя является использование динамической архитектуры реального
времени, т.к. в этом случае упрощается доступ и обработка данных. Для ее использования
необходимо создать в базе данных таблицу ast_config и сконфигурировать Asterisk на ее
использование.
Архитектура реального времени настраивается в файле extconfig.conf. Этот файл
указывает Asterisk что брать из базы данных и откуда именно, что обеспечивает
возможность загружать некоторые данные из базы данных, а другие – из стандартных
конфигурационных файлов. Для того чтобы Asterisk хранил настройки пользователя в
созданной таблице базы данных, необходимо убедиться, что в файле extconfig.conf
присутствуют строки:
sippers=>odbc,asterisk,ast_config
sipusers=>odbc,asterisk,ast_config
50
После этого регистрационная информация о SIP-пользователях будет храниться и
извлекаться из базы данных.
3.2.4 Организация записи разговоров
Для того чтобы Asterisk осуществлял запись разговоров, файл extensions.conf
необходимо сконфигурировать следующим образом:
exten
=>_9.,1,Set(fname=${STRFTIME(${EPOCH},,%d%m%Y%H%M%S)}-
${CALLERID(number)}-${EXTEN}
Exten => _9.,2,MixMonitor(/home/share/monitor/${fname}.wav)
Exten => _9.,1,Dial(SIP/${EXTEN:1}@192.168.0.150,29,rt)
3.2.5 Установка и настройка пакета Samba
В соответствии с заданием на разработку пользователям должна быть предоставлена
возможность сохранять файлы записей у себя на диске. Web-сервер IIS, формирующий
интерфейс, работает на windows системе и для получения доступа к файлам,
расположенным на Unix-платформе сервера Asterisk, необходимо установить пакет Samba.
Для установки пакета Samba необходимо выполнить команды:
#cd /usr/ports/net/samba3
#make config install clean
В результате на экране появится окно конфигурирования параметров установки
Samba (рис.3.1).
После выбора необходимых параметров будет выполнена загрузка пакета,
распаковка, компиляция, установка и очистка системы от временных файлов. Для
автоматического запуска сервисов, необходимых для работы Samba во время старта
системы, необходимо в конфигурационном файле /etc/rc.conf прописать строку:
samba_enable=”YES”
При
помощи
утилиты useradd выполняется создание
Unix-пользователя с
необходимыми параметрами, и при помощи команды:
#pdbedit – a имя-пользователя
- пользователь конвертируется в пользователя Samba. Таким образом пользователю будет
предоставлена возможность подключаться к предоставленным в общее пользование
ресурсам.
51
Рисунок 3.1. Окно конфигурирования параметров установки Samba.
Файлы записей сохраняются в директорию /home/share/monitor, для предоставления
ресурса
в
совместное
пользование
необходимо
в
конфигурационном
файле
/usr/local/etc/smb.conf прописать необходимый набор настроек:
[monitor]
coment = Records
path = /home/share/monitor
public = no
valid users = имя_пользователя_под которым_получаем_доступ_к_ресурсу
После этого можно выполнить перезагрузку системы и убедиться, что сервис
автоматически запускается.
3.3. Реализация подсистемы безопасности
Одним из немаловажных аспектов работы любой системы является ее безопасность
и безопасность данных, находящихся в базе данных системы. Приложение необходимо
защищать как от целенаправленных атак злоумышленников, так и от несанкционированных
действий пользователей, носящих деструктивный характер.
В общем виде задачи для реализации защиты Web-приложения таковы:
- Аутентификация. Прежде всего, необходимо аутентифицировать пользователей.
Аутентификация – процесс определения идентичности пользователя и обеспечения
гарантий этой идентичности;
- Авторизация. После того как выяснено, кто работает с приложением, необходимо
решить какие операции данный пользователь может выполнять, и к каким ресурсам
52
обращаться. Авторизация – процесс определения прав и ограничений, назначенных
аутентифицированному пользователю;
- Конфиденциальность. Необходимо гарантировать пользователю, что никто другой
не сможет видеть важные данные, которые он обрабатывает. Таким образом, необходимо
шифровать канал между браузером клиента и Web-сервером;
- Целостность. Необходимо гарантировать, что данные, передаваемые между
клиентом и сервером, не изменяются в результате неавторизованного вмешательства;
- Контроль достоверности ввода данных пользователем. В процессе работы с
приложением пользователь может заполнять разнообразные формы, а затем сохранять
введенную информацию в базу данных. Возможны ситуации, когда пользователь может не
заполнить какие-то требуемые поля, ввести в них явно неверные или, возможно,
сознательно вредоносные значения, использовать неверный формат и т.п. Чтобы подобная
информация не попала на сервер и не вызвала проблем при обработке, вводимую
пользователем информацию необходимо проверять.
Таким образом, организация защиты Web-приложения сводится к реализации
механизмов обеспечивающих решение перечисленных задач.
Чтобы использовать Windows-аутентификацию в Web-приложении и иметь доступ к
идентичности пользователя, необходимо:
1. Сконфигурировать тип Windows-аутентификации, используя IIS Manager (в разных
версиях IIS процесс конфигурирования может отличаться);
2. Сконфигурировать ASP.NET для использования аутентифицирующей информации
IIS. Для этого необходимо чтобы в файле Web.config были следующие строки:
<configuration>
<system.web>
<authorization>
<authentication mode="Windows"/>
</authorization>
</system.web>
</configuration>
3.Отключить анонимный доступ к Web-приложению.
Так как Web-сайт располагается в директориях файловой системы структурировано,
то есть различные функциональные блоки находятся в разных папках, то с помощью URLавторизации можно запретить доступ пользователей к страницам сайта.
Для включения режима URL-авторизации для какой-либо папки необходимо создать
в ней файл web.config следующего содержания:
<configuration>
53
<system.web>
<authorization>
<allow roles=@"ast\astAdmins" />
<allow roles=@"ast\astUsers" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
Таким файлом разрешается доступ к папке всем пользователям, входящим в группу
astAdmins и astUsers, и запрещается доступ всем остальным пользователям. Необходимо
заметить, что последовательность строк в файле web.config имеет большое значение. Если в
данном случае написать так:
<deny users="*" />
<allow roles=@"ast\astAdmins" />,
- то доступ к папке будет запрещен для всех пользователей.
Конфиденциальность и целостность
Конфиденциальность и целостность данных во время передачи их по сети основаны
на шифровании. Наиболее часто применяемым протоколомдля шифрования является
криптографический протокол Secure Sockets Layer (SSL), обеспечивающий безопасную
передачу данных по сети.
между
клиентом
и
При его использовании создаётся защищённое соединение
сервером.
SSL
изначально
разработан
компанией
Netscape
Communications, в настоящее время обрел статус промышленного стандарта.
Ввести в действие шифрование SSL можно либо получив действительный ключ
(сертификат) от доверенного центра сертификатов (Certificate Authority, CA), либо
сгенерировать его собственным центром сертификатов CA, который можно использовать в
работе
приложений
только
внутри
сети
предприятия.
Для
Internet-приложений
большинство компаний использует CA от независимых поставщиков.
Для доступа к страницам, защищённым протоколом SSL, в URL вместо обычного
префикса http (порт 80), как правило, применяется префикс https (порт 443), указывающий
на то, что будет использоваться SSL-соединение.
Так как при работе с разрабатываемым Web-приложением пользователи будут
работать с конфиденциальными данными сотрудников организации, то необходимо
организовать защиту канала передачи данных, сделать это решено на основе протока SSL .
Настройка шифрования с использованием SSL на разных версиях IIS может
различаться, но для всех версий необходимо выполнить ряд общих действий:
54
1. Получить сертификат для сервера у издателя (например, в компании VeriSign);
2. Установить сертификат на Web-сервере IIS;
3. Включить поддержку SSL для выбранного сервера, каталога или файла;
4. Запретить доступ к содержимому сервера по протоку http (порт 80).
В итоге, при первом обращении к порталу пользователю отобразится диалоговое
окно, в котором можно принять либо отклонить сертификат, а также установить его.
Соответственно, в случае принятия сертификата пользователь получит доступ к порталу по
безопасному каналу, в случае отклонения – доступ будет закрыт. Установка сертификата
означает помещение его в системное хранилище доверительных сертификатов, и при
последующих обращениях упомянутое диалоговое окно принятия сертификата появляться
не будет.
Контроль достоверности ввода данных пользователем
В основной своей массе Web-страницы запрашивают у пользователя какую-либо
информацию, обрабатывают её в соответствии с заложенными алгоритмами и, возможно,
сохраняют в базы данных. Поскольку пользователь может ввести информацию
несоответствующего формата, просто ошибочную информацию, или информацию носящую
целеноправленный деструктивный характер, то её перед дальнейшей обработкой
необходимо проверить на достоверность ввода.
В идеале, проверка достоверности пользовательского ввода перед отправкой на
сервер должна выполняться на стороне клиента, чтобы пользователь был немедленно
информирован о проблемах с вводом. Однако пользователь может целенаправленно
удалить механизмы проверки на клиентской стороне, сформировать новую страницу с
деструктивными данными и отправить её на сервер. В связи с этим разработчики Microsoft
разработали
набор
элементов
управления
проверкой
достоверности,
называемые
валидаторы. Эти элементы управления можно объявить на Web-форме, а затем привязать к
любому другому элементу управления вводом. Это позволит организовать автоматическую
клиентскую и серверную проверку достоверности данных [1] и в случае проблем с вводом
информировать пользователя об этом, препятствуя отправке страницы на сервер.
ASP.NET содержит шесть элементов управления проверкой достоверности, краткое
описание которых приведено в таблице 3.1.
55
Таблица 3.1. Элементы управления проверкой достоверности.
Проверяет, не пуст ли проверяемый элемент
управления при отправке формы
<asp:RangeValidator >
Контролирует, находится ли значение связанного
элемента управления в пределах определенного
диапазона. Значение и диапазон могут быть числом,
датой или строкой
<asp:CompareValidator>
Контролирует,
соответствует
ли
значение
определенной
операции
сравнения
с
другой
константой или значением элемента управления
<asp:RegularExpressionValidator>
Контролирует,
соответствует
ли
значение
определенному регулярному выражению
<asp:CustomValidator>
Позволяет определить клиентскую или серверную
операцию проверки достоверности JavaScript для
выполнения необходимой логике проверки
<asp:ValidatorSummary>
Отображает итоговую информацию с сообщениями об
ошибках ввода данных
Следует отметить, что можно использовать сразу несколько элементов управления
<asp:RequiredFieldValidator>
проверкой достоверности для одного элемента управления вводом. Так, например, для
контроля достоверности ввода пароля и правильности его повторного ввода в
разрабатываемом
Web-приложении
используются
сразу
два
валидатора:
<asp:RequiredFieldValidator> и <asp:CompareValidator>.
<asp:TextBox ID="TextBox1" runat="server" TextMode="Password"
Width="80%"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server"
ErrorMessage="Необходимо ввести пароль"
ControlToValidate="TextBox1">*</asp:RequiredFieldValidator>
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="Неверно
указан пароль и подтверждение пароля" ControlToCompare="TextBox4"
ControlToValidate="TextBox1">*</asp:CompareValidator>
Для отображения ошибок ввода используется валидатор <asp:ValidatorSummary>.
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
ShowMessageBox="true" ShowSummary="false"/>
Наиболее распространённым способом взлома сайтов и программ, работающих с
базами данных, является основанный на внедрении в запрос произвольного SQL-кода
метод, получивший название SQL-инъекции.
Внедрение SQL-кода, в зависимости от типа используемой СУБД и условий
внедрения, может дать возможность злоумышленнику выполнить произвольный запрос к
базе данных, например, прочитать содержимое любых таблиц, удалить, изменить или
добавить данные.
56
Атака типа внедрения SQL может быть возможна из-за некорректной обработки
входных данных, для построения динамического SQL запроса и последующего его
выполнения.
Рассмотрим пример такого запроса:
string sqlQuery = "SELECT COUNT(*) FROM Users WHERE UserName='"+username.Text+
"' AND Password='" + password.Text + "'"
SqlCommand sqlCmd = new SqlCommand(sqlQuery, sqlConn);
int userCount = (int)sqlCmd.ExecuteScalar();
if (userCount==1)
{
// Авторизация пройдена успешно
...
}
...
Приведенный выше код выполняет динамический SQL запрос к таблице со списком
пользователей и их паролями. Если результатом запроса является 1, значит пользователь с
заданным именем и паролем существует. Представим теперь, что в качестве имени
пользователя введена строка:
admin' -И тогда код сформирует следующий SQL запрос:
SELECT
COUNT(*)
FROM
Users
WHERE
UserName='admin'
--'
AND
Password='password'
Одинарная кавычка в имени пользователя закрывает ранее открытую одинарную
кавычку, а строка «--» превращает в комментарий все, что следует дальше. Соответственно,
значение пароля не участвует в проверке, и если пользователь admin существует, то
результатом запроса будет 1 и успешный вход в защищенную часть сайта.
Итак, злоумышленник смог успешно пройти процедуру авторизации на сайте, зная
только имя пользователя. Злоумышленник может ввести в качестве имени пользователя
следующую строку:
'; drop table users -Результатом выполнения такого запроса может стать удаление таблицы Users.
Успешность этого шага зависит от привилегий пользователя БД, от имени которого
выполняется запрос. Следует всегда стараться использовать учетную запись с минимально
необходимым набором привилегий и никогда учетную запись администратора БД.
Одним из методов защиты является отказ от использования динамических SQL
запросов и применение параметризованных запросов. Текст параметризованного запроса
57
вместо реальных значений содержит параметры, которые заполняются фактическими
значениями после создания запроса.
SqlCommand sqlCmd = new SqlCommand("CheckLogon", sqlConn);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.Add ("@username", SqlDbType.VarChar).Value = username.Text;
sqlCmd.Parameters.Add ("@password", SqlDbType.VarChar).Value = password.Text;
int userCount = (int)sqlCmd.ExecuteScalar();
Применение параметризованных запросов
являются скорее необходимыми, чем
достаточными для поддержания необходимого уровня защищенности Web-приложения, и
должны использоваться как еще одно средство безопасности наряду с контролем ввода
данных пользователем.
Использование перечисленных методов защиты позволяет существенно повысить
безопасность разрабатываемого Web-приложения, защищая данные как при передаче, так и
при хранении их в базе данных.
3.4. Реализация алгоритмов работы Web-приложения
Чаще всего при отображении информации из базы данных используется класс SqlReader,
который напрямую предоставляет доступ к набору данных, полученному от СУБД. Следует
отметить, что данный класс производит выборку информации из базы построчно, поэтому в случае
использования SqlReader не для прямого отображения информации, а для какой-либо обработки,
доступ к этому классу целесообразно производить в цикле, в теле которого осуществляется доступ к
отдельным полям каждой записи.
Приведенный ниже пример иллюстрирует применение
SqlReader.
//Получение строки соединения
string constr = SqlDataSource1.ConnectionString;
//Формируем запрос
string sql = "select name, lastname, firstname, firstname, usersid from ast_config, usersinfo
where id=usersid and deleted='false' order by name";
// Создание экземпляра объекта подключения и команды
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader reader;
try
{
//Открытие соединения
con.Open();
//Выполнить DataReader для указанной команды
reader = cmd.ExecuteReader();
//Выполняем цикл пока есть строки
while (reader.Read())
{
HtmlTableRow row = new HtmlTableRow();
58
// Формируем строку для отображения на странице
for (int i = 0; i < reader.FieldCount - 1; i++)
{
HtmlTableCell cell = new HtmlTableCell();
cell.Width = "22%";
cell.Align = "center";
cell.InnerText = reader.GetString(i);
row.Cells.Add(cell);
cell.Attributes["onClick"] = "document.location='details.aspx?name=" +
reader.GetString(0) + "&state=view'";
}
HtmlTableCell cell1 = new HtmlTableCell();
cell1.Width = "12%";
cell1.Align = "center";
//Создаем CheckBox для возможности помечать записи для удаления
CheckBox markDel = new CheckBox();
markDel.Attributes.Add("runat", "server");
markDel.ID = Convert.ToString(reader.GetValue(4));
markDel.EnableViewState = true;
cell1.Controls.Add(markDel);
row.Cells.Add(cell1);
row.Attributes["onmouseover"] = "this.style.backgroundColor='#FFE4B5'";
row.Attributes["onMouseOut"] = "this.style.backgroundColor='transparent'";
Table1.Rows.Add(row);
}
HtmlTableRow row3 = new HtmlTableRow();
HtmlTableCell cell3 = new HtmlTableCell();
cell3.Attributes.Add("colspan", "4");
row3.Cells.Add(cell3);
//Создаем кнопку ”Удалить и добавляем ее в таблицу”
Button delParamVal = new Button();
delParamVal.Attributes.Add("runat", "server");
delParamVal.EnableViewState = true;
delParamVal.Text = "Удалить";
delParamVal.Click += new EventHandler(delParamVal_Click);
cell3.Controls.Add(delParamVal);
row3.Cells.Add(cell3);
Table1.Rows.Add(row3);
}
finally
{
con.Close();
}
Необходимым этапом разработки интерфейса пользователя является возможность
предоставления ему возможности прослушать запись необходимого разговора. Для этого
было решено использовать бесплатный проигрыватель мультимедиа файлов разработки
Microsoft - Windows Media Player. Приведенный ниже код встраивает его в страницу.
59
document.write('<OBJECT width="430" height="65" classid="CLSID:6BF52A52-394A-11d3B153-00C04F79FAA6">');
document.write('<param name="autoStart" value="False" />');
document.write('<param name="URL" value="'+filename+'" />');
document.write('<param name="uiMode" value="mini" />');
document.write('<param name="display" value="false" />');
document.write('<param name="showDisplay" value="false" />');
document.write('<EMBED type="application/x-mplayer2"');
document.write('pluginspage="http://www.microsoft.com/Windows/MediaPlayer/"');
document.write('SRC="'+filename+'"');
document.write('align="top" width="430" height="70" autostart="0" autosize="0" showcontrols="1"
showdisplay="0" EnableContextMenu="0" ShowStatusBar="1">');
document.write('</EMBED>');
document.write('</OBJECT>');
Диаграммы и графики предоставляют краткий обзор большого количества
информации. При помощи диаграммы человек может быстро заметить любой тренд,
сравнить различные результаты, либо заметить закономерность.
Таким образом, для предоставления возможности сравнительного анализа
совершенных вызовов в графическом виде был разработан интерфейс, при помощи
которого он может построить графики, в соответствии с необходимыми параметрами.
После изучения существующих средств создания диаграмм и графиков на вебстраницах ASP.NET, было решено использовать компонент Microsoft Chart Controls.
Представленный ниже код создает график, отражающий длительность разговоров по дням.
Chart CChart = new Chart();
Legend CLegend = new Legend("CLegend");
CChart.Legends.Add(CLegend);
CLegend.Docking = Docking.Bottom;
CLegend.Alignment = StringAlignment.Center;
ChartArea CArea = new ChartArea("ChartArea1");
CArea.BackColor = Color.Transparent;
CChart.ChartAreas.Add(CArea);
SqlConnection ChartCon = new SqlConnection(constr);
SqlCommand ChartCmd = new SqlCommand(ChartSql, ChartCon);
60
string sql2 = “select cast(floor(cast(calldate as float)) as datetime), sum(billsec) from cdr where
src=@src and dst=@dst and (calldate between @startinterval and @endinterval) group by
cast(floor(cast(calldate as float)) as datetime)”
ChartCmd.Parameters.Add("@src", listSrc.SelectedValue);
ChartCmd.Parameters.Add("@dst", listDst.SelectedValue);
ChartCmd.Parameters.Add("@startinterval", Convert.ToDateTime(TextBox1.Text);
ChartCmd.Parameters.Add("@endinterval", Convert.ToDateTime(TextBox2.Text);
try
{
con2.Open();
reader2 = cmd2.ExecuteReader();
Series CSeries = new Series("Series" + i);
CSeries.ChartArea = "ChartArea1";
CSeries.ChartType = SeriesChartType.Bar;
CSeries["DrawingSideBySide"] = "true";
CSeries.CustomProperties = "LabelStyle=Bottom";
CSeries.CustomProperties = "BarLabelStyle=Right";
CSeries.IsValueShownAsLabel = true;
CSeries.IsXValueIndexed = true;
CSeries.LegendText = src;
CSeries.XValueType = ChartValueType.DateTime;
while (reader2.Read())
{
CSeries.Points.AddXY(Convert.ToDateTime(reader2.GetValue(0)).ToShortTimeString(),
reader2.GetValue(1));
CChart.Series.Add(CSeries);
}
finally
{
con2.Close();
}
3.5. Тестирование и отладка
Процесс отладки является неотъемлемой частью разработки любой программы. При
программировании могут допускаться ошибки, которые принадлежат к одному из
следующих типов:
61

Синтаксические
конструкций,
ошибки.
не
Они
отвечающих
связаны
с
применением
требованиям
в
программе
используемого
языка
программирования.

Логические ошибки. Они связаны с несоответствием программы алгоритму
решения поставленной задачи.
Существуют два основных метода тестирования программ [6]:

Метод проверки по исходным данным и результатам («черный ящик»);

Метод структурного тестирования («белый ящик»).
В данном случае, т.к. полностью известен алгоритм работы программы, нужно
использовать метод структурного тестирования. Этот метод состоит в анализе логических
маршрутов исполнения программы и результатов в промежуточных точках контроля.
Проверка программы осуществляется по ходу ее исполнения, от общего к частному, в
предположении, что имеется ошибка. Этот метод проще в локализации ошибок по
сравнению с Методом проверки по исходным данным и результатам, однако требует
больше времени на тестирование [6].
Тестирование и отладка базы данных
Отладка базы данных заключается в проверке правильности назначения типов для
полей таблиц при их разработке, правильности задания первичных и внешних ключей, а
также корректности выборки данных из таблиц с использованием хранимых процедур.
Первый этап отладки базы данных выполняется, в основном, самим программистом.
Создавая структуру каждой таблицы, он должен проверять правильность назначения типов
для каждого поля по табл. 2.2 – 2.16. На данном этапе отсутствует возможность
обнаружения каких-либо логических ошибок.
При задании первичных ключей следует обращать внимание на выбор в качестве
первичного того ключа, вероятность повторения которого является наименьшей. Обычно
поле первичного ключа – это номер строки в таблице, который получается автоматически.
Лучше всего, если полю первичного ключа будут заданы атрибуты «Уникальный» и
«Запрет нулей» (если используется SQL Server, то без установки этих атрибутов поле не
удастся сделать ключевым [7]).
При задании внешних ключей нужно проверить, что ключевое поле в первичной и
вторичной таблицах имеет одинаковые типы и размерность. Это условие проверяется
самим SQL-сервером при создании ключа, и в случае каких-либо ошибок ключ просто не
будет создан, однако упомянутая проверка в данном случае не будет лишней.
62
Большинство хранимых процедур, которые были разработаны для базы данных
портала, достаточно просты по алгоритмам работы, поэтому их отладка фактически
заключается в проверке синтаксиса. В случае использования в качестве среды разработки
SQL Server Management Studio, для отладки хранимых процедур можно использовать
встроенные средства. Когда написан текст процедуры, то для ее сохранения в базе
требуется нажать кнопку «Execute», при этом система выявляет синтаксические и
некоторые логические ошибки (например, отсутствие указанных таблиц или полей,
некорректные объявления либо преобразования типов). Для отладки более сложных
процедур их нужно запустить на исполнение. Для этого в дереве базы данных нужно
выделить название хранимой процедуры и из контекстного меню выбрать команду “Execute
Stored Procedure…” Если хранимая процедура имеет какие-либо входные переменные, то их
необходимо задать в специальном окне. Результаты выполнения процедуры будут
выведены в отдельную таблицу, по которой можно выявить логические ошибки. Однако
окончательную проверку хранимых процедур можно выполнить только совместно с
вызывающим их Web-приложением.
Тестирование и отладка подсистемы администрирования
Прежде всего, при отладке подсистемы администрирования нужно обратить внимание
на запрещение доступа к ней пользователей не обладающих правами администратора. Для
этого нужно зайти в систему под учетной записью одного из таких пользователей и,
загрузив портал, убедиться в недоступности администраторской подсистемы.
В администраторской части нужно обратить внимание на то, что все поля являются
обязательными для заполнения – для контроля используется элементы управления
проверкой достоверности и в случае неверного ввода данных должно отобразиться окно,
информирующее в каких полях допущена ошибка.
Важным моментом является проверка уникальности значения добавочного номера
телефона при создании нового SIP- пользователя. Поскольку в системе не может быть
дубликатов добавочных номеров контролю этого необходимо уделить особое внимание.
Для проверки этого необходимо попробовать создать нового пользователя указав
существующее значение добавочного номера, в ответ система должна отобразить окно с
информацией о необходимости указать альтернативное значение, поскольку указанное уже
используется.
Аналогичным образом необходимо проверить уникальность создаваемых SIPпараметров пользователей и соответствующих им наборам значений. Так же не могут
дублироваться и критерии качества обслуживания с соответствующими наборами оценок.
63
Тестирование и отладка пользовательской подсистемы
Процесс тестирования и отладки пользовательской подсистемы аналогичен процессу
отладки подсистемы администрирования. Нужно проверять корректность записываемой в
базу данных информации, правильность ее обработки и отображения, а также реакцию
приложения на попытки ввода пользователем неадекватной информации. Для решения
последней задачи так же используются специальные элементы управления проверкой
достоверности, предназначенные для проверки введенного пользователем в какое-либо
поле значения на соответствие определенным критериям. Этими критериями могут быть
различные признаки, например ввод только чисел или ввод значения по заданному формату
(условие проверки задается в виде регулярного выражения). В результате проверки, если
введенное
значение
не
соответствует
заданным
критериям,
пользователь
будет
проинформирован об этом.
Поскольку на одной странице может размещаться
несколько форм, каждая из
которых может иметь свою кнопку “Cохранить”, то разделение элементов управления
проверкой достоверности на группы осуществлялось свойством ValidationGroup. Таким
образом необходимо проверить правильность разбиения на группы. Осуществить это
можно вводя неверные значения и пытаться сохранить введенные значения нажатием
кнопки “Сохранить”.
После выполнения перечисленных проверок и исправления обнаруженных ошибок
сайт был запущен в режиме пробной эксплуатации, в ходе которой на сегодняшний день
новых ошибок не выявлено.
64
Заключение
При проведении дипломной работы спроектирован и разработан корпоративный
Web-портал IP-телефонии. Портал в полном объеме обеспечивает функциональный набор
возможностей, обозначенных на этапе проектирования. Доступ к порталу осуществляется
как из внутренней локальной вычислительной сети предприятия, так и из глобальной сети
Internet что обословило необходимость шифрования передаваемых данных по отрытым
каналам на основе протоколе SSL.
Web-портал предназначен для обеспечения доступа пользователей к статистической
информации по совершенным телефонным вызовам, позволяет прослушать запись
разговора, оценить качество обслуживания клиентов сотрудниками организации на основе
формируемых порталом графиков и диаграмм. С помощью портала реализуется
возможность управления учетными записями пользователей IP-АТС Asterisk, а так же
предоставляются средства для добавления новых и удаления невостребованных Sipпараметров и их значений.
В процессе выполнения дипломной работы выполнен обзор современных
технологий Web-программирования. На основе обзора для разработки портала выбрана
технология ASP.NET как наиболее современная и наиболее полно удовлетворяющая
требованиям к системам разработки Web-ориентированных корпоративных приложений.
Для выбора платформы IP-АТС произведен сравнительный анализ современных решений
для организации IP-телефонии. Выбор программного комплекса Asterisk в качестве основы
для построения IP-ATC обусловлен бесплатностью данного решения.
Для хранения и обработки информации, выполнена разработка и реализация
хранилища данных системы, которое включает базу данных и XML-файл для хранения
глобальных настроек портала. В качестве СУБД использован Microsoft SQL Server 2005.
Были
разработаны
системы
безопасности
и
разграничения
полномочий
пользователей на основе учетных записей пользователей Active Directory.
При выполнении дипломной работы была проведена интеграция Asterisk c сервером
баз данных, что позволило хранить статистическую информацию по совершенным вызовам
и регистрационную информацию пользователей IP-телефонии в таблицах базы данных для
их дальнейшей обработки средствами Web-портала.
В течение всего процесса разработки Web-портала выполнялись его отладка и
тестирование с использованием методики структурного тестирования. Особое внимание
при отладке уделялось проверке работы хранимых процедур базы данных при различных
комбинациях
входных
параметров,
а
также
проверке
реакции
пользовательской
подсистемы при задании пользователем некорректных значений.
65
На данный момент разработанная система установлена в двух организациях и
находится в режиме опытной эксплуатации.
В
дальнейшем
планируется
развивать
систему и
реализовать
следующие
возможности:
 Интегрировать в портал Asterisk Flash Operator Panel – это панель управления
отображает текущие телефонные разговоры, и позволяющая управлять ими;
 Реализация возможности формировать правил маршрутизации вызовов при
помощи наглядных графических средств;
 Разработать функционал отслеживающий состояние Asterisk в режиме реального
времени, и сохранение полученных данных в базе данных портала для дальнейшей
обработки и формирования разносторонних отчетов.
66
Список литературы
1.
Мак-Дональд М. Microsoft ASP.NET 2.0 с примерами на C# 2005 для
профессионалов: Пер. с англ. М.:ООО ”И.Д.Вильямс”, 2006, 1408с.
2.
Шеперд Д. Microsoft ASP.NET 3.5: Пер с англ. М: ЭКОМ Паблишерз, 2009, 720 с.
3.
Нейгел К., Ивьен Б. C# 2008 и платформа .NET 3.5 для профессионалов:Пер с англ.
М.:ООО “И.Д. Вильям”,2009,1392 с.
4.
Просиз Дж. Программирование для Microsoft .Net: Пер. с англ. М.: Русская
Редакция, 2003, 704 с.: ил.
5.
Грофф Дж., Вайнберг П. SQL: полное руководство: Пер. с англ. К.: Издательская
группа BHV, 2001, 800 с.: ил.
6.
Реймер С., Малкер М. Active Directory для Windows Server 2003. Справочник
администратора: Пер. с англ. М.: СП ЭКОМ, 2004, 512 с.
7.
Нильсен П. SQL Server 2005. Библия пользователя:Пер. с англ. М:ООО
“И.Д.Вильямс”, 2008, 1232 c.
8.
Уотсон К.,Нейгел К., Педерсен Х. Microsoft Visual C# 2008. Базовый курс: Пер. с
англ. М.:ООО “И.Д.Вильямс”,2009, 1216с.
9.
Дидок Д. Один на один с FreeBSD: К.:MK-Пресс, 2006, 704с., ил.
10. Ван Меггелен Д., Мадсен Л., Смит Д. Asterisk: Будущее телефонии:Пер. с англ.
СПб.:Символ-плюс,2009, 656 с., ил
11. Беллиньясо М. Разработка Web-приложений в среде ASP.NET 2.0. Задача-проектрешение:Пер. с англ. М.:ООО И.Д.Вильямс,2007, 640с., ил
12. Байер Д. Microsoft ASP.NET. Обеспечение безопасности: Пер. с англ. М.:
Издательство “Русская Редакция”, 2008, 446с., ил
13. Бучек Г. ASP.NET.Учебный курс:СПб.:Питер,2002,512с. ил.
14.
http://msdn.microsoft.com.
15.
http://www.asp.net.
16.
http://www.gotdotnet.ru.
67
Приложение 1. Инструкция по использованию системы
Работа с корпоративным порталом IP-телефонии осуществляется при помощи
интернет браузера. Доступ к порталу осуществляется по зашифрованному каналу, в связи с
чем необходимо использовать адрес вида https://адрес_домена, в противном случае
отобразится сообщение информирующее о необходимости использования протокола https.
Если доступ к порталу осуществляется в первый раз, то пользователю будет предложено
принять сертификат, на основе которого производится шифрование.
Авторизация и аутентификация пользователя в системе организовано на основе
регистрационных
данных
пользователя,
хранящихся
на
сервере
Active
Directory
предприятия.
В соответствии с ролью, к которой относится пользователь, отображается
соответствующий интерфейс. Всего существует две группы пользователей:
 Пользоваели;
 Администраторы.
Описание интерфейса пользователя
Главная страница пользователя (Рис. П1) содержит меню, отражающее основные
возможности пользователя:
 История вызовов – позволяет сформировать по определенным параметрам список
соверщенных вызовов, а так же прослушать, сохранить или комментировать необходимый
разговор или оценить его по набору критериев;
 Статистика – предлагает возможность пользователю указать необходимые
параметры, и на их основе сформировать статистическую информацию наглядном
графическом виде;
 Качество обслуживания – позволяет оценить качество работы сотрудников Callцентра.
При выборе раздела “История вызовов” отобразится окно, представленное на
рисунке П2. Для формирования истории вызовов необходимо заполнить необходимые
поля, в соответствии со значениями которых будет получена необходимая информация.
Отображаемую информацию можно детализировать как по дням, так и по часам, установив
для этого параметр “Диапазон выборки” в необходимое значение. Для указания
направления вызова используются переключатели “Исходящие вызовы” и “Входящие
вызовы”. Для указания участников разговоров используются списки выбора пользователей,
облегчающие ввод значений, либо необходимо заполнить поле ввода, указав через запятую
необходимые телефонные номера.
После задания необходимых параметров, по нажаю на кнопку “Выполнить”
отобразится список совершенных вызовов (рис П3).
68
Рисунок П1. Главное меню пользователя системы.
Рисунок П2. История вызовов.
69
Рисунок П3. Список совершенных вызово.
При выборе какого-либо элемента списка отобразится страница (рис.
П4),
предоставляющая возможность прослушать телефонный разговор, сохранить его на
локальный диск, комментировать или оценить по заданным администратором системы
критериям качества обслуживания.
70
Рисунок П4. Страниза комментариев и оценки разговора.
При открытии раздела “Статистика” отобразится интерфейс, похожий на интерфейс
раздела “История вызовов”, в котором необходимо указать необходимые параметры, и по
нажатию на кнопку “Сформировать” отобразится статистическая информация по
совершенным вызовам в виде графиков (Рис. П5).
71
Рисунок П5 . Статистика по совершенным вызовам
Описание интерфейса администратора
Главная страница администратора содержит меню содержащее как разделы
интерфейса пользователя, описанные в предыдущем разделе, так и дополнительные (Рис.
П6):

Регистрационная информация;

Системная конфигурация.
72
Рисунок П6. Главное меню администратора.
При выборе раздела “Пользователи” откроется страница, на которой отобразится
список пользователей IP-телефонии (Рис.
П7). На этой странице, при необходимости,
можно удалить пользователей системы, перейти к странице создания нового пользователя,
или перейти к странице редактирования параметров существующего пользователя, выбрав
его из списка.
73
Ресунок П7. Список пользователей IP-телефонии
При удалении регистрационной информации пользователя ему, соответственно,
прекращается доступ к системе IP-телефонии, однако все статистическая информация и
записи разговоров сохраняются в системе для возможности предоставления этих данных
при необходимости.
При выборе пользователя из списка или при создании нового пользователя
отобразится страница параметров пользователя, представленная на рисунке П8, различие
будет заключаться только в заполненности параметров учетной записи пользователя. Для
облегчения задания типовых параметров, а также для минимизации вероятности ввода
неверных значений используются предопределенные списки выбора, которые формируются
в разделе системная конфигурация.
74
Рисунок П8. Параметры пользователя IP-телефонии.
Раздел системная конфигурация позволяет создавать и удалять нобходимые
параметры и их значения, используемые в настройках учетных записей пользователей (Рис.
П9), а также управлять критериями качества обслуживанния (Рис П10).
75
Рисунок П9. Редактор SIP-параметров
Рисунок П10. Редактор критериев качества обслуживания.
76
Приложение 2. SQL-скрипт для создания базы данных
CREATE DATABASE asterisk
GO
USE asterisk
CREATE TABLE Organizations(
organizationsID INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(50) NOT NULL,
city VARCHAR(50) NOT NULL,
adress VARCHAR(255) NOT NULL,
description VARCHAR(MAX) NULL,
activitycategory VARCHAR(255) NULL)
CREATE TABLE Departmens(
departmensID INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(50) NOT NULL,
description VARCHAR(MAX))
CREATE TABLE OrgDepRef(
OrgDepID INT IDENTITY(1,1) PRIMARY KEY,
organizationsID INT REFERENCES organizations(organizationsID),
departmensID INT REFERENCES departmens(departmensID))
CREATE TABLE UsersInfo(
userID INT IDENTITY(1,1) PRIMARY KEY,
OrgDepID INT REFERENCES OrgDepRef(OrgDepID) UNIQUE,
lastname VARCHAR(50) NOT NULL,
firstname VARCHAR(50) NOT NULL,
ADUserName VARCHAR(50) NOT NULL)
CREATE TABLE ast_config(
ast_configID INT IDENTITY(1,1) PRIMARY KEY,
userID INT REFERENCES UsersInfo(userID),
name VARCHAR(50),
secret VARCHAR(50),
deleted BIT,
port INT,
lastms INT,
regserver VARCHAR(20),
ipaddr VARCHAR(16),
regseconds INT,
fullcontact VARCHAR(128),
username VARCHAR(50),
host VARCHAR(50),
[type] VARCHAR(50),
context VARCHAR(50),
canreinvite VARCHAR(50),
nat VARCHAR(50),
bindport VARCHAR(50),
bindaddr VARCHAR(50),
allow VARCHAR(50))
CREATE TABLE ParametersName(
ParametrNameID INT IDENTITY(1,1) PRIMARY KEY,
parameter VARCHAR(50) NOT NULL,
description VARCHAR(MAX))
CREATE TABLE ParametrsValue(
ParametrsValueID INT IDENTITY(1,1) PRIMARY KEY,
ParametrsNameID INT REFERENCES ParametersName(ParametrNameID),
value VARCHAR(50) NOT NULL,
description VARCHAR(MAX))
77
CREATE TABLE cdr(
cdrID INT IDENTITY(1,1) PRIMARY KEY,
calldate DATETIME,
clid VARCHAR(80),
src VARCHAR(50),
dst VARCHAR(50),
dcontext VARCHAR(80),
chanel VARCHAR(80),
dstchanel VARCHAR(80),
lastapp VARCHAR(80),
lastdata VARCHAR(80),
duration INT,
billsec INT,
disposition VARCHAR(50),
amaflags VARCHAR(50),
accountcode VARCHAR(20),
uniqueid VARCHAR(150),
userfield VARCHAR(255))
CREATE TABLE Commets(
CommentID INT IDENTITY(1,1) PRIMARY KEY,
cdrID INT REFERENCES cdr(cdrID),
userID INT REFERENCES UsersInfo(userID),
Comment VARCHAR(MAX),
CommentDate DATETIME)
CREATE TABLE QualityCriterions(
QualityCriterionID INT IDENTITY(1,1) PRIMARY KEY,
QualityCriterion VARCHAR(50) NOT NULL,
Description VARCHAR(MAX))
CREATE TABLE QualityVolumes(
QualityVolumeID INT IDENTITY(1,1) PRIMARY KEY,
QualityVolume VARCHAR(50) NOT NULL)
CREATE TABLE QualCritValRefs(
QualCritValRefID INT IDENTITY(1,1) PRIMARY KEY,
QualityCriterionID INT REFERENCES QualityCriterions(QualityCriterionID),
QualityVolumeID INT REFERENCES QualityVolumes(QualityVolumeID))
CREATE TABLE QualityValues(
QualityValue INT IDENTITY(1,1) PRIMARY KEY,
QualCritValRefID INT REFERENCES QualCritValRefs(QualCritValRefID),
cdrID INT REFERENCES cdr(cdrID),
userID INT REFERENCES UsersInfo(userID))
CREATE TABLE Permissions(
PermissionID INT IDENTITY(1,1) PRIMARY KEY,
userID INT REFERENCES UsersInfo(userID),
PageID INT NOT NULL),
EditEnable BIT)
78
Download