Шаблоны форм запросов – это инструмент создания запросов, которые должны автоматически выполняться. Запрос представляет собой сообщение с точно определенными полями и строковыми переменными.

Запросы могут отправляться пользователем, имеющем в своем распоряжении The Bat! и шаблоны форм (файлы с расширением .TBC). Такого пользователя назовем клиент. Перед отправлением запроса The Bat! просит пользователя заполнить форму, которая выглядит как обычная форма в Интернет. Программа, выполняющая пользовательский запрос, называется сервером. The Bat! преобразует данные, введенные клиентом в почтовое сообщение, шифрует его и подписывает цифровой подписью. Это сообщение посылается на сервер по электронной почте. Адрес сервера определяется в шаблоне формы. Система, организующая взаимодействие клиента и сервера посредством запросов и ответов называется The Bat! ClientServer. 

Эта система предназначена для безопасного удаленного доступа к данным и управления данными в режиме offline. Задачи, решаемые системой, – это управление банковскими счетами, бронирование билетов и мест в гостинице и т. д. Для обеспечения безопасности транзакций используется шифрование и цифровые ключи (алгоритмы RSA/IDEA/MD5), определенные в RFC1991. Программное обеспечение сервера зависит от его задач: Интернет-магазины, банки и агентства по продаже билетов могут применять различные типы серверного программного обеспечения, но клиент, используя The Bat!, может пользоваться всеми этими услугами.

Для обеспечения правильности выполнения транзакций формат полей запроса должен быть одинаковым как на клиентской, так и на серверной частях. Так как сервер обычно работает более чем с одним клиентом, шаблоны форм (TBC-файлы) создаются на сервере, подписываются и посылаются клиентам перед началом любых транзакций между клиентом и сервером. По мере проведения транзакций, сервер может начать предоставлять новые виды услуг – для этого ему необходимо разослать клиентам обновленные версии шаблонов форм, позволяющие пользоваться этими услугами. Получив шаблон и проверив соответствие его цифровой подписи, клиент добавляет его в свой список.

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

Формат шаблонов форм запросов

Шаблоны форм хранятся в текстовых файлах с расширением *.TBC. Содержимое файла подписано электронной подписью. Шаблоны форм (TBC-файлы) обычно создаются на сервере, подписываются и рассылаются клиентам перед началом транзакций. После получения шаблона проверки соответствия цифровой подписи клиент добавляет ее в список шаблонов командой главного меню Свойства (Options) | Шаблоны форм запросов (Submission Forms).

Шаблон описывает свойства экранной формы, которая заполняется клиентом, атрибуты почтового сообщения, в котором будет послан запрос, и переменные запроса. Каждая строка шаблона формы может включать одно ключевое слово с одним или несколькими параметрами. Строки, начинающиеся символом «;», считаются комментариями.

Свойства окна и сообщения

Ключевое слово MSG предназначено для описания свойств окна и атрибутов сообщения, остальные ключевые слова используются для «набивки» формы. Ключевое слово MSG может иметь следующие параметры:

  • FORMTITLE (заголовок окна формы запроса, строковое значение);
  • FORMWIDTH (ширина окна; числовое значение);
  • FORMHEIGHT(высота окна; числовое значение);
  • AREAWIDTH (ширина области ввода внутри окна; числовое значение);
  • AREAHEIGHT (высота области ввода внутри окна);
  • TO (электронный адрес сервера для отправки сообщения; строковое значение);
  • SUBJ (Поле Subject сообщения; строковое значение);
  • PRIORITY (поле Priority сообщения; строковое значение);
  • ENCRYPT (зашифровать сообщение перед отправкой; логическое значение: ON или OFF);
  • SIGN (подписать сообщение перед отправкой; ON или OFF).

Содержимое запроса

