Технология Веб-ИРБИС
Технология Веб-ИРБИС служит для создания Веб-приложений для работы с базами данных ИРБИС.
Данная технология реализована в виде одноимённого программного продукта – Веб-ИРБИС.
Содержание
Веб-шлюз ИРБИС
Программный модуль Веб-шлюз ИРБИС обеспечивает обработку клиентских запросов.
Веб-шлюз ИРБИС является шлюзом CGI.
Запрос может осуществляться по методу POST или GET.
Общая схема работы Веб-шлюза ИРБИС
Последовательность операций шлюза:
- Чтение параметров INI файла
- Препроцессинг
- Формальный контроль правильности параметров
- Интерпретация поискового запроса
- Авторизация
- Выполнение скрипта защиты
- Повторная авторизация
- Выполнение поиска
- Формирование ответа (объединение и обработка фреймов)
- Определение HTTP заголовков на основе INI файла
- Возврат ответа
В случае возникновения ошибки выполнения или превышения времени обработки запроса шлюз возвращает ошибку (error.html).
Препроцессинг
Скрипт-защита
Формат скрипта защиты выполняет две функции: 1) проверку поступивших параметров запроса и защиту от взлома 2) обработку и дополнение параметров.
Первая строка, сформированная форматом срипт-защиты, определяет общий результат – если это 0 или файлом не было возвращено никаких значений – скрипт-защита определила ошибку, если результат 1 или файлом были возвращены другие ненулевые значения – ошибки нет. В первом случае шлюз возвращает error.html, в последнем случае шлюз читает остальные строки формата и изменяет параметры запроса на новые.
Например, строка ‘SCRIPT_DONE=YES’/ задаёт параметру SCRIPT_DONE значение YES.
Авторизация пользователя
Авторизация даёт возможность заказывать литературу, просматривать формуляр и редактировать корзину заказов.
Для авторизации используется база RDR. Авторизация происходит по идентификатору и, если в пользовательском запросе задан параметр Z21FLAGID=1, – по фамилии. После авторизации шлюз выполняет шифрование идентификатора, и зашифрованный идентификатор передаётся при переходе по страницам.
Инициализация параметров
После поступления клиентского запроса осуществляется инициализация параметров веб-шлюза на основе параметров CGI.
Обрабатываемый шлюзом набор параметров определяется конфигурационным файлом Веб-шлюза ИРБИС.
Эти параметры доступны в контексте фреймов.
Параметры используются, в том числе, для отслеживания состояния веб-страницы. В ответ на HTTP-запрос клиента (обычно – в генерируемую html-страницу, передаваемую клиенту) может включить набор пользовательских параметров вместе с их значениями, полученными в запросе, для чего есть специальная команда.
Отслеживание состояния осуществляется с использованием следующих этапов: 1) данные передаются на веб-шлюз в виде параметров запроса; 2) веб-шлюз передаёт данные вместе со сформированной страницей в скрытых полях форм HTML.
Выполнение команды
Затем шлюз переходит к выполнению команды. Команда соответствует переданному параметру C21COM.
В контексте выполнения команды используются полученные параметры.
Для каждой команды есть набор основных параметров, логика использования которых предопределена самим веб-шлюзом.
К основным параметрам шлюза относятся:
- C21COM – команда, которую должен выполнить веб-шлюз.
- I21DBN – имя профиля. Веб-шлюз ИРБИС в соответствии с именем профиля определяет набор фреймов, из которых составит ответ клиенту. Веб-шлюз ИРБИС ищет названия фреймов в файле irbis_server.ini в секции, название которой соответствует значению параметра I21DBN (подробнее в разделе Роль фреймов в работе веб-шлюза ИРБИС).
- P21DBN – имя базы данных.
- Z21ID – значение параметра авторизации.
Кроме основных, есть пользовательские параметры – все остальные параметры.
Особенность пользовательских параметров в том, что их набор и использование полностью могут быть определены (переопределены) пользователями системы ИРБИС:
- Определение параметров даётся в конфигурационном файле Веб-шлюза ИРБИС.
- Параметры доступны в виде виртуальных полей на языке форматирования в контексте фреймов.
Ответ веб-шлюза ИРБИС клиенту
Порядок формирования ответа веб-шлюза ИРБИС клиенту зависит от команды.
Ответ с использованием фреймов
Для команд, представленных в таблице, осуществляется генерация ответа с использованием технологии выбора и обработки фреймов.
Обычно это динамически формируемая веб-страница.
Таблица. Команды веб-шлюза ИРБИС.
|
Выбор набора фреймов зависит от: команды (параметр C21COM) и профиля (параметр I21DBN).
Возможные наборы фреймов предварительно сконфигурированы и указаны в конфигурационном файле irbis_server.ini.
Откуда шлюз и считывает нужный набор, в зависимости от параметров (C21COM и I21DBN).
Каждой команде веб-шлюза ИРБИС соответствует имя параметра в файле irbis_server.ini (см. таблицу Команды веб-шлюза ИРБИС).
Отправка клиенту ресурсного файла
Для команд, представленных в таблице, отправка клиенту ресурсного файла.
Таблица. Команды веб-шлюза ИРБИС.
|
Команда показа терминов словаря – T
Пример команды показа терминов словаря
http://localhost:8080/cgi-bin/irbis64r_15_plus/cgiirbis_64_ft.exe?Z21ID=1500323880383212&SEARCH_IN_FULL_TEXT=1&T21CNR=10&C21COM=T&T21PRF=KT=&I21DBN=IBIS&T21TRM=a&
где:
- C21COM=T определяет команду,
- I21DBN=IBIS базу данных,
- Z21ID=1500323880383212 идентификатор читателя в зашифрованном виде,
- T21PRF=KT= префикс словаря,
- T21TRM=a – требование терминов, начинающихся на a.
Пример возврата:
A20040830ARUSY|1 A20041017ABELY|1 A20041118ARUSY|1 A2H|2 A540|9 A54001|7 A550UTILIZATION|1 AACDEMY|1 AASL|2 AASLPUBSANDJOURNALS|2
Добавление пользовательского параметра
Добавление пользовательского параметра осуществляется в несколько шагов:
- добавление пользовательского параметра в файл инициализации шлюза irbis_server.ini
- Необходимо добавить описание нового пользовательского параметра в настроечный файл irbis_server.ini, задав имя и метку параметра. Для этого в секции [PARAMETRS] используются параметры ini файла PARNAME_ и PARTAG_ (не стоит путать термины пользовательские параметры веб-шлюза и параметры ini файла), где вместо знака подчёркивания ставится номер пользовательского параметра по порядку, например:
PARNAME2=C21COM PARTAG2=2222
- В этом примере мы видим описание второго по порядку из определённых в секции [PARAMETRS] параметров: имя параметра C21COM, метка параметра 2222. Имя и метка параметров должны быть уникальными. После того как описание пользовательского параметра добавлено необходимо изменить значение параметра PARCOUNT в секции [PARAMETRS], его значение должно быть равно порядковому номеру последнего описания пользовательского параметра.
- Примечание: обратите внимание, что в файле irbis_server.ini хранятся описания не только пользовательских параметров, а присутствует также описания предустановленных параметров.
- использование в файлах .frm команд <!FORMAT=INSERT_ALL_PARAMETERS> и <!FORMAT=INSERT_ALL_PARAMETERS_IN_QUERY>
- Команда <!FORMAT=INSERT_ALL_PARAMETERS> обеспечивает вставку в код HTML-страницы всех непустых переданных веб-шлюзу параметров в виде скрытых элементов формы, например:
<input type="hidden" name="PARAM_NAME" value="PARAM_VALUE">
- Команда <!FORMAT=INSERT_ALL_PARAMETERS_IN_QUERY> вставляет в код HTML-страницы гиперссылку, содержащую все переданные веб-шлюзу параметры.
Система команд Веб-шлюза ИРБИС
Система команд Веб-шлюза ИРБИС позволяет задать собственный набор фреймов и порядок их объединения для каждой задачи. Для разных задач предусмотрены разные команды, например: для страницы приглашения к поиску, результата поиска, отбора записей в корзину заказов и т.д.
Обработка фреймов
В общем случае, веб-страница формируется путём объединения (склеивания) следующих частей:
- заголовочной и подвальной частей, формируемых при помощи фреймов и
- тела страницы, формируемого при помощи формата, который отрабатывает на наборе записей базы данных (соответствующих запросу пользователя).
Фрейм как язык разметки
Фрейм представляет собой текстовый файл, содержимое которого передаётся клиенту (в веб браузер), который также может содержать вставки, которые будут обработаны определённым образом перед передачей клиенту.
Предусмотрены вставки следующих видов:
- вставка на языке форматирования ИРБИС,
- вложенный фрейм.
Вставка на языке форматирования обозначается следующим образом
<!FORMAT
Пример:
<!FORMAT=if v3409='' then 'value=""' else 'value=','"',v3409,'"',fi>
Если вставка на языке форматирования содержит символы, кодирующиеся в UTF-8 более чем одним байтом (например, кириллицу), то формат обязательно должен начинаться с восклицательного знака. Это связано с тем, что формат в кодировке UTF-8 должен предваряться восклицательным знаком, а все фреймы храняться именно в кодировке UTF-8.
Пример:
<!FORMAT=!if (v3400='') then if (val(v1001) > 1) then '<tr><td></td><td><input name="SEARCHIN" type="checkbox"><span style="padding-left : 10px;padding-right : 10px;vertical-align : 15%;font-size:13px;font-family:sans-serif;">в найденном</span></td></tr>' else '<input type="hidden" name="SEARCHIN" value="">' fi else '<input type="hidden" name="SEARCHIN" value="">' fi>
Пример вложенного фрейма:
<!FORMAT=if &uf('IMAIN,SHOW_DUBLIN_CORE,0') <> '0' then /'<!FILE=Dublin_Core.frm>' fi>
Пример последовательности действий Веб-шлюза ИРБИС при формировании веб-страницы в ответ на запрос
Веб-шлюз ИРБИС при получении команд F, S, T, Z, R выполняет следующую последовательность действий:
- Веб-шлюз получил запрос. Запрос содержит параметры C21COM, I21DBN и другие.
- В файле irbis_server.ini веб-шлюз находит секцию, имя которой соответствует значению параметра I21DBN. Иными словами: с одной стороны, в качестве значения параметра I21DBN указывается имя профиля, с другой стороны, для каждого профиля в файле irbis_server.ini должна содержаться секция, имя которой совпадает с именем профиля.
- В указанной секции файла irbis_server.ini веб-шлюз находит значение параметра, соответствующего указанной в параметре C21COM команде (см. таблицу Команды веб-шлюза ИРБИС). Полученное значение должно представлять собой список фреймов.
- Фреймы обрабатываются, и результат, представляющий собой HTML-страницу, отправляется клиенту в качестве ответа.
Примеры перехода пользователя по страницам Веб-ИРБИС
Пример запроса начальной страницы:
http://localhost:8080/cgi-bin/irbis64r_15_plus/cgiirbis_64_ft.exe?C21COM=F&I21DBN=IBIS_FULLTEXT&P21DBN=IBIS&Z21ID=&S21CNR=5
где указаны:
- команда шлюза F (показ страницы)
- имя профиля IBIS_FULLTEXT
- база данных IBIS
- авторизация не осуществлялась
Параметр S21CNR не обязателен.
При авторизации запрос приобретает следующий вид
http://localhost:8080/cgi-bin/irbis64r_15_plus/cgiirbis_64_ft.exe?I21DBN=AUTHOR&C21COM=F&P21DBN=IBIS&Z21FLAGID=1&Z21FAMILY=%D0%B1%D1%80%D0%BE%D0%B4%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D0%B9&Z21ID=111
где указаны:
- команда шлюза F (показ страницы)
- имя профиля AUTHOR
- база данных IBIS
- параметры авторизации: Z21FLAGID, фамилия читателя Z21FAMILY и идентификатор читателя Z21ID
При поиске по слову "библиотека" запрос приобретает следующий вид
http://localhost:8080/cgi-bin/irbis64r_15_plus/cgiirbis_64_ft.exe?Z21ID=1704320195313012&I21DBN=IBIS_fulltext&SEARCH_STRING=%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0&FT_REQUEST=&FT_S21STR=%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0&SEARCHIN=&USES21ALL=1&FT_PARAMS=&FT_DISTANCE=&S21CNR=5&C21COM1=%D0%98%D1%81%D0%BA%D0%B0%D1%82%D1%8C&FT_RESTRICT=&AVT_S21STR=&AVT_S21P03=A%3D&AVT_S21P02=1&AVT_S21LOG=1&NAME_S21STR=&NAME_S21P03=T%3D&NAME_S21P02=1&NAME_S21LOG=1&UDC_S21STR=&UDC_S21P03=U%3D&UDC_S21P02=0&UDC_S21LOG=1&IZD_S21STR=&IZD_S21P03=M%3D&IZD_S21P02=1&IZD_S21LOG=1&DAT_S21P06=&DAT_S21P07=&DAT_S21P03=G%3D&DAT_S21P02=1&DAT_S21LOG=5&P21DBN=IBIS&FT_S21LOG=4&FT_S21P03=K%3D&FT_S21P01=3&S21STN=1&S21REF=10&S21FMT=briefHTML_ft&C21COM=S&S21COLORTERMS=1&FT_PREFIX=KT%3D
где указаны:
- команда шлюза S (поиск)
- имя профиля IBIS_FULLTEXT
- база данных IBIS
- параметры авторизации: Z21ID
- текущий запрос SEARCH_STRING и предыдущий запрос FT_S21STR (одинаковые)
- USES21ALL=1 (использовать параметр S21ALL, применяется в поиске связных)
- S21CNR=5 (порция при показе найденных)
- S21REF=10 (для правильного формирования ссылок на страницы с результатами поиска)
- C21COM1
- FT_PREFIX
- S21FMT=briefHTML_ft
- AVT_S21P03=A%3D
- AVT_S21P02=1
- AVT_S21LOG=1
- NAME_S21P03=T%3D
- NAME_S21P02=1
- NAME_S21LOG=1
- UDC_S21P03=U%3D
- UDC_S21P02=0
- UDC_S21LOG=1
- IZD_S21P03=M%3D
- IZD_S21P02=1
- IZD_S21LOG=1
- DAT_S21P03=G%3D
- DAT_S21P02=1
- DAT_S21LOG=5
- P21DBN=IBIS
- FT_S21LOG=4
- FT_S21P03=K%3D
- FT_S21P01=3
- S21STN=1
- S21COLORTERMS=1
Ссылки
См. также: