![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Выбор аппаратной платформы
При выборе элементов аппаратной платформы учитывались следующие технические требования: · надежность работы устройства; · открытость архитектуры устройства; · осуществление высокой безотказности работы; · наличие сервисных функций пониженного энергопотребления; · невысокая и приемлемая цена; · диапазон рабочих температур от – 40 до + 85; · возможность функционального расширения системы в результате подключения ряда дополнительных модулей. На основании выше перечисленных критериев для реализации сервера с компонентами MySQL и Apache выбран SuperServer 6015B-3R фирмы-производителя SuperMicro (США) [9, 10]. Внешний вид сервера представлен на рисунке 18, его технические характеристики приведены в таблице 3.
Рисунок 18 – Внешний вид сервера SuperServer 6015B-3R
Для реализации сервера с компонентом Asterisk выбран Supermicro SYS-5017C-TF фирмы-производителя SuperMicro (США) [9, 10]. Внешний вид сервера представлен на рисунке 19, его технические характеристики приведены в таблице 4.
Рисунок 19 – Внешний вид сервера Supermicro SYS-5017C-TF
4 РАЗРАБОТКА ПОДСИСТЕМЫ АУТЕНТИФИКАЦИИ 4.1 Разработка алгоритма процедуры аутентификации Подсистема аутентификации пользователя в системе предоставления услуг связи «Виртуальный офис» представляет собой совокупность нескольких подсистем. Сюда входит подсистема аутентификации пользователя в Личном кабинете, доступном через WWW интерфейс и подсистема аутентификации пользователя при доступе к услугам, предоставляемым посредством телефонной связи - " Корпоративный ПИН-код", " Обратный звонок". Целью дипломного проекта было модернизировать процесс аутентификации пользователя для доступа к услуге Корпоративный ПИН-код. Необходимо пояснить, какова суть данной услуги и как организован доступ к ней. Сервис " Корпоративный ПИН-код" виртуального офиса, предназначен для осуществления междугородных и международных звонков. Схема использования сервиса следующая: Пользователь осуществляет телефонный звонок на номер сервера доступа и в соответствие с подсказками автоинформатора вводит с клавиатуры телефона свой ПИН-код, представляющий комбинацию из 10 или более цифр, а потом набирает междугородный или международный телефонный номер. Считывание вводимого пользователем ПИН-кода на стороне оператора производит ПО IP АТС Asterisk. Для этих целей изначально было использовано внутреннее приложение Asterisk - Read(), однако в процессе эксплуатации были выявлены недостатки такого решения. Приложение Read() считывает в указанную переменную, вводимую пользователем, DTMF последовательность, завершенную символом '#', заданное число раз и имеет следующий формат вызова:
Read(variable[, filename[& filename2...]][, maxdigits][, option][, attempts][, timeout]) где
Очевидно, что данное приложение не имеет возможности контролировать данные в процессе ввода и принимать решение об окончании процедуры в соответствии с логикой, отличной от предопределенной. Нам требуется несколько усложнить процедуру, чтобы она соответствовала приведенным ниже критериям. 1. Для служебных ПИН-кодов, серия 0ххххххх длина ввода должна быть ограничена 8-ю цифрами; 2. Для прочих ПИН-кодов длина ввода определяется передаваемым параметром; 3. Нажатие на * в процессе набора ПИН-кода должно сопровождаться завершением работы скрипта и возвращением признака повтора набора; 4. Приложение должно обеспечивать проговаривание приветственной фразы перед вводом ПИН-кода, которое может быть прервано вводом первой цифры; 5. Приложение должно обеспечивать тайм-аут ввода цифр ПИН-кода, который задается передаваемым параметром; 6. Приложение должно интерпретировать нажатие # аналогично нажатию на *; 7. Набранный ПИН-код должен возвращаться в переменную, имя которой определяется передаваемым параметром; 8. Приложение должно обеспечить контроль вводимых знаков и интерпретировать ввод знаков, отличных от цифр и символов * и # как ошибку с завершением работы и возвратом признака ошибочности ПИН-кода. Вносимые изменения призваны снизить нагрузку на систему аутентификации (и как следствие на СУБД), отсекая очевидно неверные ПИН-коды на ранней стадии, а также повысить комфортность процедуры для пользователей путем устранения тайм-аута по окончании набора и введением возможности оперативно повторить набор в случае ошибки нажатием * или #. Как показала практика, при доставке ПИН-кода посредством DTMF сигналов, нередко возникают искажения информации, связанные как с качеством телефонных линий так и самих телефонных аппаратов. Вследствие данных искажений может происходить дублирование или выпадение вводимых цифр, появление в ПИН-коде кодов A, B, C, D, которые также могут быть кодированы DTMF. В общем случае коды A, B, C, D не могут быть введены с клавиатуры телефонного аппарата, однако могут появляться вследствие ошибок программирования офисных АТС, ошибок детектирования DTMF на фоне помех или низкого качества генераторов DTMF отдельных телефонных аппаратов. Решением указанных проблем стала разработка альтернативной процедуры ввода ПИН-кода и реализация программы на языке Perl. Взаимодействие программы с Asterisk должно происходить посредством интерфейса AGI. Результатом явилась представленная ниже блок - схема алгоритма работы альтернативной процедуры ввода ПИН-кода (рис. 20). Как видно из схемы, программа начинается проигрыванием звукового файла, путь к которому передан в переменной ARGV[0]. Далее в блоке 3, происходит ввод первого символа ПИН-кода и признака возникновения тайм-аута в переменные result и to соответственно. Блоки 4-7 осуществляют анализ введенных значений на допустимость. Блок 4 призван выявить ситуацию, в которой ничего не было набрано, и просто была нажата #. В этом случае программа завершается с передачей кода 2 (признак необходимости повтора ввода) в переменную, имя которой передано через ARGV[4] (блок 8). Блок 5 выявляет наступление тайм аута при отсутствии введенной информации. В этом случае программа завершается с передачей кода 1 (ничего не набрано к истечению тайм-аута) в переменную, имя которой передано через ARGV[4] (блок 9). Блок 6 анализирует наличие нажатия *. Реакция программы в этом случае аналогична реакции на нажатие # в блоке 4 (блок 10). Блок 7 выявляет возможное появление в ПИН-коде символов A, B, C, D. В этом случае программа завершается с передачей кода 3 (признак ошибочности ПИН-кода) в переменную, имя которой передано через ARGV[4] (блок 11). Блок 12 устанавливает в переменной count количество введенных символов = 1. Рисунок 20 - Схема алгоритма работы альтернативной процедуры В пояснении нуждается тот факт, что первый введенный символ анализируется отдельно от последующих. Дело в том, что ввод первого символа и всех остальных производится разными средствами. Для ввода первого символа применен вызов процедуры GET DATA интерфейса AGI, которая позволяет одновременно проигрывать указанный звуковой файл. Последующие символы вводятся и анализируются в цикле при помощи процедуры WAIT FOR DIGIT, ценность которой состоит в том, что символ # для нее не является признаком окончания ввода и может быть получен в качестве результата наряду с остальными. Блок 13 является проверкой условия вечного цикла, в котором производится ввод остальных знаков ПИН-кода. Блок 14 вводит второй и все последующие символы ПИН-кода в переменную digit. Блок 15 анализирует наступление тайм-аута в процессе ввода. В этом случае блоком 23 устанавливается признак ошибочности ПИН-кода в переменной, имя которой передано через ARGV[4] и программа завершается. Блок 16 увеличивает количество введенных символов на 1. Блок 17 проверяет введенный символ на соответствие * или #. В случае положительного результата сравнения программа завершается с передачей кода 2 (признак необходимости повтора ввода) в переменную, имя которой передано через ARGV[4] (блок 24). Блок 18 выявляет возможное появление в ПИН-коде символов A, B, C, D. В этом случае программа завершается с передачей кода 3 (признак ошибочности ПИН-кода) в переменную, имя которой передано через ARGV[4] (блок 25). Блок 19 добавляет очередной введенный символ к ПИН-коду. Блок 20 Проверяет ПИН-код на соответствие техническим. Если ПИН-код начинается с 0 и его длина достигла 8-и цифр, программа считает, что введен технический ПИН-код. Вслед за этим блоком 22 в переменной, имя которой передано через ARGV[3], устанавливается окончательное значение ПИН-кода, а в переменной, имя которой передано через ARGV[4] устанавливается признак успешной операции и программа завершается. Если ПИН-код в блоке 20 не признан техническим, происходит проверка его текущей длины на соответствие величине, переданной через ARGV[2]. Если необходимая длина достигнута, блоком 22 в переменной, имя которой передано через ARGV[3], устанавливается окончательное значение ПИН-кода, а в переменной, имя которой передано через ARGV[4] устанавливается признак успешной операции и программа завершается. В противном случае программа возвращается к началу вечного цикла и производит ввод очередного символа блоком 14. Текст программы на языке Perl, соответствующий описанному выше алгоритму, приведен в Приложении 1.
5 Расчет цены системы предоставления услуг связи «Виртуальный офис»
|