Данные, занесенные пользователем в поля экранной формы, представляют собой содержимое запроса. Как только пользователь нажал OK, The Bat! поместит содержимое запроса в тело сообщения и, если это указано в шаблоне, подпишет сообщение цифровой подписью и/или зашифрует, после чего отправит его по электронной почте на сервер (электронный адрес сервера тоже указан в шаблоне). Тело сообщения выглядит как одна строка неограниченной длины, содержащая строковые переменные. Переменные отделяются друг от друга символом «&». Имена переменных описаны в шаблоне, значения переменных берутся из полей экранной формы, заполненной клиентом. В строке запроса, передаваемой серверу в теле сообщения, имя переменной отделяется от ее значения символом «=». Предположим, запрос содержит две переменные с именами servicetype и accountnumber; переменная servicetype содержит значение «getaccountlog»; а переменная accountnumber – значение «849780094», в этом случае телом сообщения будет являться следующая строка:

servicetype=getaccountlog&accountnumber=849780094.

Такой способ формирования строки запроса является совместимым с RFC1866, тип application/x-www-formurl-encoded).

Имена и значения переменных могут содержать любые символы, но определенные символы должны заменяться по следующим правилам: пробельный символ заменяется на символ «+», все остальные символы, кроме цифр и букв, заменяются на «%HH» (символ «процент» и две шестнадцатеричные цифры, представляющие ASCII-код заменяемого символа).

Обзор элементов формы

Экранная форма может содержать такие графические элементы, как строки ввода, списки, переключатели, метки и кнопки. Все эти элементы описываются в шаблоне с помощью ключевых слов: EDIT (однострочное окно ввода), MEMO (многострочное окно ввода), CHECKBOX (переключатель), LISTBOX (список заранее определенных строк, одна или несколько из которых могут быть выбранными), COMBOBOX (выпадающий список строк). Кроме того, имеется специальная «невидимый» элемент HIDDEN (пользователь не может изменить значение переменной, образуемой этим элементом), а также видимый элемент LABEL, который не образует переменной и используется как метка, текст которой выводится на экране. Для управления формой имеются элементы SUBMIT (кнопка, при нажатии которой происходит отправка формы) и CANCEL (кнопка отмены).

Обзор параметров элементов

Графические элементы могут иметь следующие параметры: X, Y (координаты верхнего левого угла элемента в пределах окна; координаты увеличиваются сверху вниз, слева направо), WIDTH, HEIGHT (ширина/высота элемента; у всех элементов ширина и/или высота либо задана по умолчанию, либо вычисляется в зависимости от размеров шрифта, поэтому эти два параметра могут быть опущены), NAME, VALUE (имя переменной и значение переменной по умолчанию; для всех элементов, кроме LABEL, SUBMIT и CANCEL). Кроме того, элемент EDIT может иметь параметр MASK (форматированный ввод), элементы LISTBOX и COMBOBOX – параметр ITEM (элемент списка), а элементы LABEL, CHECKBOX, SUBMIT и CANCEL – параметр CAPTION (над пись). Для элемента LABEL допустимы параметры FOCUSNAME (имя элемента, к которому привязан LABEL; при щелчке мыши в области элемента LABEL или нажатии горячей клавиши курсор, или фокус ввода, будет перенесен на элемент, к которому привязан LABEL); JUSTIFY (выравнивание текста по центру или левому/правому краю); SHOWACCEL (использовать ли символ «&» как маркер горячей клавиши).

EDIT – Однострочное окно ввода. Обязательные параметры: X, Y, NAME; допустимые параметры: WIDTH, HEIGHT, VALUE, MASK.

MEMO – Многострочное окно ввода. Обязательные параметры: X, Y, NAME; допустимые параметры: WIDTH, HEIGHT, VALUE.

CHECKBOX – Переключатель. Обязательные параметры: X, Y, NAME; допустимые параметры: WIDTH, HEIGHT, VALUE.

LISTBOX – Список заранее определенных строк, одна или несколько из которых могут быть выбранными. Обязательные параметры: X, Y, NAME; допустимые параметры: ITEM, WIDTH, HEIGHT.

COMBOBOX – Выпадающий список строк. Обязательные параметры: X, Y, NAME; допустимые параметры: ITEM , WIDTH, HEIGHT.

HIDDEN – «Невидимый» элемент, образующий переменную. Обязательные параметры: NAME, VALUE.

LABEL – Метка. Обязательные параметры: X, Y, CAPTION; допустимые параметры: WIDTH, HEIGHT, FOCUSNAME, JUSTIFY, SHOWACCEL.

