Обработка запросов в рамках Сессий и вне Сессий
Обычные серверы по протоколу HTTP являются независимыми от состояния обработчиками: браузер пользователя может отправлять несколько последовательных запросов, но сервер HTTP не сохраняет между запросами информацию о браузере или клиенте. Каждый запрос обрабатывается индивидуально.
Сервер Веб Приложений позволяет пользователям "войти" на сервер, задав имя Пользователя CommuniGate Pro и пароль пользователя. После каждого успешного входа, начинается Сессия. Сессия хранит информацию о запросах и действиях пользователя, так что все запросы HTTP, отправляемый в рамках одной сессии, используют один и тот же набор данных сессии. Для того, чтобы запросы обслуживались в сессии, они должны иметь следующий вид: - http://hostname:serverport/Session/sessionID/sessionRequest
где строка sessionID идентифицирует сессию, а имя sessionRequest является именем файла, которые необходимо получить, или именем компонента приложения, которое необходимо выполнить. Сессии Веб Приложений имеют счётчики времени. Если в рамках сессии не было отправлено никакого HTTP запроса в течение определённого интервала времени, то Сессия закрывается. Пользователь, работающий в сессии, может закрыть сессию, отправив запрос на специальную страницу Bye.
Виды Интерфейса
В Веб Интерфейсе Пользователя Сервера реализована возможность по изменению Вида Интерфейса. Каждый Вид Интерфейса является набором файлов, которые определяют, в каком виде пользователям будет представляться информация. Файлы Вида Интерфейса включают в себя:
- файлы WSSP, используемые для построения "веб страниц" (HTML, WML и т.п.) и форматирования данных на страницах.
- статические служебные файлы - графические элементы, стили и т.д.
- Языковые файлы, в которых содержатся различные статические текстовые строки (сообщения, заголовки страниц и названия кнопок, теги и т.д.), на которые ссылаются файлы WSSP.
Программное обеспечение CommuniGate Pro поставляется со стандартным Безымянным Видом Интерфейса, обеспечивающим простые, функциональные HTML интерфейсы. В поставке имеются также несколько визуально более насыщенных стандартных Именованных Видов Интерфейса. Эти Стандартные Виды Интерфейса хранятся в директории программ, являются частью программного обеспечения, и администраторы системы не должны их изменять.
В CommuniGate Pro могут также использоваться Безымянные и Именованные пользовательские Виды Интерфейса. Пользовательские Виды Интерфейса могут создаваться как общесерверные. Эти Пользовательские Виды Интерфейса доступны всем пользователям. Каждый Домен CommuniGate Pro также имеет свой собственный набор пользовательских Видов Интерфейсов, доступный только для пользователей из этого Домена.
Когда пользователь соединяется с сервисом Веб Интерфейс Пользователя (через порт HTTP User), строка hostname, указанная в URL независимого от состояния запроса, используется для поиска Домена CommuniGate Pro. При нахождении Домена, из него берутся Настройки WebUser Пользователя по Умолчанию, Имя Вида Интерфейса и Установки Языка.
Установка SkinName указывает имя используемого Вида Интерфейса (если эта настройка не задана, то используется Безымянный Вид Интерфейса).
Если Вид Интерфейса с указанным Именем не найден в наборе Видов Интерфейса Домена, то проверяется общесерверный Набор Видов Интерфейса. Если Вид Интерфейса с указанным именем не найден и в этом наборе, то используется Стандартный Вид Интерфейса с указанным именем. Если Именованный Стандартный Вид Интерфейса также не найден, то используется Безымянный Стандартный Вид Интерфейса.
Так как Домены могут иметь свои собственные Наборы Вида Интерфейса, то такой же запрос, отправленный в другой Домен, может отобразить другую страницу: Настройки WebUser Пользователя по Умолчанию могут иметь различные имена Видов Интерфейса для разных Доменов и даже если Настройки совпадают, в разных Доменах могут существовать разные Виды Интерфейса под одними и теми же именами.
Запросы, независимые от состояния, могут использовать любой доступный Вид Интерфейса для адресуемого Домена. Для использования альтернативного Вида Интерфейса, запрос HTTP вне Сессий должен задавать имя Вида Интерфейса, используя параметр запроса Skin.
Установка Language, получаемая из фактически действующих Настроек WebUser Пользователя по Умолчанию, задаёт язык, используемый на страницах вне Сессий. Для использования другого языка, запрос HTTP вне Сессии должен задавать имя языка при помощи параметра запроса Language.
Сессионные HTTP запросы не используют строку hostname, указанную в URL. Вместо этого при входе пользователя на сервер создаётся сессия Веб Приложения для указанного Пользователя CommuniGate Pro и для всей этой сессии используются фактически действующие Настройки WebUser Пользователя. Эти настройки содержат в себе название используемого Вида Интерфейса (пустое значение означает Безымянный Вид Интерфейса). Вид Интерфейса с указанным названием выбирается из набора Видов Интерфейса Домена Пользователя (обратите внимание, что Домен, указанный в URL запроса, может быть другим). Если в Домене Пользователя указанный Вид Интерфейса отсутствует, то используется общесерверный Вид Интерфейса, Общий для Сервера.
Запросы HTTP в рамках Сессий используют Язык, заданный в Настройках WebUser Пользователя.
Иерархия Файлов Вида Интерфейса
При обработке запроса Веб Интерфейса Пользователя, Серверу необходимо получать определённый файлы из выбранного Вида Интерфейса. Если требуемый файл не обнаружен в выбранном Виде Интерфейса и выбранный Вид Интерфейса является Видом Интерфейса Домена, то берётся файл с тем же именем из общесерверного Вида Интерфейса. Если требуемый файл не обнаружен в общесерверном Виде Интерфейса, то проверяется Стандартный Вид Интерфейса с таким же именем. Если файл не обнаружен и там, и выбранный Вид Интерфейса является Именованным Видом Интерфейса, то проверяются общесерверный Безымянный Вид Интерфейса и безымянный Стандартный Вид Интерфейса.
Первоначально, когда в Домене отсутствуют Пользовательские Виды Интерфейса и нет общесерверных Видов Интерфейса, все Домены могут использовать только Стандартные Виды Интерфейса. По умолчанию, выбирается Безымянный Вид Интерфейса. Загружая файлы в общесерверный Безымянный Вид Интерфейса, Администратор Сервера может "заменить" файлы Безымянного Стандартного Вида Интерфейса, что, соответственно, изменит внешний вид приложения для всех Доменов. Загружая файлы в Безымянный Вид Интерфейса какого-нибудь Домена CommuniGate Pro, Администратор Сервера или Домена может "заменять" файлы Стандартного Вида Интерфейса и файлы общесерверного Безымянного Вида Интерфейса, что, соответственно, изменит внешний вид приложения для этого конкретного Домена.
Такая иерархия позволяет Администраторам Сервера и Домена использовать как новые Виды Интерфейса, созданные "с нуля", так и делать небольшие изменения в Видах Интерфейса, повторно используя уже существующий файлы Видов Интерфейса.
В Установках с Динамическим Кластером имеется два набора общесерверных Видов Интерфейса: один набор используется для локальных Доменов Сервера, а другой, Кластерный набор, используется для всех Общих Доменов в Кластере. Изменения этих общекластерных Видов Интерфейса, а также изменения любого Вида Интерфейса для Общих Доменов, автоматически распространяются на все члены Кластера.
Языки и Текстовые Наборы Данных Вида Интерфейса
Каждый Вид Интерфейса может иметь текстовый набор данных - текстовый файл strings.data. Этот файл "языка по умолчанию" содержит словарь. Страницы со сценариями WSSP могут использовать различные команды для получения данных из этого словаря с текстовым набором данных.
Вид Интерфейса может содержать также дополнительные, локализованные файлы с текстовыми наборами данных - файлы language.data, где language является названием языка (french.data, japanese.data и т.п.). Если выбран язык, не являющийся языком по умолчанию, то используется Текстовый Набор Данных из соответствующего языкового файла.
Когда выбранный Текстовый Набор Данных для выбранного Вида не содержит требуемых данных, то проверяется Текстовый Набор Данных того же языка во всех "родительских" Видах Интерфейса (как показано выше). Если требуемые данные не найдены и там, то используется Текстовый Набор Данных для "языка по умолчанию".
Используйте кодировку UTF-8 для не ASCII символов в строках в файле с Текстовым Набором Данных. Дополнительную информацию о Юникод и кодировке UTF-8 вы можете найти на сайте http://www.unicode.org.
Возможно разделить один файл с Текстовым Набором Данных на несколько файлов. В набор файлов Вида Интерфейса можно поместить несколько файлов с именами вида strings.subname.data. Эти файлы зачитываются вместе с strings.data. Результат (словарь строк) добавляется в общий словарь Текстового Набора Данных с ключом subname. Аналогичным образом обрабатываются файлы language.subname.data, расширяя локализованные Текстовые Наборы Данных.
Обработка Обычных Файлов
Если в URL содержится имя с любым расширением имени файла, отличным от .wssp, то модуль Веб Приложения получает этот файл из выбранного Вида Интерфейса, помещает его во внутренний Кэш Вида Интерфейса и возвращает файл браузеру клиента через соединение, установленное с модулем HTTP.
Указанные имена файлов всегда преобразовываются в нижний регистр.
Когда модуль Веб Приложения получает запрос на тот же файл, он берётся из Кэша Вида Интерфейса.
Если файл был затребован при помощи сессионного URL, то таймер неактивности этой сессии сбрасывается. Это может использоваться для создания фрейма в окне браузера клиента и периодического запроса какого-либо файла с использованием сессионного URL. В результате, таймер неактивности сессии будет сбрасываться, и сессия будет оставаться активной все время, пока этот фрейм отображается в браузере клиента.
Администраторы Системы и Домена могут загружать пользовательские файлы в общесерверные и Доменные Виды Интерфейса для изменения внешнего вида Веб Приложений. Например, Стандартный Вид Интерфейса использует файл Logo.gif в большинстве своих страниц. Загрузив пользовательский файл Logo.gif в общесерверный Безымянный Вид Интерфейса, вы можете изменить вид страниц Веб Приложения даже не создавая и не загружая пользовательские файлы WSSP.
Для включения ссылки на файл в страницу .wssp, полученную при помощи запроса вне сессии, используйте префикс %%filesRef%% в .wssp коде: ... href="%%filesRef%%filename.extension" ... Дополнительную информацию смотрите в разделе Компоненты для Запросов вне Сессий. Сессии могут использовать Именованные Виды Интерфейса; как правило, сессионным страницам необходимо ссылаться на обычные файлы из того же Вида Интерфейса. Ссылки в "области сессии" ( href="filename.extension" или href="/Session/sessionID/filename.extension") будут работать, но они не позволят клиентским браузерам кэшировать эти файлы между сессиями, так как каждая сессия имеет свой собственный sessionID и URL файла будет различным для каждой сессии. Для того, чтобы позволить браузерам клиентов кэшировать обычные файлы, используйте для URL файлов префикс %%SESSION(filesRef)%%: ... href="%%SESSION(filesRef)%%/filename.extension" ... Дополнительную информацию смотрите в разделе Наборы Данных Сессии.
Обработка Файлов Веб Приложений (WSSP)
Когда URL указывает на ресурс с именем расширения файла .wssp, модуль Веб Приложения получает указанный файл WSSP из Вида Интерфейса, а затем компилирует его в некоторый внутренний код. Затем модуль запускает код Веб Приложения, связанный с именем файла. Этот код производит набор данных, содержащий различные строки, массивы и словари. Затем модуль, используя этот набор данных, запускает внутренний (скомпилированный) код для создания страницы HTML и возвращает результирующую страницу HTML браузеру через соединение, установленное с модулем HTTP.
Указанные имена ресурсов всегда преобразовываются в нижний регистр.
Формат WSSP файла описывается в разделе Сценарии WSSP. Администраторы Системы и Домена могут создавать пользовательские файлы WSSP и загружать их в общесерверные и Доменные Виды Интерфейса для изменения внешнего вида Веб Приложений.
В разделе ниже приводятся доступные компоненты Веб Приложений, определяющие набор страниц WSSP, которые могут создаваться в этой версии сервера CommuniGate Pro. В нём также указывается, как каждый компонент обрабатывает параметры отправляемой ему формы, и какие данные включаются в создаваемые компонентом наборы данных.
Создание и Обслуживание Вида Интерфейса
Вы можете создавать Интерфейсы и управлять ими через Веб Интерфейс Администратора, CLI/API или через любой другой клиент/протокол, который может обращаться к Хранилищу Файлов Пользователя (такой, например, как FTP).
Редактор в Веб Интерфейсе Администратора
Веб Интерфейс Администратора имеет страницы для Редактирования Вида Интерфейса, которые позволяют обслуживать общесерверные, общекластерные и доменные Виды Интерфейса.
Для обслуживания общесерверных и общекластерных Видов Интерфейса откройте через Веб Интерфейс Администратора раздел Пользователи и нажмите на ссылку Интерфейсы.
Для обслуживания Вида Интерфейса Домена откройте через Веб Интерфейс Администратора раздел Пользователи, выберите требуемый Домен и нажмите на ссылку Интерфейсы. Для создания и изменения Интерфейсов Домена Администратор Домена должен обладать правом доступа "Может модифицировать Интерфейсы" (CanModifySkins).
При открытии страницы Редактирования Видов Интерфейсов Домена, в случае, если Безымянный Вид Интерфейса для Домена отсутствует, то на странице имеется кнопка Создать Безымянный Интерейс. Нажмите на эту кнопку, чтобы создать Безымянный Вид Интерфейса.
Страница Редактирование Вида Интерфейса содержит список всех "видимых" в этом Виде Интерфейса файлов: тут перечисляются как файлы, непосредственно загруженные в этот конкретный Вид Интерфейса, так и все файлы, загруженные в Виды Интерфейса и используемые как источник "файлов по умолчанию" для этого Вида Интерфейса:
Файлы, непосредственно загруженные в Вид Интерфейса, имеют флажок в столбце Помеченные. Файлы из других Видов Интерфейса, "видимые" в этом Виде Интерфейса, имеют в этом столбце слово default.
Вы можете скачать любой файл из Имени Интерфейса, щёлкнув по имени файла.
Вы можете загрузить в Вид Интерфейса файл, нажав на кнопку Выбор Файла и выбрав файл, находящийся на вашем компьютере, а затем нажав на кнопку Загрузить Файл.
Вы можете удалить любой из загруженных в Вид Интерфейса файлов, отметив его флажком и нажав на кнопку Удалить Помеченные.
Когда вы загружаете .wssp или .wssi файл, Редактор сначала пытается скомпилировать этот WSSP файл. Когда вы загружаете .wcgp или .wcgi файл, Редактор сначала пытается скомпилировать этот CG/PL файл. Когда вы загружаете .data файл, Редактор сначала пытается разобрать этот файл как словарь. Если компилятор обнаруживает ошибку, то файл не загружается в Среду, содержимое файла отображается на странице Редактирования, и маркер красного цвета <--ERROR--> показывает точное место ошибки.
Если вы загружаете файл в любой Вид Интерфейса, то Кэш Вида Интерфейса очищается автоматически. Если вы загружаете файл в доменный Вид Интерфейса или в общекластерный Вид Интерфейс, то изменённый файл автоматически распространяется на все члены Кластера.
Вы можете загрузить набор файлов, выбрав TAR-архив (файл с именем расширения .tar). Например, если у вас есть TAR-архив с созданными ранее Видами Интерфейса, вы можете открыть Вид Интерфейса, который вы хотите изменить (общесерверный Безымянный Вид Интерфейса, доменный Безымянный Вид Интерфейса или какой-либо Именованный Вид Интерфейса) и загрузить в него файл .tar. Сервер распакует архив и будет сохранять каждый файл индивидуально, как будто бы они загружались один за другим. На странице Редактирования для Безымянного Вида Интерфейса содержится также список всех Именованных Видов Интерфейса:
Для создания Именованного Интерфейса, введите его имя и нажмите на кнопку Создать.
Для удаления Именованного Интерфейса, отметьте флажком этот Интерфейс и затем нажмите на кнопку Удалить Помеченные. Удалены могут быть только пустые Интерфейсы (Интерфейсы без каких-либо файлов).
Для удаления Безымянного Интерфейса, удалите все его файлы и все Именованные Интерфейсы, а затем нажмите на кнопку Удалить Безымянный Интерфейс.
Для того, чтобы открыть Интерфейс, щёлкните мышкой по его имени. Редактор отобразит Имя Интерфейса и ссылку Наверх, с помощью которой вы можете вернуться к Безымянному Интерфейсу.
Редактор Именованных Видов Интерфейса позволяет вам переименовать Вид Интерфейса, введя Имя Нового Интерфейса и нажав на кнопку Переименовать Интерфейс.
CLI/API
Для управление Интерфейсами может также использоваться Интерфейс Командной Строки / API. Дополнительную информацию смотрите в разделе Администрирование Вида Веб Интерфейса.
Виртуальные Области в Хранилище Файлов
Интерфейсы могут быть измененены через клиентов, работающих по протоколам FTP или HTTP, через CG/PL приложения или при помощи любого другого метода, который обеспечивает доступ к Хранилищу Файлов Пользователя. Специальные директории $DomainSkins, $ServerSkins и $ClusterSkins обеспечивают доступ к доменным, общесерверным и общекластерным Интерфейсам.
Обработка Запросов
Модуль Веб Приложения CommuniGate Pro обрабатывает запросы для файлов WSSP, вызывая компонент, который создаёт набор данных - словарь, содержащий ключи - текстовые строки и значения, связанный с этими ключами. Значения могут быть текстовыми строками, массивами или словарями.
Например, когда требуется вывести страницу Домена по умолчанию, вызывается специальный компонент и он создаёт словарь, в котором содержатся такие ключи, как canAutoSignup, hasMailLists, hasCertificate.
Модуль Веб Приложения может затем использовать код сценария из файла WSSP для преобразования этих данных в страницу HTML или в любой другой язык разметки страниц.
В этом разделе перечисляются доступные компоненты CommuniGate Pro, указывается, когда вызываются такие компоненты, объясняется, как компоненты обрабатывают параметры <FORM> и приводится содержимое набора данных, создаваемого такими компонентами.
Компоненты для Запросов вне Сессий
Модуль Веб Приложения проверяет HTTP параметр Skin для всех запросов вне сессий. Если этот параметр существует, то модуль пытается открыть Именованный Вид Интерфейса с указанным именем; в противном случае используется Безымянный Интерфейс (для адресуемого Домена).
Модуль Веб Приложения проверяет параметр HTTP Language для всех запросов вне сессий. Если этот параметр существует, то модуль использует его для выбора Текстового Набора Данных, не применяемого по умолчанию для выбранного Вида Интерфейса.
Модуль Веб Приложения помещает определённые данные в наборы данных, создаваемые всеми компонентами Запросов вне Сессий. В следующим списке приводятся эти "общие" элементы набора данных, которые могут использоваться во всех страницах WSSP для запросов вне Сессий:
- filesRef
- Значением этого элемента является строка, которая может использоваться для формирования URL к файлу (изображение, стиль, данные и т.д.) в этом Интерфейсе и в этом Домене. Элемент HTML <img src="%%filesRef%%Logo.jpeg"> отобразит файл Logo.jpg "видимым" для текущего Вида Интерфейса.
- serverName
- Значением этого элемента является строка с именем сервера CommuniGate Pro (Именем его Главного Домена).
- skinName
- Значением этого необязательного элемента является строка с именем текущего Вида Интерфейса.
- language
- Если был выбран язык не по умолчанию, то этот необязательный элемент содержит строку с именем выбранного языка.
- domainName
- Значением этого элемента является строка с именем Домена CommuniGate Pro. Этот элемент существует, только если Сервер успешно направил Запрос вне Сессии на один из Доменов Сервера.
- accessURL
- Значением этого элемента является строка с предпочтительным URL для доступа к Web услугам домена. Этот элемент существует, только если Сервер успешно направил Запрос вне Сессии на один из Доменов Сервера.
- charset
- Значением этого элемента является значение элемента charset из Текстового Набора Данных Вида Интерфейса Домена. Индивидуальные компоненты могут присваивать другие значения элементу charset (смотрите ниже).
- secureChannel
- Этот элемент существует и имеет строковое значение YES, если запрос был получен через безопасное (HTTPS) соединение.
В следующем разделе приводятся URL Запросов вне Сессий, имена вызываемых компонентов, действия, предпринимаемые этими компонентами и имена файлов WSSP, используемые для формирования ответов HTTP.
URL: /, /default.html
эти URL используются для обработки операции входа.
- Действия
-
Если запрос HTTP имеет параметры username и password, то предпринимается попытка аутентифицировать клиента с использованием этих параметров. Если полученная пара параметров является корректной, то создаётся новая Сессия WebUser и в эту Сессию направляется запрос на "начальную страницу". Обычно этот запрос возвращает HTML "страницу переадресации", которая отсылается обратно браузеру пользователя. Она заставляет браузер войти в "область Сессии".
Если запрос имеет параметр DisableIPWatch, то "Защита по Фиксированному Адресу" будет для этой сессии выключена, даже если в Настройках WebUser Пользователя она была включена.
Если запрос имеет параметр DisableUseCookie, то "Защита при помощи Cookies" для этой сессии будет выключена, даже если в Настройках WebUser Пользователя она была включена.
Если запрос имеет параметр SessionSkin со строковым значением, не равным *, то сессия открывается с использованием Вида Интерфейса, заданного этим параметром. Вид Интерфейса ищется в том Домене, куда фактически вошёл пользователь (который может отличаться от Домена, показываемого на Странице Входа).
- Набор Данных Результата
- Если параметры username или password не были указаны или Сессия WebUser не была создана, то компонент генерирует следующий набор данных:
- autoSignup
- этот элемент (имеющий строковое значение YES) добавляется в набор данных, если для адресуемого Домена разрешена Свободная Регистрация.
- clientAddress
- этот строковый элемент содержит IP адрес браузера пользователя.
- errorCode
- этот элемент добавляется в набор данных, если операция Входа закончилась неуспешно. Значением является строка с кодом ошибки.
- forgotPassword
- этот элемент (имеющий строковое значение YES) добавляется в набор данных, если значением errorCode является "Incorrect Password" ("Неверный Пароль") или "Unknown Account" ("Неизвестный Пользователь").
- hasCertificate
- этот элемент (имеющий строковое значение YES) добавляется в набор данных, если для адресуемого Домена имеется пользовательский Сертификат.
- hasDirectory
- этот элемент (имеющий строковое значение YES) добавляется в набор данных, если Вид Интерфейса по умолчанию для адресуемого Домена в своём Текстовом Наборе Данных имеет массив элементов GuestDirectoryFields и этот массив не пустой.
- hasLists
- этот элемент (имеющий строковое значение YES) добавляется в набор данных, если для адресуемого Домена существует хотя бы один Список Рассылки. Этот элемент всегда добавляется, если адресуемый Домен является Общим Доменом в кластере.
- skinNames
- этот элемент содержит массив - список имён Видов Интерфейсов, доступных в адресуемом Домене.
- loginName
- этот строковый элемент добавляется в набор данных, если пользователь попытался войти на сервер, и попытка окончилась неуспешно. Значение, указанное в параметре username, становится значением элемента loginName.
- restoreSessionPage
- этот строковый элемент добавляется в набор данных, если пользователь был отсоединён. Он содержит имя страницы, на которой была прервана сессия.
Для того, чтобы продолжить прерванный запрос, в HTTP запрос, сгенерированный этой страницей, должен быть включён HTTP параметр restoreSessionPage со значением этого элемента.
- restoreCharset
- этот строковый элемент добавляется в набор данных, если пользователь был отсоединён. Он содержит кодировку, использованную в прерванной сессии.
Для того, чтобы продолжить прерванный запрос, в HTTP запрос, сгенерированный этой страницей, должен быть включён HTTP параметр restoreCharset со значением этого элемента.
- restoreParameters
- этот массив элементов добавляется в набор данных, если пользователь был отсоединён. Каждый элемент массива является словарём, в котором содержатся следующие элементы:
- name
- имя параметра прерванного запроса.
- value
- закодированное значение прерванного параметра запроса.
Для того, чтобы продолжить прерванный запрос, в HTTP запрос, сгенерированный этой страницей, должны быть включены параметры с этими именами и значениями.
- Страница WSSP
- страница login.wssp используется для генерации HTTP ответа.
Если операция Входа завершилась успешно, то возвращается ответ HTTP Redirect, с URL переадресации, указывающим на WSSP страницу StartPage с вновь созданной Сессией. StartPage указывается как строка Вида Интерфейса StartPage.
Если операция Входа закончилась успешно, но в запросе содержится параметр restoreSessionPage, то отображается страница resume.wssp (вне сессии). Набор Данных результата запроса к этой странице содержит:
- restoreParameters
- смотрите описание выше.
- sessionID
- идентификатор сессии (SessionID) для вновь созданной сессии (имеет то же значение, что и значение функции SESSION(ID), которая может использоваться на страницах wssp сессии).
- jumpPage
- страница wssp, открываемая в случае, если пользователь хочет продолжить прерванную операцию (включает в себя необязательные параметры).
URL: /RecoveryPassword.wssp
этот URL используется для обработки операций по Восстановлению Пароля.
- Действия
- Если запрос HTTP имеет параметры username и Send, то компонент пытается найти указанного Пользователя, получить пароль Пользователя и значение Установки Пользователя RecoverPassword. Если пароль может быть расшифрован и установка RecoverPassword задана, то на адрес, определённый в установке RecoverPassword высылается сообщение электронной почты с паролем.
- Набор Данных Результата
-
- errorCode
- этот элемент добавляется в набор данных, если операция Восстановления Пароля закончилась неуспешно. Значением является строка с кодом ошибки.
- messageCode
- этот элемент добавляется в набор данных, если операция Восстановления Пароля закончилась успешно. Значением является строка PasswordSent.
- Страница WSSP
- для форматирования ответа HTTP используется страница recoverypassword.wssp.
URL: /Signup.wssp
этот URL используется для обработки операций Свободной Регистрации.
- Действия
- Если в запросе HTTP есть параметры username, password1, password2 и realName, то компонент пытается создать указанного Пользователя. До создания Пользователя проверяется совпадение строк password1 и password2. Если новый Пользователь создан, то UseAppPassword в его установках принимает значение YES, а Password и RealName устанавливаются в заданные значения. Если в запросе HTTP есть также непустой параметр ForgotPassword, то он используется в качестве значения Установки Пользователя RecoverPassword.
Компонент проверяет, содержит ли запрос один (или более) строковый параметр PublicInfo. Значением этого параметра должны быть Публично Доступные атрибуты, указанные в установках Центрального Справочника. Затем компонент проверяет, существует ли непустой параметр запроса с таким именем и добавляет значение параметра в начальные Установки Пользователя. Пример: для того, чтобы добавить поле City на странице Регистрации, добавьте управляющий элемент <INPUT type="hidden" name="PublicInfo" value="City"> и управляющий элемент <INPUT type="text" name="City" value="" size=30 maxlength=255> в HTML код страницы Signup.wssp.
Если Пользователь был создан, то создаётся новая Сессия WebUser, и в эту Сессию направляется запрос на "начальную страницу" (смотрите выше).
- Набор Данных Результата
-
Если параметры username, password1, password2 или realName не были указаны в запросе HTTP или новый Пользователь не был создан, то компонент генерирует следующий набор данных:
- errorCode
- этот элемент добавляется в набор данных, если операция Регистрации закончилась неуспешно. Значением является строка с кодом ошибки.
- userName
- этот элемент добавляется в набор данных, если запрос HTTP содержит непустой параметр userName. Значением этого элемента является значение параметра запроса.
- realName
- этот элемент добавляется в набор данных, если запрос HTTP содержит непустой параметр realName. Значением этого элемента является значение параметра запроса.
- recoverPassword
- этот элемент добавляется в набор данных, если запрос HTTP содержит непустой параметр recoverPassword. Значением этого элемента является значение параметра запроса.
- Страница WSSP
- для форматирования ответа HTTP используется страница signup.wssp .
URL: /List/, /List/default.html
этот URL используется для получения списка доступных к просмотру Списков Рассылки Домена.
- Действия
- Параметры запроса HTTP не обрабатываются.
- Набор Данных Результата
-
Компонент генерирует следующий набор данных:
- errorCode
- этот элемент добавляется в набор данных, если операция получения списка закончилась неуспешно. Значением является строка с кодом ошибки.
- lists
- этот элемент содержит массив описателей списка рассылки. Каждый описатель является словарём, в котором содержатся следующие ключи и их значения:
- name
- строка с названием списка рассылки.
- realName
- строка с "описанием" списка рассылки.
- browse
- строка, в которой описываются правила просмотра архива списка рассылки. Cтрока может иметь значение anyone или subscribers.
- Страница WSSP
- для форматирования ответа HTTP используется страница listlist.wssp.
URL: /List/listname/, /List/listname/List.html
этот URL используется для получения части публикаций в Списке Рассылки listname. Этот компонент фактически использует общий компонент Mailbox.
- Действия
- Компонент проверяет, содержит ли запрос HTTP параметр NextMessage с числовым значением. Если он существует, то это значение интерпретируется как уникальный идентификатор сообщения (UID) в архивной папке списка рассылки и компонент пытается найти это сообщение в выбранном режиме просмотра папки, а также пытается найти следующее сообщение в этом режиме просмотра.
Компонент проверяет, содержит ли запрос HTTP параметр PrevMessage с числовым значением. Если он существует, то это значение интерпретируется как уникальный идентификатор сообщения (UID) в архивной папке списка рассылки и компонент пытается найти это сообщение в выбранном режиме просмотра папки, а также пытается найти предыдущее сообщение в этом режиме просмотра.
Если следующее или предыдущее сообщение найдено, то его UID добавляется в набор данных (смотрите ниже) и общий компонент Mailbox не используется для обработки.
Если следующего/предыдущего сообщение не было найдено, то для обработки параметров HTTP запроса и генерации результирующего набора данных используется общий компонент Mailbox.
- Набор Данных Результата
-
- listName
- строка с названием Списка Рассылки.
Если следующее или предыдущее сообщение найдено:
- messageJump
- строка с UID найденного сообщения.
Если следующее или предыдущее сообщение не запрашивалось в параметрах HTTP запроса или оно не было найдено:
- realName
- строка с Описанием Списка Рассылки
- charset
- строка с Предпочтительной Кодировкой Списка Рассылки
для генерирования остальной части набора данных результата используется общий компонент Mailbox.
- Страница WSSP
- для форматирования ответа HTTP используется страница listmailbox.wssp.
URL: /List/listname/Message/uid.html
этот URL используется для получения сообщения с уникальным идентификатором uid из архива списка рассылки listname. Фактически компонент использует общий Компонент Message.
- Действия
- Общий компонент Message используется для обработки параметров запроса HTTP и для создания набора данных результата.
- Набор Данных Результата
-
- listName
- строка с названием Списка Рассылки.
- nextMsg
- этот элемент добавляется, если в просмотре архива списка рассылки есть следующее сообщение. Значением элемента является строка с UID следующего сообщения.
- prevMsg
- этот элемент добавляется, если в просмотре архива списка рассылки есть предыдущее сообщение. Значением элемента является строка с UID предыдущего сообщения.
Для генерирования остальной части набора данных результата используется обычный компонент Message.
- Страница WSSP
- для форматирования ответа HTTP используется страница listmessage.wssp.
Страницы Ошибок
Механизм WSSP используется для генерации тела ответов HTTP для сообщений об ошибках. В следующей таблице приводится список кодов ошибок HTTP, ситуаций, когда возникает такая ошибка, и WSSP файлов, используемых для создания тела HTTP ответа об ошибке.
Код | Условие возникновения Ошибки | используемый файл WSSP |
301 | местонахождение требуемого ресурса изменено | moved.wssp |
404 | требуемый ресурс не существует | notfound.wssp |
401 | для получения требуемой страницы необходима HTTP Авторизация (заголовок запроса) | unauthorized.wssp |
401 | имя пользователя и пароль в заголовке запроса HTTP Авторизации неверны | denied.wssp |
500 | общая ошибка системы | failure.wssp |
501 | общая ошибка системы | error.wssp |
|
Эти страницы WSSP обрабатываются с использованием наборов данных для всех запросов вне сессий, в которых содержатся следующие дополнительные элементы:
- errorCode
- этот элемент добавляется в набор данных, если существует код ошибки, о котором пользователь будет уведомлён.
- hostName
- этот элемент добавляется в набор данных, если запрос HTTP содержит поле Host:. Значением этого элемента является этот параметр поля запроса.
Страница disconnected.wssp используется, если запрос HTTP был отправлен в Сессию WebUser, но сессия не была найдена. Эта страница обрабатывается с использованием набора данных для всех запросов вне сессий.
Компоненты для Запросов в рамках Сессий
При создании новой Сессии WebUser открывается и используется в качестве "Интерфейса Сессии" Вид Интерфейса, указанный Настройках WebUser Пользователя. Из Текстового Набора Данных Вида Интерфейса берётся строка StartPage, создаётся страница переадресации и отправляется браузеру клиента. Страница переадресации перенаправляет браузер пользователя в "Область Сессии", на страницу, заданную строкой StartPage.
Запросы HTTP в "область Сессии" (запросы, в которых URL начинается с /Session/) обрабатываются как Сессионные Запросы. Вторым компонентом URL Сессионного Запроса является уникальный идентификатор Сессии, используемый модулем HTTP для нахождения сессии WebUser.
Если указанная сессия не найдена или у Сессии установлена опция Защита по Фиксированному Адресу, но HTTP запрос поступил с IP адреса, отличного от того, с которого поступил запрос на Вход, начавший сессию, то отображается страница disconnected.wssp (смотрите выше).
После того, как Сессия найдена, Модуль Веб Приложения обрабатывает оставшуюся часть URL запроса как "запрос внутри сессии". Если URL запроса указывает на обычный файл, то этот файл берётся из Вида Интерфейса Сессии и отправляется обратно браузеру клиента.
Для каждого ресурса .wssp вызывается соответствующий компонент. Он обрабатывает параметры запроса HTTP и создаёт набор данных результата. Затем из Вида Интерфейса берётся .wssp файл, который используется для создания ответа HTTP.
Если Набор Данных Результата не содержит элемента blockAlerts, то модуль Веб Приложения проверяет, нет ли для пользователя сессии ожидающих его Предупреждений. Если найдено одно или несколько предупреждений, то вызывается компонент Alerts, и для создания ответа HTTP используется файл Alerts.wssp. Модуль Веб Приложения проверяет определённые параметры запроса HTTP и обрабатывает их при запросах всех .wssp страниц. В следующим списке приводятся эти "общие" действия:
- EmptyTrashNow
- Если HTTP запрос содержит этот параметр и папка (или псевдоним папки с именем Trash) может быть открыта с правами доступа к папке "Может Удалять", то компонент удаляет все сообщения из этой папки. Если эта операция заканчивается неуспешно, то код ошибки помещается в строковый элемент errorCode набора данных результата.
- SMIMEUnlock
- Если HTTP запрос содержит этот параметр, сессия не имеет Активного Закрытого Ключа, в Установках Пользователя содержится зашифрованный Закрытый Ключ и запрос HTTP содержит параметр SMIMEPassword, то модуль пытается активировать ("разблокировать") Закрытый Ключ, используя полученный пароль. Если операция заканчивается неуспешно, то код ошибки помещается в строковый элемент SMIMEError набора данных результата.
Модуль Веб Приложения помещает определённые данные в наборы данных, создаваемые всеми компонентами Сессионных Запросов. В следующим списке приводятся эти "общие" элементы набора данных, которые могут использоваться во всех Сессионных страницах WSSP:
- messageText
- Этот строковый элемент добавляется, если HTTP запрос содержит параметр messageText. Значение этого элемента совпадает со значением HTTP параметра.
- messageCode
- Этот строковый элемент добавляется, если HTTP запрос содержит параметр messageCode. Значение этого элемента совпадает со значением HTTP параметра.
- secureChannel
- Этот элемент существует и имеет строковое значение YES, если запрос был получен через безопасное (HTTPS) соединение.
- charset
- Этот строковый элемент содержит Предпочтительную Кодировку, выбранную в Настройках Пользователя, если режим UTF8 установлен в значение Никогда. В противном случае, этот элемент содержит строку utf-8.
Обратите внимание: это просто значение по умолчанию, для этого элемента набора данных индивидуальные компоненты могут задавать разные значения.
- SMIMEActive
- Этот элемент существует и имеет строковое значение YES, если в сессии есть разблокированный (Активный) Закрытый ключ S/MIME.
- SMIMEInactive
- Этот элемент существует и имеет строковое значение YES, если в сессии отсутствует разблокированный (Активный) Закрытый ключ S/MIME, но в Установках Пользователя имеется Закрытый Ключ, и он может быть разблокирован.
- mailboxes
- Список всех папок, которые видны пользователю.
Если .wssp запрос указывает на неизвестный компонент, но .wssp файл с указанным именем может быть получен из Вида Интерфейса Сессии, то этот .wssp файл обрабатывается с использованием только "общих" элементов набора данных и результат отправляется обратно браузеру клиента.
- Пример: В Стандартном Виде Интерфейса используются запросы Hello.wssp. Компонент с таким именем отсутствует, следовательно, создаётся набор данных только с общими значениями и для обработки этого набора данных используется файл Hello.wssp.
В следующем разделе приводятся названия существующих компонентов (имена для .wssp запросов), действия, предпринимаемые этими компонентами и наборы данных, создаваемые этими компонентами.
Результаты компонентов обрабатываются с использованием .wssp файлов с именами, совпадающими с названиями компонентов.
Имя: Mailboxes
Действия
Если HTTP запрос содержит параметр Create и параметр NewName не является пустой строкой, то компонент пытается создать папку с указанными именем. Если эта операция заканчивается неуспешно, то в набор данных результата добавляется элемент errorCode с текстом кода ошибки. Если папка создана, то элемент messageCode со строковым значением MailboxCreated добавляется в набор данных результата и, если в Настройках WebUser Пользователя выбрана опция "Показывать Все Подписанные Папки", то имя созданной папки добавляется в список подписанных папок. Если запрос содержит параметр newClass, то созданная папка получает указанный класс.
Если HTTP запрос содержит параметр Filter, то в список включаются только те папки, в чьих именах содержится значение этого параметра.
Набор Данных Результата
Компонент создаёт список всех Папок Пользователя и Псевдонимов Папок (если в Настройках WebUser Пользователя выбрана опция "Показывать Все мои Папки") или список всех подписанных папок (если выбрана опция "Показывать Все Подписанные Папки"). Если выбраны обе опции, то эти два списка объединяются в один.
- filter
- этот строковый элемент содержит текущее значение HTTP параметра Filter.
- newName
- этот строковый элемент содержит текущее значение HTTP параметра NewName.
- mailboxClasses
- эти элементы массива содержат строки с именами всех поддерживаемых классов папок.
- mailboxList
- этот элемент является массивом с одним элементом типа словарь для каждой папки в сформированном списке папок. Каждый словарь содержит следующие элементы:
- mailboxName
- этот строковый элемент содержит имя папки.
- parent
- этот строковый элемент существует, если папки является подпапкой какой-либо другой папки. Строка содержит имя той родительской Папки.
- nonSelectable
- этот строковый элемент со значением Yes добавляется, если папку нельзя выбрать. Если он добавлен, то следующие элементы к словарю не добавляются.
- isList
- этот элемент добавляется, если папка является главной папкой (архивом) Cписка Рассылки (это означает, что существует Cписок Рассылки с таким же именем).
- nMessages
- этот строковый элемент содержит число сообщений в папке. Если число не может быть получено, то значением элемента является строка ???.
- nRecent
- этот строковый элемент содержит число "Недавних" ("Recent") сообщений в папке.
- numUnread
- этот строковый элемент содержит имя Непрочитанных ("Unseen") сообщений в папке.
- size
- этот строковый элемент содержит "округлённый" размер папки.
- mailboxClass
- эта необязательная строка содержит класс папки (для не почтовых папок).
- mailboxPage
- этот строковый элемент содержит имя страницы wssp, используемой для обработки такого класса папки.
- nSelected
- этот строковый элемент содержит число элементов в массиве mailboxList.
- trashSize
- этот строковый элемент добавляется только если Пользователь имеет папку Trash. В нём содержится размер папки Trash.
- currentStorage
- этот строковый элемент содержит "округлённый вверх" общий размер всех Папок Пользователя.
- storageLimit
- этот строковый элемент содержит "округлённое вверх" ограничение на общий размер папок Пользователя. Если Пользователь не имеет лимита на общий размер Папкок, то в этом элементе содержится строка unlimited.
Имя: Mailbox
Запрос HTTP должен содержать параметр Mailbox - имя отображаемой Папки.
Действия
Для каждой Папки модуль создаёт объект сессии, в котором содержатся параметры просмотра Папки. При создании такого объекта эти параметры устанавливаются в соответствующие значения из Настроек WebUser.
Параметры Msg запроса HTTP интерпретируются как "элементы набора сообщений". Запрос может содержать несколько параметров и каждый параметр должен иметь числовое значение - Уникальный Идентификатор (UID) Сообщения в Папке.
Если запрос HTTP содержит параметр Forward или параметр Redirect, и параметр RedirectAddresses не является пустым, то "набор сообщений" создаётся с использованием параметров Msg и сообщения из набора сообщений переадресуются или перенаправляются на указанные адреса. Если запрос HTTP содержит параметр ListApprove, и папка является папкой "approval" или "requests" для какого-либо списка рассылки, то запрос обрабатывается как запрос Redirect, с фактическим адресом, являющимся адресом списка рассылки или запросом "subscription" для этого списка. Если операция закончилась успешно, то в набор данных результата добавляется элемент messageCode со строковым значением MessagesForwardedInfo или MessagesRedirectedInfo. В противном случае в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Если запрос HTTP содержит параметр Copy или параметр Move, а параметр MailboxName содержит имя какой-либо "выбираемой" папки, то "набор сообщений" создаётся с использованием параметров Msg, и сообщения из набора сообщений копируются в указанную папку. Если был указан параметр Move, то сообщения из набора сообщений, в зависимости от Настроек WebUser, либо помечаются как Удалённые, либо физически удаляются, либо передвигаются в Мусорную Корзину. Если операция закончилась успешно, то в набор данных результата добавляется элемент messageCode со строковым значением MessagesCopiedInfo. В противном случае в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Если опция Способ Стирания установлена в значение Перенести в Корзину и запрос HTTP содержит параметр Delete, то "набор сообщений" создаётся с использованием параметров Msg, и сообщения из набора сообщений копируются в папку Trash и удаляются. Если папка Trash не существует, то она будет создана.
Если запрос HTTP содержит параметр DeleteAll, то все сообщения из папки удаляются с использованием метода, указанного в опции "Способ Стирания" Настроек WebUser.
Если запрос HTTP содержит параметры read, unread, flag, unflag, delete или undelete, то "набор сообщений" создаётся с использованием параметров Msg и у сообщений из набора сообщений изменяются соответствующие флаги. Параметры delete и undelete обрабатываются таким образом только в том случае, если опция "Способ Стирания" в Настройках WebUser не установлена в значение Перенести в Корзину. Если эта операция не закончилась успешно, то в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Если опция "Способ Стирания" в Настройках WebUser не установлена в значение Перенести в Корзину и запрос HTTP содержит параметр Purge, то удаляются все сообщения папки с флагом Deleted. Если эта операция не закончилась успешно, то в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Если в запросе HTTP есть параметр NextMessage с числовым значением, то значение интерпретируется как уникальный идентификатор (UID) сообщения папки и компонент пытается найти следующее сообщение папки. Если такое сообщение найдено, то UID добавляется в Набор Данных результата как элемент messageJump.
Если в запросе HTTP есть параметр PrevMessage с числовым значением, то значение интерпретируется как уникальный идентификатор (UID) сообщения папки и компонент пытается найти предыдущее сообщение папки. Если такое сообщение найдено, то UID добавляется в Набор Данных результата как элемент messageJump.
Если в запросе HTTP есть параметр NextUnread и в папке содержится непрочитанное сообщение, то UID этого непрочитанного сообщения добавляется в Набор Данных результата как элемент messageJump.
Если элемент messageJump не был добавлен в Набор Данных результата, то компонент использует общий компонент Mailbox для обработки параметров запроса HTTP и для формирования набора данных результата.
Набор Данных Результата
- mailbox
- строка с именем папки.
- mailboxClass
- если этот строковый элемент существует, то в нём содержится класс папки.
- mailboxPage
- этот строковый элемент содержит имя страницы wssp, которое должно использоваться для отображения такого класса папки.
- isSentBox
- этот элемент существует и содержит строку YES, если текущая папка является папкой, выбранной для сохранения копий отправленных сообщений.
- isDraftsBox
- этот элемент существует и содержит строку YES, если текущая папка является папкой, выбранной для сохранения черновиков сообщений.
Если найдено следующее, следующее непрочитанное или предыдущее сообщение:
- messageJump
- строка с UID найденного сообщения.
Если следующее непрочитанное, следующее или предыдущее сообщение не запрашивалось в параметрах запроса HTTP или оно не было найдено:
- refreshTime
- время обновления показа папки (в секундах), полученное из Настроек WebUser.
- listApproval
- этот строковый элемент существует, если папка является папкой approval для списка рассылки. Этот элемент содержит адрес электронной почты этого списка рассылки.
Для генерирования остальной части набора данных результата используется общий компонент Mailbox.
Имя: Контакты
Обрабатывается так же, как страница Mailbox.
Имя: Заметки
Обрабатывается так же, как страница Mailbox.
Имя: Календарь
Запрос HTTP должен содержать параметр Mailbox - имя отображаемой Папки типа Календарь.
Действия
Для каждой Папки модуль создаёт объект сессии, в котором содержатся параметры просмотра Папки. При создании такого объекта эти параметры устанавливаются в соответствующие значения из Настроек WebUser. Объект также содержит номер месяца для "помесячного просмотра календаря". Первоначально его значение устанавливается равным текущему месяцу. Объект содержит номер дня, задающий первый день, который должен отображаться при просмотре календаря. Объект также содержит флаг "byDay", управляющий тем, как данные календаря сохраняются в наборе данных (по дням или по временным интервалам).
Параметр запроса HTTP prevMonthlyCalendar может задавать число месяцев, которое будет вычитаться из номера месяца при "помесячном просмотре календаря".
Параметр запроса HTTP nextMonthlyCalendar может задавать число месяцев, которое будет добавляться к номеру месяца при "помесячном просмотре календаря".
Параметр запроса HTTP JumpDay может задавать "номер дня в эпохе", задающий первый день, который должен отображаться при просмотре календаря.
Параметр запроса HTTP byDay может указывать новое значение флага byDay.
Параметры Msg запроса HTTP интерпретируются как "элементы набора сообщений". Запрос может содержать несколько параметров и каждый параметр должен иметь числовое значение - Уникальный Идентификатор (UID) Сообщения в Папке.
Если опция Способ Стирания установлена в значение Перенести в Корзину и запрос HTTP содержит параметр Delete, то "набор сообщений" создаётся с использованием параметров Msg, и сообщения из набора сообщений копируются в папку Trash и удаляются. Если папка Trash не существует, то она будет создана.
Если запрос HTTP содержит параметры read, unread, flag, unflag, delete или undelete, то "набор сообщений" создаётся с использованием параметров Msg и у сообщений из набора изменяются соответствующие флаги. Параметры delete и undelete обрабатываются таким образом только в том случае, если опция "Способ Стирания" в Настройках WebUser не установлена в значение Перенести в Корзину. Если эта операция не закончилась успешно, то в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Если опция "Способ Стирания" в Настройках WebUser не установлена в значение Перенести в Корзину и запрос HTTP содержит параметр Purge, то удаляются все сообщения папки с флагом Deleted. Если эта операция не закончилась успешно, то в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Набор Данных Результата
- mailbox
- строка с именем папки.
- refreshTime
- время обновления показа папки (в секундах), полученное из Настроек WebUser.
- weekDayNames
- массив, содержащий строки с названиями дней недели, начиная со дня, заданного в Настройках WebUser как начало недели.
- todayDay
- число месяца из текущей даты.
- todayMonth
- текущий месяц.
- todayYear
- текущий год.
- todayDayNum
- "номер дня в эпохе" для текущего дня.
- monthlyCalendar
- массив, содержащий один элемент для каждой недели из месяцев, отображаемых при "помесячном просмотре календаря". Каждый элемент недели является массивом из 7 элементов. Если элемент не соответствует дню месяца (то есть, элемент соответствует дню до первого дня месяца или дню после последнего дня месяца), то элемент является пустой строкой. В противном случае элемент является словарём, в котором содержатся следующие подэлементы:
- day
- строка с днём месяца, соответствующая этому элементу.
- workDay
- необязательная строка YES добавляется, если день является рабочим днём.
- dayNum
- "номер дня в эпохе" для этого дня.
- year
- строка с номером года, которому принадлежит первый отображаемый день.
- byDay
- необязательный элемент, содержащий строку YES. Он добавляется, если установлен флаг byDay.
- timeSlices
- массив, содержащий начала событий (встреч), если флаг byDay установлен. Каждый элемент является словарём, содержащим следующие значения:
- hour
- значение часов в 24-часовом формате.
- PMhour
- значение часов в 12-часовом формате, если значение часа 12 или больше.
- minute
- номер минуты. Всегда 2 цифры.
- calendarDays
- массив, содержащий элементы просмотра календаря, если флаг byDay установлен. Каждый элемент является словарём, представляющим данные календаря для одного дня. В нём содержатся следующие элементы:
- weekDay
- имя дня недели этого дня
- year
- номер года, которому принадлежит этот день
- month
- имя месяца, которому принадлежит этот день
- day
- номер дня в месяце
- dayNum
- "номер дня в эпохе"
- allDayEvents
- необязательный массив, содержащий описатели для события (для встречи) на весь этот день. Каждый элемент массива является словарём, в котором содержатся "элементы События" (смотрите ниже)
- events
- массив, содержащий описатели событий в этот день. Каждый описатель соответствует одному временному интервалу; он является словарём, содержащим "элементы События" (если в этом временном интервале есть Событие) и следующие элементы:
- nTimeSlices
- длина временного интервала описателя, выраженная во временных интервалах.
- conflicts
- необязательный массив, содержащий UIDы других Событий, конфликтующих с Событием, отображаемом в этом временном интервале.
- status
- если временной интервал не содержит Событие и не относится к "рабочему времени", то в этом элементе содержится строка UNAVAILABLE.
- calendarDays
- массив, содержащий дни календаря, если флаг byDay не установлен. Каждый элемент является словарём, содержащим следующие значения:
- weekDay
- имя дня недели этого дня
- year
- номер года, которому принадлежит этот день
- month
- имя месяца, которому принадлежит этот день
- day
- номер дня в месяце
- dayNum
- "номер дня в эпохе"
- allDayEvents
- массив, содержащий информацию о Событиях На Весь День, если флаг byDay не установлен. Массив имеет по одному элементу для каждого отображаемого дня. Этот элемент является пустой строкой, если в этот день отсутствует Событие На Весь День, или он является массивом, содержащим подэлементы словаря для каждого События На Весь этот День. Каждый подэлемент словаря содержит "элементы События" для одного События На Весь День.
- calendarSlices
- массив с информацией для временного интервала, если флаг byDay не установлен. Каждый элемент массива является словарём, в котором содержатся следующие элементы:
- hour
- значение часов в 24-часовом формате.
- PMhour
- значение часов в 12-часовом формате, если значение часа 12 или больше.
- minute
- номер минуты. Всегда 2 цифры.
- days
- массив с данными календаря для этого временного интервала в каждом дне. Каждый элемент является словарём с данными дня, содержащими "элементы События" (если этот временной интервал содержит Событие в этот день), а также содержащим следующие элементы:
- nTimeSlices
- длина временного интервала описателя, выраженная во временных интервалах.
- conflicts
- необязательный массив, содержащий UIDы других Событий, конфликтующих с Событием, отображаемом в этом временном интервале.
- status
- если временной интервал не содержит Событие и не относится к "рабочему времени", то в этом элементе содержится строка UNAVAILABLE.
"Элементами События" являются:
- summary
- строка с текстом "Темы События".
- ID
- числовая строка с UID сообщения с Событием в папке.
- status
- строка со статусом занятости для События.
- priority
- число со значением приоритета События. Этот элемент существует, только если приоритет События не равен нулю.
Имя: Tasks
Запрос HTTP должен содержать параметр Mailbox - имя отображаемой Папки типа Задания.
Действия
Для каждой Папки модуль создаёт объект сессии, в котором содержатся параметры просмотра Папки. При создании такого объекта эти параметры устанавливаются в соответствующие значения из Настроек WebUser. Объект содержит номер дня, задающий первый день, который должен отображаться при просмотре Заданий.
Параметр запроса HTTP JumpDay может задавать "номер дня в эпохе", с первым днём, который должен отображаться при просмотре Заданий.
Параметры Msg запроса HTTP интерпретируются как "элементы набора сообщений". Запрос может содержать несколько параметров и каждый параметр должен иметь числовое значение - Уникальный Идентификатор (UID) Сообщения в Папке.
Если опция Способ Стирания установлена в значение Перенести в Корзину и запрос HTTP содержит параметр Delete, то "набор сообщений" создаётся с использованием параметров Msg, и сообщения из набора сообщений копируются в папку Trash и удаляются. Если папка Trash не существует, то она будет создана.
Если запрос HTTP содержит параметры read, unread, flag, unflag, delete или undelete, то "набор сообщений" создаётся с использованием параметров Msg и у сообщений из набора изменяются соответствующие флаги. Параметры delete и undelete обрабатываются таким образом только в том случае, если опция "Способ Стирания" в Настройках WebUser не установлена в значение Перенести в Корзину. Если эта операция не закончилась успешно, то в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Если опция "Способ Стирания" в Настройках WebUser не установлена в значение Перенести в Корзину и запрос HTTP содержит параметр Purge, то удаляются все сообщения папки с флагом Deleted. Если эта операция не закончилась успешно, то в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Параметр запроса HTTP showCompleted может указывать новое значение флага showCompleted.
Набор Данных Результата
- mailbox
- строка с именем папки.
- refreshTime
- время обновления показа папки (в секундах), полученное из Настроек WebUser.
- showCompleted
- необязательный элемент, содержащий строку YES. Он добавляется, если установлен флаг showCompleted.
- numTotal
- общее число заданий в папке.
- numSelected
- общее число выбранных Заданий.
- tasks
- массив с выбранными заданиями. Каждый элемент является словарём, описывающим задание. В нём содержатся следующие элементы:
- nBefore
- эта числовая строка существует, если Задание начинается после первоначального времени, отображаемого при просмотре Заданий. Она показывает, сколько временных периодов просмотра Заданий должно быть пропущено до начала Задания.
- nDuration
- эта числовая строка задаёт интервал времени (в периодах времени) между временем начала Задания или временем первого отображения Просмотра Задания (в зависимости от того, что наступает позже) и между сроком выполнения Задания или между временем последнего отображения Задания (в зависимости от того, что наступает раньше).
- nAfter
- эта числовая строка существует, если Задание заканчивается до времени окончания просмотра задания. Она показывает, сколько временных периодов просмотра Заданий должно быть пропущено после окончания Задания.
- ID
- строка с UID сообщения с Заданием в папке.
- percentComplete
- числовая строка со значением Процента Выполнения объекта Задания.
- summary
- строка с темой Задания
- priority
- числовая строка с приоритетом Задания, если он был задан (не нулевой).
Имя: Message
Запрос HTTP должен содержать параметр Mailbox - имя папки, содержащей отображаемые сообщения и параметр MSG - Уникальный Идентификатор сообщения в папке.
- Действия
- Если запрос HTTP содержит параметр Copy или параметр Move, а параметр MailboxName содержит имя какой-либо папки, то сообщение копируется в указанную папку. Если был указан параметр Move, то сообщение помечается как удалённое или удаляется - в зависимости от Настроек WebUser.
Если операция закончилась успешно, то в набор данных результата добавляется элемент messageCode со строковым значением MessageCopied. В противном случае в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции. Если операция Move закончилась успешно, то в набор данных результата добавляется элемент backToMailbox со значением YES, и компонент прекращает обработку запроса. Если запрос HTTP содержит параметр Redirect, и параметр RedirectAddresses не является пустым, то сообщение перенаправляется на указанные адреса. Если запрос HTTP содержит параметр ListApprove и папка сообщений является папкой "approval" для какого-либо списка рассылки, то запрос обрабатывается как запрос Redirect, с фактическим адресом, являющимся адресом списка рассылки. Если операция закончилась успешно, то в набор данных результата добавляется элемент messageCode со строковым значением MessageRedirected. В противном случае в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Если запрос HTTP содержит параметр TakeAddress, то адрес From: сообщения добавляется в записную книгу Пользователя.
Если запрос HTTP содержит параметр TakeCertificate, то сертификат из цифровой подписи сообщения добавляется в записную книгу Пользователя.
Если запрос HTTP содержит параметр StoreFiles, а параметр selectedWebFolder содержит имя папки Хранилища Файлов, то файловые части сообщения (приложения, изображения) сохраняются в указанную папку. Если операция закончилась успешно, то в набор данных результата добавляется элемент messageCode со строковым значением FilesCopied. В противном случае в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Если запрос HTTP содержит параметры read, unread, flag, unflag, delete или undelete, то у сообщения изменяются соответствующие флаги. Если эта операция не закончилась успешно, то в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Затем компонент использует общий компонент Message для обработки параметров запроса HTTP и для создания набора данных результата.
- Набор Данных Результата
-
- mailbox
- строка с именем папки.
Если сообщение не было удалено:
- MSG
- Строка с идентификатором сообщения (message UID).
- flagged, recent, deleted, flagged, media, isDraft
- Эти элементы со значением Yes добавляются, если сообщение имеет соответствующий флаг.
- status
- Этот строковый элемент имеет следующие значения:
- Deleted - если у сообщения установлен флаг Deleted, иначе
- Draft - если у сообщения установлен флаг Draft, иначе
- Redirected - если у сообщения установлен флаг Redirected, иначе
- Unread - если у сообщения не установлен флаг Seen, иначе
- Answered - если у сообщения установлен флаг Answered, иначе
- Read
- messageBody
- Строка с сообщением в представлении HTML, созданная с использованием общего компонента Message.
- charset
- Кодировка, используемая для показа сообщения. Этот элемент может быть установлен общим компонентом Message.
- nextMsg
- этот элемент добавляется, если в просмотре папки есть следующее сообщение. Значением элемента является строка с UID следующего сообщения.
- prevMsg
- этот элемент добавляется, если в просмотре папки есть предыдущее сообщение. Значением элемента является строка с UID предыдущего сообщения.
- hasFiles
- этот строковый элемент YES добавляется, если в сообщении существует часть с файлом.
- editableContact
- этот строковый элемент YES добавляется, если сообщение является объектом VCard, который может быть изменён.
- editableGroup
- этот строковый элемент YES добавляется, если сообщение является объектом Группа, который может быть изменён.
- editableNote
- этот строковый элемент YES добавляется, если сообщение является объектом Заметка, который может быть изменён.
- editableEvent
- этот строковый элемент YES добавляется, если сообщение является Событием, "опубликованным" этим пользователем, и которое может быть изменено.
- editableTask
- этот строковый элемент YES добавляется, если сообщение является Заданием, "опубликованным" этим пользователем, которое может быть изменено.
- canCancelEvent
- этот строковый элемент YES добавляется, если сообщение является Событием, которое пользователь может отменить.
- canCancelTask
- этот строковый элемент YES добавляется, если сообщение является Заданием, которое пользователь может отменить.
- canAcceptDecline
- этот строковый элемент YES добавляется, если сообщение является запросом на Встречу или Заданием.
- percentComplete
- этот элемент, содержащий число, добавляется, если сообщение является Заданием, назначенным этому пользователю кем-либо другим.
- statusCode
- эта необязательная строка содержит статус сообщения, если сообщение является Заданием или Событием.
- conflictingID
- эта необязательная строка содержит UID сообщения в используемой по умолчанию папке Календарь, которое конфликтует с показываемым Приглашением на Встречу.
- canUpdatePartStatus
- этот строковый элемент YES добавляется, если сообщение является ответом на Указание Задания или ответом на Приглашение на Встречу пользователя.
- canCancelEvent
- этот строковый элемент YES добавляется, если сообщение является Отменой События от Организатора События.
- canCancelTask
- этот строковый элемент YES добавляется, если сообщение является Отменой Задания от Организатора Задания.
- listApproval
- этот строковый элемент существует, если папка сообщения является папкой approval для списка рассылки. Этот элемент содержит адрес электронной почты этого списка рассылки.
Имя: Compose
- Действия
- Если запрос HTTP содержит параметр charset, то значение параметра используется как желаемая кодировка - кодировка, которая будет использоваться при создании сообщения.
Необязательный параметр Operation запроса HTTP указывает тип операции Создания, и он может иметь значение Reply, ReplyAll, Forward или EditDraft. Если задан этот параметр, то должен быть указан также параметр OrigMessage (с UID оригинального сообщения) и параметр OrigMailbox (с именем папки, в которой содержится оригинальное сообщение).
Если запрос HTTP содержит параметр Operation, и он не содержит параметра filled, то поля заголовков оригинального сообщения используются для создания полей Тема, Кому, Копия и тела нового сообщения. В противном случае для данных нового сообщения используются параметры запроса HTTP Subject, To, Cc, Bcc и Body.
Если HTTP запрос содержит параметр AddressBook и не содержит параметра CloseBook, или если запрос HTTP содержит параметр OpenBook, то для обработки параметров запроса и для формирования некоторых элементов результирующего набора данных используется общий компонент AddressBook.
Если запрос HTTP содержит параметр isEvent, то в Календаре создаётся запись о Событии. Если запрос HTTP содержит параметр isTask, то в Заданиях создаётся запись о Задании. Если запрос HTTP содержит параметр isNote, то в Блокноте создаётся запись с Заметкой.
Если запрос HTTP содержит параметр Send, то создаваемое сообщение передаётся в Очередь Сервера. Если запрос HTTP содержит параметр Save, то создаваемое сообщение сохраняется как Черновик в выбранной папке для Черновиков. В обоих случаях все параметры Attachment запроса HTTP добавляются к сообщению как вложения.
- Набор Данных Результата
-
- operation
- Этот элемент добавляется в набор данных, если запрос HTTP содержит параметр Operation. Значение элемента равно значению параметра запроса.
- origMessage
- Этот элемент, содержащий UID оригинального сообщения, добавляется в набор данных результата, если запрос HTTP содержит параметр OrigMessage.
- origMailbox
- Этот элемент, содержащий UID оригинального сообщения, добавляется в набор данных результата, если запрос HTTP содержит параметр OrigMailbox.
- sentOrSaved
- Этот элемент со значением Yes добавляется в набор данных результата, если операция Send или SaveDraft завершилась успешно. Если этот элемент добавляется:
- Элемент sent со значением Yes добавляется, если операция была операцией Send.
- Элемент messageCode со значением MessageSent или MessageSaved добавляется в набор данных.
- Элементы, перечисленные ниже, не добавляются в набор данных результата.
- Subject, To, Cc, Bcc
- Эти элементы содержат строки с текущими данными из полей заголовков.
- From
- Этот элемент содержит строку с адресом От Кого, указанным в Настройках WebUser.
- addressBook
- Этот элемент со значением Yes добавляется в результирующий набор данных, если запрос HTTP содержит параметр AddressBook и не содержит параметра CloseBook, или если запрос HTTP содержит параметр OpenBook.
- body
- Этот строковый элемент содержит текст тела текущего сообщения.
- mailerWidth
- Этот строковый элемент содержит значение опции MailerWidth Настроек WebUser.
- forwardedMessage
- Эта необязательная строка содержит оригинальное сообщение в представлении HTML. Этот элемент добавляется в набор данных результата, если параметр Operation запроса HTTP имеет значение Forward.
- DSN
- Этот элемент со значением Yes добавляется в набор данных результата, если запрос HTTP содержит параметр DSN.
- SaveSent
- Этот элемент со значением Yes добавляется в набор данных результата, если в Настройках WebUser содержится непустая опция SentBox, и запрос HTTP не содержит параметра Filled, или запрос HTTP содержит параметр SaveSent.
- desiredCharset
- Этот строковый элемент содержит название кодировки, используемой для создания сообщения.
- charset
- Этот элемент является строкой UTF-8, если опция Использовать Unicode (UTF-8) Настроек WebUser установлена в значение "Для Всего". В противном случае, этот элемент содержит такое же значение, как и элемент desiredCharset результирующего набора данных.
- isEvent
- Этот элемент, имеющий значение Yes, добавляется в набор данных результата, если запись была создана в Календаре как Событие.
- isTask
- Этот элемент, имеющий значение Yes, добавляется в набор данных результата, если запись была создана в Календаре как Задание.
- isNote
- Этот элемент, имеющий значение Yes, добавляется в набор данных результата, если запись была создана как Заметка.
Следующие элементы добавляются, если запись была создана как запись Календаря:
- allDayEvent
- Этот элемент, имеющий значение Yes, добавляется в набор данных результата, если запись является Событием На Весь День. Значение этого элемента управляется значением одноимённого параметра HTTP.
Имя: MailboxSettings
Запрос HTTP должен содержать параметр Mailbox - имя папки, которой необходимо управлять.
- Действия
-
Если запрос HTTP содержит параметр Remove, то папка удаляется. Если запрос HTTP содержит также параметр RemoveSub, то все подпапки также удаляются. Если операция закончилась успешно и в Настройках WebUser выбрана опция "Показывать Все Подписанные Папки", то удаляемые папки убираются из списка подписки Пользователя. Если операция закончилась успешно, то элемент removed со строковым значением Yes добавляется в набор данных результата, и компонент прекращает обработку запроса. В противном случае в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Если запрос HTTP содержит параметр Rename, а параметр NewName не является пустым, то папка переименовывается. Значение параметра NewName преобразовывается в формат "UTF-7 Кодировка Имени Папки" и используется как новое имя папки. Если запрос HTTP также содержит параметр RenameSub, то переименовываются и все подпапки. Если операция закончилась успешно, и в Настройках WebUser выбрана опция "Показывать Все Подписанные Папки", то папки переименуются также и в списке подписки Пользователя. Если операция закончилась успешно, то элемент removed со строковым значением Yes добавляется в набор данных результата, и компонент прекращает обработку запроса. В противном случае в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Если запрос HTTP содержит параметр Update, то компонент получает из запроса все параметры Acc. Каждый параметр Acc должен иметь числовое значение. Для каждого полученного значения nnn параметра Acc, запрашивается параметр Znnn. Если он содержит непустую строку, то запрашиваются все параметры запроса Knnn, где K является буквой, обозначающей право доступа к папке. Список строк с именем Znnn с набором параметров Knnn используется для формирования и установления нового списка ACL (Списка Прав Доступа) для выбранной папки. Если операция изменения ACL закончилась успешно, то в результирующий набор данных добавляется элемент messageCode со строковым значением Updated. В противном случае в набор данных результата добавляется элемент errorCode, содержащий строку с текстом кода ошибки операции.
Если запрос HTTP содержит параметр DeleteAll, то все сообщения из папки удаляются с использованием метода, указанного в опции "Способ Стирания" Настроек WebUser. Если операция закончилась успешно, то в результирующий набор данных добавляется элемент messageCode со строковым значением MessagesDeleted.
- Набор Данных Результата
-
- renamed
- Этот элемент, имеющий строковое значение YES, добавляется в набор данных, если папка была переименована. В этом случае никакие другие элементы не добавляются в набор данных результата.
- removed
- Этот элемент, имеющий строковое значение YES, добавляется в набор данных, если папка была удалена. В этом случае никакие другие элементы не добавляются в набор данных результата.
- rights
- Этот массив содержит элементы ACL папки (элементы Списка Прав Доступа к Папке). Каждый элемент массива является словарём, в котором содержатся следующие элементы:
- ident
- этот строковый элемент содержит элемент name ACL.
- index
- этот строковый элемент содержит номер элемента в наборе ACL.
- lookup, select, seen, flags, insert, post, create, delete, admin
- эти элементы со строковым значением Yes добавляются, если элемент ACL включает в себя эти права доступа к папке.
Имя: Alerts
Этот компонент может вызываться неявно, если модуль Веб Приложения обнаруживает ожидающие сообщения с Предупреждениями.
- Действия
-
Если запрос HTTP содержит параметр AlertTime, то этот параметр должен содержать отметку времени в формате ACAP. Компонент подтверждает все Предупреждения старше указанного времени.
Если запрос HTTP имеет параметр returnURL, то значение параметра добавляется в Набор Данных результата (как элемент returnURL).
- Набор Данных Результата
-
- alerts
- Этот элемент добавляется в набор данных результата, если для сессии пользователя есть Предупреждения. Значением этого элемента является массив с элементами типа словарь; каждый элемент описывает одно сообщение предупреждения. Каждый словарь содержит следующие элементы:
- time
- Строка со временем опубликования предупреждения.
- text
- Строка с текстом сообщения предупреждения.
- currentTime
- Этот элемент добавляется в набор данных результата, если для сессии пользователя есть Предупреждения. Эта строка содержит текущее время в формате ACAP.
- returnURL
- Если страница с Предупреждениями была получена и показана автоматически (вместо показа какой-либо другой страницы), то в этот строковый элемент помещается URL (преобразованный в корректный вид) этой другой страницы.
Имя: Subscription
- Действия
-
Если запрос HTTP содержит параметр Open, то значение параметра MailboxName конвертируется в формат "UTF-7 Кодировки Имени Папки", конвертированная строка добавляется в результирующий набор данных как элемент jump, и обработка завершается. Если запрос HTTP содержит параметр Update:
- Запрашиваются все параметры Elem запроса, преобразовываются в формат "UTF-7 Кодировки Имени Папки", и формируется новый список подписки Пользователя.
- Запрашиваются все параметры запроса AliasName; они должны содержать числовые значения. Для каждого полученного числового значения nnn, запрашивается пара параметров annn и mnnn. Если оба параметра существуют и содержат непустые строки, то эти строки преобразовываются в формат "UTF-7 Кодировки Имени Папки" и используются для формирования нового набора Псевдонимов Папки Пользователя.
- Если операция Subscription или операция изменения Псевдонимов Папки заканчивается неуспешно, то в набор данных результата добавляется элемент errorCode. В противном случае в набор данных результата добавляется элемент messageCode со строковым значением Updated.
- Набор Данных Результата
-
- jump
- В этом параметре задаётся имя папки, которую надо открыть ("перейти в неё"). Если этот элемент существует, то следующие элементы к словарю не добавляются.
- subscription
- В этом массиве содержится список подписки Пользователя. Каждый элемент массива должен быть строкой с каким-либо именем папки.
- aliases
- Этот массив содержит список Псевдонимов Папки Пользователя. Каждый элемент массива является словарём, в котором содержатся следующие элементы:
- index
- Строка с индексом элемента с Псевдонимом Папки.
- name
- Строка с именем Псевдонима Папки.
- ref
- Строка с именем папки, на которую указывает этот Псевдоним.
Имя: Password
- Действия
- Если запрос HTTP содержит параметр ModifyPassword, то запрос также должен содержать параметр OldPassword, и этот параметр должен соответствовать текущему паролю Пользователя. Если значение параметра OldPassword является корректным:
- Значение параметра RecoverPassword запроса устанавливается как новое значение Установки RecoverPassword Пользователя. В набор данных результата добавляется элемент messageCode со строковым значением Updated.
- Если Пользователю разрешено изменять пароль, то проверяются параметры NewPassword1 и NewPassword2. Если они не пустые и соответствуют друг другу, то пароль Пользователя изменяется с использованием значения этих параметров.
Если изменение пароля завершилось успешно, то в набор данных результата добавляется элемент messageCode со строковым значением PasswordChanged. Если эта операция по изменению пароля закончилась неуспешно, то в набор данных результата добавляется элемент errorCode.
- Набор Данных Результата
-
- RecoverPassword
- Эта строка содержит значение Установки RecoverPassword Пользователя.
Имя: PublicInfo
- Действия
-
Если запрос HTTP содержит параметр Update, то запрос также должен содержать ноль, один или несколько параметров ID, каждый из которых имеет числовое значение. Для каждого параметра ID, его числовое значение nnn используется для получения пары строковых параметров Nnnn и Vnnn. Значение параметра Nnnn указывает на имя настройки Пользователя "О Себе" (настройка Публично Доступные), а значение параметра Vnnn указывает на значение этой настройки. Эти пары используются для установки новых значений настроек Публично Доступные Пользователя. Если в качестве значения настройки указана пустая строка, то настройка удаляется из Настроек Пользователя.
Если настройки "О Себе" (Публично Доступные) были успешно изменены, то в набор данных результата добавляется элемент messageCode со строковым значением Updated. Если эта операция по изменению пароля закончилась неуспешно, то в набор данных результата добавляется элемент errorCode.
- Набор Данных Результата
-
- publicInfo
- Этот массив элементов содержит набор элементов "Публично Доступные". Он содержит один элемент для каждой Публично Доступной Настройки, задаваемой в установках Центрального Справочника. Каждый элемент массива является словарём, в котором содержатся следующие элементы:
- id
- этот строковый элемент содержит номер элемента в наборе.
- name
- этот строковый элемент содержит имя настройки О Себе (Публично Доступные).
- value
- этот строковый элемент содержит текущее значение настройки Публично Доступные. Этот элемент существует, только если у Пользователя имеются настройки "О Себе".
Имя: WebSite
Компонент использует общий компонент WebSite для обработки параметров запроса HTTP и для формирования набора данных результата. До вызова общего компонента, в набор данных результата добавляются следующие элементы:
- Набор Данных Результата
-
- fileRef
- Строка WebFile/.
- pageRef
- Строка website.wssp.
Имя: Bye
- Действия
- Компонент удаляет старые сообщения из Корзины (согласно настройкам WebUser, и если не был указан параметр noEmpty) и закрывает сессию. Сессия будет уничтожена, как только этот запрос HTTP будет обработан, так что страница bye.wssp сможет использовать данные сессии, но создаваемый ею код HTML не должен содержать ссылки на объекты в сессии.
- Набор Данных Результата
-
- blockAlerts
- Этот элемент имеет строковое значение Yes. Он добавляется в набор данных результата для предотвращения обработки Предупреждений.
Общие Компоненты
Модуль Веб Приложения имеет несколько общих компонентов, используемых для обработки запросов и в сессиях, и вне сессий.
Общий компонент Mailbox
- Действия
- Если запрос HTTP содержит параметры Filter, Search, Limit, то значения этих параметров используются для изменения "просмотра" папки - текущих значений Filter, Search, Limit.
Если в запросе HTTP указан параметр Skip, то он должен иметь числовое значение. Это число используется для задания текущего индекса первого сообщения - номера первого сообщения, отображаемого на странице.
Если запрос HTTP содержит параметр Next, то текущий индекс первого сообщения увеличивается на текущее значение Limit.
Если запрос HTTP содержит параметр Prev, то текущий индекс первого сообщения уменьшается на текущее значение Limit.
Если запрос HTTP содержит параметр Sort, то его числовое значение указывает номер столбца, по которому проводится сортировка (для просмотра папки, отсортированной по первому столбцу, параметр Sort должен иметь значение 0).
Если запрос HTTP содержит параметр SDir, то его числовое значение определяет порядок сортировки: значение 1 устанавливает сортировку по возрастанию, значение 0 - сортировку по убыванию, значение -1 - меняет текущий порядок сортировки.
- Набор Данных Результата
-
- checkAll
- Этот элемент имеет строковое значение CHECKED. Он добавляется в набор данных результата, если запрос HTTP содержит параметр MarkAll.
- filter
- Строковое значение этого элемента является текущей строкой Filter.
- search
- Строковое значение этого элемента является текущей строкой Search.
- limit
- Строковое значение этого элемента является текущим значением Limit (числом).
- sentBox
- Этот элемент имеет строковое значение Yes и существует, только если эта папка является папкой для отправленных сообщений.
- headers
- Массив значений этого элемента содержит заголовки столбцов для просмотра папки. Каждый элемент массива является словарём, в котором содержатся следующие элементы:
- index
- Этот строковый элемент содержит номер столбца.
- name
- Этот строковый элемент содержит имя столбца.
- hilited
- Этот элемент имеет строковое значение Yes и существует, только если этот столбец выбран для сортировки.
- sdir
- Если этот столбец не является столбцом, по которому производится сортировка, то этот элемент содержит текущий порядок сортировки (0 или 1). Если этот столбец является столбцом, по которому производится сортировка, то этот элемент содержит обратный к текущему порядок сортировки (1 - текущий порядок сортировки).
- ralign
- Этот элемент имеет строковое значение Yes и существует, только если этот столбец является столбцом с датой или размером и, следовательно, для него требуется обратное горизонтальное выравнивание.
- messages
- Массив значений этого элемента содержит данные для просмотра папки. Каждый элемент массива является словарём с данными сообщения, и он содержит следующие элементы:
- id
- этот элемент содержит Уникальный Идентификатор сообщения (UID)
- color
- если сообщение имеет поле заголовка X-Color с корректной HTML строкой для "цвета", то этот элемент существует и содержит значение этого поля заголовка.
- notText
- этот необязательный элемент имеет строковое значение Yes; он существует, только если сообщение не является текстовым (Content-Type сообщения не имеет значения text).
- notAltText
- этот необязательный элемент имеет строковое значение Yes; он существует, только если сообщение не является текстовым (Content-Type сообщения не имеет значения text) и Content-Type/Subtype не является multipart/alternative.
- fields
- элементы этого массива содержат данные столбцов сообщения. Эти столбцы хранятся в том же порядке, что и столбцы в элементах заголовков набора данных результата. Каждый элемент является словарём. В нём содержатся следующие элементы:
- hilited
- Этот элемент имеет строковое значение Yes и существует, только если этот столбец выбран для сортировки.
- sdir
- Если этот столбец не является столбцом, по которому производится сортировка, то этот элемент содержит текущий порядок сортировки (0 или 1); если этот столбец является столбцом, по которому производится сортировка, то этот элемент содержит обратный к текущему порядок сортировки (1 - текущий порядок сортировки).
- ralign
- Этот элемент имеет строковое значение Yes и существует, только если этот столбец является столбцом с датой или размером и, следовательно, для него требуется обратное горизонтальное выравнивание.
- isRef
- Этот элемент существует для выбранного столбца и для первого "кликабельного" столбца. Если он существует, то он содержит строку YES.
- value
- Этот элемент содержит данные столбца. Он существует для всех столбцов, кроме столбца Состояние. Элементы в столбцах Записано и Отправлено содержат значения "даты" - значения такого типа могут показываться при помощи префиксов DATE:, DATETIMESHORT и им подобных.
- isStatus
- Строковый элемент со значением "YES" существует, если столбец является Состоянием.
- isDate
- Строковый элемент со значением "YES" существует, если столбец является столбцом Записано или Отправлено, и значение элемента содержит значение типа "дата".
- isPty
- Строковый элемент со значением "YES" существует, если столбец является столбцом Важн (Важность).
- status
- Этот элемент существует, если столбец является Состоянием. Если он существует, то он содержит одну из следующих строк:
- Deleted - если у сообщения установлен флаг Deleted, иначе
- Draft - если у сообщения установлен флаг Draft, иначе
- Redirected - если у сообщения установлен флаг Redirected, иначе
- Unread - если у сообщения не установлен флаг Seen, иначе
- Answered - если у сообщения установлен флаг Answered, иначе
- Read
- flagged
- Этот элемент существует, если столбец является Состоянием, и сообщение имеет флаг Flagged. Если он существует, то он содержит строку YES.
- recent
- Этот элемент существует, если столбец является Состоянием, и сообщение имеет флаг Recent. Если он существует, то он содержит строку YES.
- hidden
- Этот элемент существует, если столбец является Состоянием, и сообщение имеет флаг Hidden. Если он существует, то он содержит строку YES.
- media
- Этот элемент существует, если столбец является Состоянием, и сообщение имеет флаг Media. Если он существует, то он содержит строку YES.
- firstNumber
- Этот строковый элемент содержит номер первого сообщения в просмотре.
- firstNumber1
- Этот строковый элемент содержит номер первого сообщения в просмотре, увеличенный на 1.
- lastNumber
- Этот строковый элемент содержит номер первого сообщения в просмотре, увеличенный на число элементов массива messages, если массив не является пустым, или увеличенный на 1, если массив messages является пустым.
- numTotal
- Общее число сообщений в этой папке.
- numUnread
- Общее число непрочитанных сообщений в этой папке (сообщений, не имеющих флага Seen).
- numSelected
- Общее число сообщений папки, которое может быть показано с текущими значениями Filter и Search.
- multiPage
- Этот элемент, имеющий строковое значение YES, добавляется, если значение nSelected не равно числу элементов массива messages.
- sortColumn
- Этот элемент содержит номер текущего столбца сортировки.
- sortAscending
- Этот элемент содержит 1 если текущий порядок сортировки является по возрастанию, и 0, если текущий порядок сортировки - по убыванию.
Общий компонент Message
Общий компонент Message используется для преобразования сообщения в формате RFC822 в текст HTML. Он обрабатывает как простые сообщения, так и сообщения, имеющие несколько частей - вложения, подписи, вложенные изображения и другие части. Для того, чтобы построить HTML представление, компонент использует Компоненты для Изображения Сообщений.
Компоненты для Изображения Сообщений
Модуль Веб Приложения может показывать изображения, преобразовывая их в текст языка разметки (HTML). Эта обработка управляется самим модулем Приложения. Он определяет структуру MIME сообщения, и рекурсивно обрабатывает каждую часть. Для каждой части создаётся набор данных, и используется .wssp файл для создания представления на языке разметки.
Компоненты для Изображения Сообщений не производят никаких действий.
Набор Данных результата, создаваемый каждым компонентом для Изображения Сообщений, включает в себя следующие поля:
- MIMEPart
- этот строковый элемент содержит URL на сообщение или на часть сообщения, для которого создаётся изображение.
- filesRef
- этот строковый элемент содержит префикс URL, необходимый для получения файлов из правильного Вида Интерфейса. Когда в ходе какой-либо Сессии WebUser создаётся вид изображения сообщения, эта строка совпадает со строкой SESSION(filesRef).
- printVersion
- этот строковый элемент существует и содержит строку YES, если сообщение должно быть показано в виде, подходящем для распечатки.
Реализованы следующие компоненты для Изображения Сообщений: Имя: RFC822Message
Этот компонент используется для создания изображения почтового сообщения - сообщения, хранящегося в папке или для создания изображения MIME части message/rfc822 какого-либо другого сообщения.
Набор Данных Результата
- RFC822Header
- этот строковый элемент содержит представление на языке разметки для заголовка RFC822.
- RFC822Body
- этот строковый элемент содержит представление на языке разметки для тела сообщения RFC822/MIME.
- isSubPart
- этот элемент существует и имеет строковое значение YES, если сообщение является MIME-частью какого-либо другого сообщения.
Имя: RFC822Header
Этот компонент используется для построения изображения RFC822 заголовка почтового сообщения.
Набор Данных Результата
- RFC822Fields
- этот элемент является массивом с одним элементом типа словарь для каждого "видимого" поля в заголовке. Каждый словарь содержит следующие элементы:
- name
- этот строковый элемент содержит имя поля заголовка.
- value
- этот строковый элемент содержит декодированное из MIME значение поля.
Имя: AttachmentPart, ImagePart
Этот компонент используется для построения изображения картинки или файла с приложением. Изображения и приложения могут быть как отдельными частями MIME, так и встроенными в текстовую часть при помощи кодирования UUENCODE. Набор Данных Результата
- attachmentName
- эта строка содержит имя файла, так, как оно хранится в данных сообщения.
- fileName
- эта строка содержит "очищенное" имя файла (с удалённым путём и добавленным, при необходимости, суффиксом для файла с изображением).
- embeddedPart
- если этот строковый параметр существует, то в данные UUENCODE "вложен" файл и строка указывает номер встроенного компонента внутри части MIME.
- decodedSize
- этот строковый элемент содержит "приблизительный" размер декодированных данных файла.
Имя: DeliveryReportPart
Этот компонент используется для построения изображения части MIME message/report.
Набор Данных Результата
- MessageFields
- в этом массиве содержится по одному элементу типа словарь для каждого поля уведомления уровня сообщения. Каждый словарь содержит следующие элементы:
- name
- этот строковый элемент содержит имя поля уведомления.
- value
- этот строковый элемент содержит декодированное из MIME значение поля уведомления.
- Reports
- в этом массиве содержится по одному элементу типа массив для каждого уведомления получателя. Каждое уведомление получателя является массивом, в котором содержится по одному элементу типа словарь для каждого поля уведомления уровня получателя. Каждый словарь содержит следующие элементы:
- name
- этот строковый элемент содержит имя поля уведомления.
- value
- этот строковый элемент содержит декодированное из MIME значение поля уведомления.
Имя: DispositionReportPart
Этот компонент используется для построения изображения части MIME message/disposition-notification.
Набор Данных Результата
- fields
- в этом массиве содержится по одному элементу типа словарь для каждого поля уведомления уровня сообщения. Каждый словарь содержит следующие элементы:
- name
- этот строковый элемент содержит имя поля уведомления.
- value
- этот строковый элемент содержит декодированное из MIME значение поля уведомления.
Имя: EncryptedPart
Этот компонент используется для построения изображения зашифрованной части MIME.
Набор Данных Результата
- decryptedPart
- этот массив содержит представленное при помощи языка разметки расшифрованное содержимое. Этот элемент существует, только если расшифровка прошла успешно.
- decryptionErrorCode
- если этот строковый элемент существует, то в нём содержится сообщение об ошибке, объясняющее причину неуспешной расшифровки.
- cipherName
- Этот строковый элемент содержит название шифра, использованного для зашифровки содержимого.
- keyLength
- Этот строковый элемент содержит размер ключа шифрования (в битах).
Имя: SignedPart
Этот компонент используется для построения изображения подписанной MIME части.
Набор Данных Результата
- signedPart
- этот массив содержит представленное при помощи языка разметки подписанное содержимое. Этот элемент существует, только если проверка подписи прошла успешно.
- encoding
- этот строковый элемент содержит слова "Binary" или "Text", в зависимости от формата подписанной части.
- decryptionErrorCode
- если этот строковый элемент существует, то в нём содержится сообщение об ошибке, объясняющее причину неуспешного декодирования подписи.
- digesterName
- Этот строковый элемент содержит название алгоритма, используемого для создания "дайджеста" сообщения (цифровой подписи сообщения).
- signatures
- Если этот массив существует, то подписанное содержимое было проверено при помощи как минимум одной цифровой подписи. Каждый элемент этого массива является словарём с данными подписи. Эти словари содержат следующие элементы:
- contact
- этот строковый элемент содержит адрес электронной почты подписавшего
- commonName
- этот строковый элемент содержит "настоящее имя" подписавшего
- Country, Province, Organization, Unit
- эти необязательные строковые элементы содержат дополнительную информацию о подписавшем.
Имя: CalendarPart
Этот компонент используется для построения изображения части в формате iCalendar.
Набор Данных Результата
- Summary, Location, Comment
- эти строковые элементы содержат данные атрибутов iCalendar.
- Priority
- эта числовая строка содержит значение атрибута PRIORITY элемента iCalendar.
- dateFrom
- эта числовая строка содержит значение атрибута DTSTART элемента iCalendar.
- method
- этот строковый элемент содержит параметр METHOD объекта iCalendar.
- description
- этот строковый элемент содержит форматированное значение атрибута DESCRIPTION.
- organizer
- в этом необязательном элементе типа словарь содержится атрибут ORGANIZER. Этот словарь может содержать различные параметры, заданные для этого атрибута ("cn" и т.д.). Адрес электронной почты (значение) атрибута доступно как элемент theValue этого словаря.
- attendees
- этот необязательный массив содержит элементы типа словарь для каждого атрибута ATTENDEE. Каждый словарь может содержать различные параметры, заданные для этого атрибута ("cn", "role" и т.д.). Адрес электронной почты (значение) атрибута доступно как элемент theValue этого словаря.
- isEvent
- этот строковый элемент существует и содержит строку YES, если элементом iCalendar является VEVENT. Следующие необязательные элементы могут существовать только если этот элемент isEvent существует:
- allDayEvent
- этот необязательный элемент существует и содержит строку YES, если VEVENT является Событием На Весь День.
- recurrence
- этот необязательный элемент существует и содержит строку YES, если VEVENT является повторяющимся Событием (Встречей).
- duration
- этот необязательный числовой элемент существует и содержит продолжительность События в секундах, если VEVENT является повторяющимся Событием.
- dateTill
- этот необязательный элемент существует и содержит в виде строки "дату окончания" События, если Событие не является повторяющимся, и если оно не является однодневным Событием На Весь День.
- busyStatus
- этa необязательная строка содержит статус События, если методом iCalendar является PUBLISH.
- isTask
- этот необязательный элемент существует и содержит строку YES, если элемент iCalendar является VTODO. Следующие необязательные элементы могут существовать, только если существует элемент isTask:
- dateTill
- этот необязательный элемент содержит "срок" для VTODO.
- percentComplete
- эта числовая строка содержит значение атрибута VTODO PERCENT-COMPLETE.
Имя: vCardPart
Этот компонент используется для построения изображения части с данными vCard.
Набор Данных Результата
- FN
- этот строковый элемент содержит форматированное значение атрибута vCard Name.
- UID
- этот строковый элемент содержит значение атрибута vCard UID.
- REV
- этот элемент с датой содержит значение атрибута vCard REV.
- elements
- этот массив содержит элементы типа словарь для других атрибутов vCard. Каждый словарь содержит следующие элементы:
- name
- строка с именем атрибута vCard
- value
- значение элемента vCard. Значение может быть словарём или массивом с элементами типа словарь, если vCard имеет несколько атрибутов с одинаковым именем. Каждый словарь содержит параметры атрибута и значение атрибута как элемент theValue.
Ответ типа Redirect
Сессионные запросы и запросы вне Сессий обрабатываются с использованием WSSP файлов, создающих документы на языке разметки. До отправки этих документов браузеру клиента, проверяются их первые строки. Если первая строка документа начинается с тега <REDIRECT>, то остальная часть документа интерпретируется как URL.
Сервер возвращает код ответа 301 ("Moved") с заголовком Location, содержащим указанный URL.
Сервер также обрабатывает тег <RELREDIRECT> в начале документа. Он обрабатывается так же, как тег <REDIRECT>, но URL, помещаемый в заголовок Location, имеет префикс http или https, а имя сервера (возможно - с номером порта) берётся из URL запроса.
Приложения CG/PL
Сессионные запросы и запросы вне Сессий могут быть обработаны с использованием CG/PL приложений (вместо встроенных в Сервер компонентов). Эти CG/PL приложения называются Веб Приложениями.
Запрос вне Сессии, обращающийся к ресурсу /programName.wcgp или /programName.wcgp/some_url, заставляет Сервер загрузить из выбранного Вида Интерфейса файл programname.wcgp - приложение CG/PL. Если это приложение осуществляет некоторый вывод, то он возвращается браузеру клиента, в противном случае возвращается ошибка 404 Not Found.
Приложение может быть запущено при обращении к ресурсу /auth/programName.wcgp или /auth/programName.wcgp/some_url. Такой запрос HTTP сначала аутентифицируется, а затем приложение выполняется от имени аутентифицированного Пользователя.
Приложение может быть запущено при обращении к ресурсу /sys/programName.wcgp. Приложение выполняется в общекластерной или общесерверной среде Безымянного Вида Интерфейса от имени Пользователя postmaster Главного Домена. Выполняется раздел кода с точкой входа sysEntry файла programName.wcgp.
Сессионные запросы, обращающиеся к /programName.wcgp в Сессии (раздел /Session/sessionID/) приводят к тому, что Сервер загружает из Вида Интерфейса Сессии файл programname.wcgp - приложение CG/PL. Поддерживаются только запросы по протоколу HTTP с методами GET, POST и HEAD . Если это приложение осуществляет некоторый вывод, то он возвращается браузеру клиента, в противном случае возвращается ошибка 404 Not Found. Приложение выполняется от имени того Пользователя, которому принадлежит эта Сессия.
Когда модуль CG/PL загружается для обработки запроса HTTP, то выполняется точка входа main модуля.
Веб Приложения могут использовать поддерживаемую в CG/PL возможность внешнего объявления. Когда вызывается раздел кода (процедура или функция), объявленный как внешний, то из текущего Вида Интерфейса загружается файл с именем раздела кода и расширением .wcgi. Код программы в этом файле должен содержать раздел кода с указанным именем и требуемым типом (процедуру или функцию). Код программы в .wcgi файле может содержать также и другие разделы кода.
В Веб Приложении CG/PL могут использоваться следующие встроенные процедуры и функции.
Параметры запроса HTTP
- GetHTTPParameter(name [ ,index ])
- Эта функция получает параметр запроса HTTP. Параметры запроса HTTP включают параметры URL и/или поля формы.
Значение name должно быть строкой, задающей имя параметра запроса HTTP. Запрос HTTP может содержать несколько параметров с одинаковым именем. Значение index должно быть числом, указывающим, какой параметр запроса HTTP с указанным именем должен быть получен. Если запрос HTTP содержит параметр FormCharset, то его значение интерпретируется как имя кодировки. Функция конвертирует необработанные данные параметров в кодировку UTF-8. Если параметр FormCharset отсутствует, то предполагается, что необработанные данные параметров переданы в кодировке UTF-8. Если в значении параметра содержится несколько строк, то символы EOL (разделители строки) конвертируются согласно правилам, принятым для ОС Сервера. Эта функция возвращает строку, содержащую значение параметра. Если параметр с указанным именем и необязательным номером не найден, то эта функция возвращает нулевое значение.
- GetHTTPBinaryParameter(name [ ,index ])
- Эта функция получает необработанные данные параметра HTTP запроса.
Эта функция возвращает блок данных, в котором содержится значение параметра. Если параметр с указанным именем и необязательным номером не найден, то эта функция возвращает нулевое значение.
- GetHTTPField(name)
- Эта функция получает поле name запроса HTTP.
Поддерживаются следующие поля: Authorization, Referer, Destination, Cookie, User-Agent, Host. Если значением name является пустая строка, то возвращается URL HTTP запроса (без возможных параметров URL). Если значением name является строка Schema, то возвращается использованная схема URL запроса (строка http или https). Если значением name является строка Host, то возвращается значение заголовка запроса Host, за вычетом возможной части "port". Если значением name является строка Port, то возвращается часть с номером порта из значения заголовка запроса Host; если порт не был указан, то возвращается число 80 для нешифрованных соединений и число 443 для шифрованных. Если указанное имя поле не входит в поддерживаемый набор, или если запрос не содержит указанного поля, то эта функция возвращает нулевое значение.
- GetHTTPQuery()
- Эта функция получает строку параметров из URL запроса HTTP.
Если URL запроса не содержит параметров, то функция возвращает нулевое значение.
- GetHTTPResource()
- Эта функция выдаёт строку запроса HTTP, включая параметры URL.
- GetHTTPMethod()
- Эта функция возвращает строку с методом запроса HTTP (GET, POST и т.п.).
- GetHTTPType()
- Эта функция получает Тип Содержимого (Content type) тела запроса HTTP.
- GetHTTPSubtype()
- Эта функция получает Подтип Содержимого (Content subtype) тела запроса HTTP.
- GetHTTPData()
- Эта функция получает тело запроса HTTP.
Если подтипом содержимого тела запроса является xml или подтип оканчивается на +xml, то функция пытается преобразовать содержимое тела в XML и вернуть объект XML. Если типом содержимого тела запроса является text, то функция конвертирует тело содержимого в UTF-8 и возвращает строку. В противном случае функция возвращает блок данных. Если операция конвертирования закончилась неуспешно, а также если тело запроса отсутствует или слишком длинное, то функция возвращает нулевое значение.
Параметры ответа на запрос HTTP
- SetHTTPResponseData(data)
- Эта процедура задаёт тело ответа HTTP.
Значение data должно быть строкой, блоком данных, словарём или объектом XML.
- SetHTTPResponseType(mimeType,subtype)
- Эта процедура устанавливает значение поля Content-Type ответа HTTP.
Значение mimeType и subtype должны быть строками, содержащими корректные элементарные объекты MIME.
- SetHTTPResponseCode(code)
- Эта процедура задаёт код ответа HTTP.
Значением code должно быть число из диапазона 200..999 или строка. Если строка начинается с префикса из 3 цифр и символа -, то префикс преобразуется в код ответа HTTP, а остаток строки задаёт текст ответа HTTP. Если такого префикса в значении параметра code нет, то код ответа HTTP устанавливается в 500, и вся строка используется в качестве текста ответа HTTP.
- RemoteIPAddress()
- Эта функция возвращает объект типа адрес IP, содержащий адрес IP, с которого был получен запрос HTTP.
- ProxiedIPAddress()
- Если HTTP запрос поступил через какой-либо внешний HTTP прокси, то эта функция возвращает оригинальный адрес IP Клиента. В противном случае функция возвращает нулевой объект.
- SendHTTPContinue()
- Эта функция посылает промежуточный ответ HTTP 100-Continue.
Если ответ был успешно послан, то функция возвращает нулевое значение; в противном случае возвращается строка с кодом ошибки.
- AddHTTPResponseField(fieldName,fieldValue)
- Эта процедура добавляет поле в ответ HTTP.
Значения fieldName и fieldValue должны быть строками.
- ProcessWSSP(pageName,resultSet)
- Эта процедура формирует тело ответа HTTP, используя указанную страницу WSSP и набор данных результата.
Значение pageName должно быть строкой с именем страницы (без суффикса wssp). Эта страница берётся из текущего выбранного Вида Интерфейса. Значение resultSet должно быть словарём. Сервер изменяет этот словарь, добавляя обрабатываемые общие Сессионные или Внесессионные элементы (смотрите выше), а затем передаёт его интерпретатору WSSP. Получившаяся страница выступает в качестве тела ответа HTTP.
Данные Сессии
Функции и процедуры, перечисленные в этом разделе, доступны только для запросов HTTP в Сессиях.
- SessionData()
- Эта функция возвращает словарь с Набором Данных Сессии.
- SetSessionData(keyValue, keyName)
- Эта функция изменяет словарь с Набором Данных Сессии.
Параметр keyName должен быть строкой, значение keyValue задаёт новый объект для этого ключа. Если keyValue имеет нулевое значение, то объект удаляется из набора данных сессии.
|