SUBMIT – Кнопка, при нажатии которой происходит отправка формы. Обязательные параметры: X, Y; допустимые параметры:, WIDTH, HEIGHT, CAPTION.

CANCEL – Кнопка отмены. Обязательные параметры: X, Y; допустимые параметры:, WIDTH, HEIGHT, CAPTION.

Перечень параметров элементов

X – Горизонтальная координата левого края элемента в пределах окна; координаты увеличиваются слева направо. Является обязательным параметром для всех видимых элементов: EDIT, MEMO, CHECKBOX, LISTBOX, COMBO BOX, LABEL, SUBMIT, CANCEL, то есть во всех, кроме HIDDEN. Числовое значение.

Y – Вертикальная координата верхнего края элемента в пределах окна; координаты увеличиваются сверху вниз. Является обязательным параметром для всех видимых элементов: EDIT, MEMO, CHECKBOX, LISTBOX, COMBO BOX, LABEL, SUBMIT, CANCEL, то есть во всех, кроме HIDDEN. Числовое значение.

WIDTH – Ширина элемента. Ширина всех видимых элементов уже задана по умолчанию, поэтому этот параметр может быть опущен. Применяется во всех видимых элементах: EDIT, MEMO, CHECKBOX, LISTBOX, COMBOBOX, LABEL, SUBMIT, CANCEL, то есть во всех, кроме HIDDEN. Числовое значение.

HEIGHT – Высота элемента. Высота многострочных видимых элементов (LISTBOX, MEMO) уже задана по умолчанию. Высота однострочных элементов (EDIT, LABEL, CHECKBOX) вычисляется в соответствии с размером шрифта. Применяется во всех видимых элементах: EDIT, MEMO, CHECKBOX, LISTBOX, COMBOBOX, LABEL, SUBMIT, CANCEL, то есть во всех, кроме HIDDEN. Числовое значение.

NAME – Имя переменной. Является обязательным параметром для всех элементов, которые формируют переменные: EDIT, MEMO, CHECKBOX, LISTBOX, COMBOBOX. Строковое значение.

VALUE – Значение переменной по умолчанию. Является обязательным параметром для элемента HIDDEN, применяется также в EDIT, MEMO и CHECKBOX. Строковое значение.

CAPTION – Надпись. Является обязательным параметром для элементов LABEL и CHECKBOX, применяется также в SUBMIT и CANCEL. Строковое значение.

FOCUSNAME – Имя элемента, который необходимо сфокусировать. Может использоваться только как параметр ключевого слова LABEL. Значением параметра является имя элемента, к которому будет привязан LABEL. При щелчке мышки в области элемента LABEL или нажатии горячей клавиши курсор, или фокус ввода, будет перенесен на элемент, имя которого указано в качестве значения. Строковое значение.

JUSTIFY – Выравнивание текста надписи. Может использоваться только как параметр ключевого слова LABEL. Допустимые значения: LEFT (выравнивать по левому краю), RIGHT (выравнивать по правому краю), CENTER (выравнивать по центру).

SHOWACCEL – Использовать ли символ «&» как маркер горячей клавиши. Может использоваться только как параметр ключевого слова LABEL. Допустимые значения – ON или OFF.

Ниже приведено содержимое типичного TBC-файла, который используется для получения сводки курсов валют на определенный период. Экранная форма содержит выпадающий список для выбора наименования валюты (COMBOBOX) и два поля ввода дат (EDIT).

——BEGIN PGP SIGNED MESSAGE——
MSG FORMTITLE=»Currency Rate Request»
MSG TO=»Client-Bank »
MSG SUBJ=»Client-Bank»
MSG PRIORITY=»High»
MSG FORMWIDTH=260
MSG FORMHEIGHT=190
MSG ENCRYPT=ON
MSG SIGN=ON
HIDDEN NAME=»service» VALUE=»getcurrencytrend»

LABEL CAPTION=»&Currency» X=16 Y=8 FOCUSNAME=»iso»
COMBOBOX NAME=»iso» X=16 Y=24 WIDTH=120
COMBOBOX NAME=»iso» ITEM=»MDL»,»Moldavian Leu»
COMBOBOX NAME=»iso» ITEM=»USD»,»US Dollar»
COMBOBOX NAME=»iso» ITEM=»RUR»,»Russian Rouble»
COMBOBOX NAME=»iso» ITEM=»UAH»,»Ukrainean Hr.»
COMBOBOX NAME=»iso» ITEM=»FIM»,»Finnish Mark»
COMBOBOX NAME=»iso» ITEM=»DEM»,»Deutche Mark»
COMBOBOX NAME=»iso» ITEM=»GBP»,»GB Pound»
LABEL CAPTION=»&Starting Date» X=154 Y=8 FOCUSNAME=»date1″
EDIT NAME=»date1″ X=154 Y=24
EDIT NAME=»date1″ MASK=»00/00/0000″ VALUE=»01011996″
LABEL CAPTION=»&Ending Date» X=154 Y=52 FOCUSNAME=»date2″
EDIT NAME=»date2″ X=154 Y=68
EDIT NAME=»date2″ MASK=»00/00/0000″ VALUE=»01011999″
SUBMIT CAPTION=»OK» X=60 Y=112
CANCEL CAPTION=»Cancel» X=154 Y=112

——BEGIN PGP SIGNATURE——
iQDVAwUANfjoiRQeqwtQAYtzAQHkIQX+JhO61HCBfVw5VF3KqQhpApmOPhk2gEKz
C7qkNwpx7lexjbZvTVNGNfxTk7cTx5AxSFiUV32JH9WPm9fuJ5bXIfWojDnaYbi
OMBqS2KykFyoiuy+KULji10oRTt1jdC0Yqyv+OMgo2RuMwI0QhUozpHlVvkEHkk
r3acZ3NVIjBZHdW0I4YCjA3FKxBQmoFsQg9ndjeE2lHZTCtLK2Kue036PeSCJq1
JWwVgWwT0JfhfFMXjj5tZm7pspNaGLst
=FBRX
——END PGP SIGNATURE——

Когда клиент щелкнет по кнопке «OK», The Bat! сгенерирует следующую строку запроса:

service=getcurrencytrend&iso=USD&date1=01011996&date2=01011999.

Так как значения параметров ENCRYPT и SIGN ключевого слова MSG установлены в ON, эта строка будет подписана перед отправлением на сервер по средством электронной почты (по адресу [email protected]). Тело сообщения будет выглядеть подобным образом:

——BEGIN PGP MESSAGE——hMwDFB6rC1ABi3MBBgBuPwdXPA/obgJJ/fcjDSqO7oh820EHlKpA5mzbYSwgqWg wYvNOiJq4mofSfUnwozK3S5dD4zSeNcEqzQzw3ZZpE5D8aLOlNRAKlRh2ZIfN4W 6pmLJrhcXGvsH667YUfL97r8LCWbaBtYI8D85ZluPSNGzt8AIgjIEZLKaAcq6yD eYpO5GpxvvDvT8Vb80QnUZW5kTX9MGFg+gtUGqcb3f3dibyewWZfjndhkjj4Br4I QLQ5v0mjx76lqxhbi5qmAAABM3PfOx1lpLE7VkHCTuQSPsm09a69rjQqgKimOPxj hcH8wKXAi2FYDQ8wY8iszRZ9IeDHJtqOsdr0vUltT0Mj0jGvWi1Jb/jFOZ0jW2J k1uFMo5Dy/gaGQjjCIZvRT2dWy7CQ67vnegTi2zsvMAPM6/Bz7qTA6lsMMY88E9p 4qDlcN6OZIlY8DGaExcIDpoZwPChgIQfA55VQyNfN5YKzfBxCmtqSWbbLFh7WnkR 8FBLi9E8rPGg2jmzfAn1CczYnlfXinHtuAKmxmt3m3bOyNv5SGmMz+9WWhWIBH8Q XIBXrfH2yDDldKwkyj0tsjeXs6LFS7DkMCdBNM1FClWw1EftTBbdwL0ykDX9Z6f NS6fQxYJxGrfAMp7hSaGydrenSKEviAy5o6HyjBxoCqQLGKdsWQ= =wflO ——END PGP MESSAGE——

Получив сообщение, сервер расшифрует его, проверит подлинность подписи, извлечет строку запроса, разберет ее и отправит текущий курс валют обратно пользователю.