| Версия 5.2
Введение
Установка
Администрирование
Сеть
Объекты
Почта
Сигналы
Доступ
Услуги
Справочник
Кластеры
Программы
Разное
Лицензирование
Веб Почта
Pronto!
PBX
Обзор | POP | IMAP | WebUser | XIMSS | MAPI | AirSync | CalDAV | FTP | TFTP | ACAP
# XIMSS Модуль Конфигурирование XIMSS Модуля XIMSS Соединения с Другими Модулями Безопасность Flash Клиентов Сессии XIMSS HTTP Привязка HTTP Вход Синхронные Коммуникации по HTTP Асинхронные Коммуникации по HTTP Мониторинг активности XIMSS В XIMSS модуле CommuniGate Pro реализован открытый протокол XIMSS. Этот протокол поддерживает прогрессивных клиентов, позволяя им получать доступ к функциям Сервера эффективным и безопасным образом. XIMSS модуль CommuniGate Pro поддерживает как незашифрованные, так и безопасные (SSL/TLS) соединения. Полное описание протокола и его возможностей смотрите в разделе XIMSS протокол. Использование XIMSS модуля CommuniGate Pro требует специального Лицензионного Ключа для групповой работы или специального Лицензионного Ключа XIMSS. Без таких Ключей Сервер будет обслуживать до 5 одновременных XIMSS сессий.

## Конфигурирование XIMSS Модуля

Для того, что бы настроить параметры XIMSS модуля, используйте Веб Интерфейс Администратора. Откройте страницу Доступ в разделе Установки:

Обработка
Уровень Журнала: |  | Каналы: |  | Приёмник

Используйте эту настройку для того, что бы указать, какую информацию XIMSS модуль должен сохранять в Журнале работы Сервера. Обычно используется уровень `Основные` (отчёты о передаче сообщений) или уровень `Проблемы` (передача сообщений и не фатальные ошибки). В случае, если в работе XIMSS модуля возникают проблемы, возможно, целесообразным будет увеличить детализацию до уровня `Подробности` или `Всё`: в этом случае в Журнал работы Сервера будет записываться также более подробная информация о работе модуля на уровне протокола или на уровне ссылок. Когда проблема решена, верните настройку Уровень Журнала в её обычное значение, иначе Системный Журнал будет очень быстро увеличивать свой размер.

Записи, помещённые XIMSS модулем в Журнал работы Сервера, имеют пометку `XIMSSI`.

Когда вы указываете ненулевое значение в настройке `Максимальное число Каналов`, XIMSS Модуль создаёт так называемый Приёмник. Модуль начинает принимать все XIMSS соединения, которые устанавливают клиенты для того, что бы взаимодействовать с вашим Сервером. Эта настройка используется для того, что бы ограничить число одновременных соединений, которое может принимать XIMSS модуль. Если открыто предельное число соединений, то модуль будет отказывать в приёме новых соединений. В этом случае клиентские приложения должны попытаться соединиться позднее.

По умолчанию, Приёмник XIMSS модуля принимает незашифрованные соединения на TCP порт 11024. Нажмите на ссылку Приёмник для того, что бы настроить порт Приёмника XIMSS.

## XIMSS Соединения с Другими Модулями

XIMSS соединения могут устанавливаться с TCP портами, обслуживаемыми другими модулями CommuniGate Pro. Если в соединении, установленном с HTTP модулем, первым полученным символом будет `<`, то HTTP модуль передаёт соединение в XIMSS Модуль.

При передаче соединения:

- логическая работа передающего модуля завершается.
- логическая работа XIMSS модуля начинается точно таким же образом, как если бы XIMSS соединение было получено на порт, обслуживаемый XIMSS модулем.
- учитываются ограничения XIMSS модуля на общее количество Каналов XIMSS и количество каналов, открытых с одного IP адреса.

Если все пользователи устанавливают XIMSS соединения через порты других Модулей, то вы можете отключить Приёмник XIMSS, обнулив значения портов.

## Безопасность Flash Клиентов

Когда Flash клиент соединяется с XMLSocket сервера (таким, как XIMSS модуль CommuniGate Pro), он может отправить специальный запрос `policy-file-request` (запрос файла политики). XIMSS модуль направляет в ответ XML документ, позволяющий клиенту получать доступ к любому порту Сервера.

## Сессии XIMSS

Когда пользователь аутентифицирован, XIMSS модуль создаёт XIMSS сессию. Для взаимодействия с этой сессий может использоваться текущее TCP соединение XIMSS модуля.

Сессия XIMSS может быть создана и вне XIMSS модуля, используя специальные запросы, отправляемые HTTP User модуль. Дополнительную информацию смотрите в разделе XIMSS Протокол.

Записи о XIMSS сессии, помещаемые в Журнал работы Сервера, имеют пометку `XIMSS`.

## HTTP Привязка

Клиентское приложение может работать с XIMSS интерфейсом через HTTP соединения.

Для создания новой XIMSS сессии, клиентское приложение должно отправить HTTP запрос на Вход.

Когда XIMSS сессия создана, клиентское приложение может отправлять в неё запросы XIMSS протокола и получать ответы XIMSS протокола используя HTTP запросы.

Клиентские приложения могут использовать HTTP запросы `GET` и `POST`.
Если запрос содержит тело, то подразумевается, что оно является XML текстом, независимо от действительного значения поля заголовка Content-Type. XML текст должен быть элементом `<XIMSS/>`.
Если в результате запроса создаётся непустое тело ответа, то это тело всегда является XML текстом, в котором содержится один элемент `<XIMSS/>`, а полем заголовка Content-Type является `text/xml`.

### HTTP Вход

Для начала XIMSS сессии, клиентское приложение должно отправить HTTP запрос в HTTPU модуль CommuniGate Pro используя слудующие URL:

  `http://domainName[:port]/ximsslogin/`
  или
  `https://domainName[:port]/ximsslogin/`

Если в запросе содержится параметр `userName`, то Сервер пытается аутентифицировать указанного Пользователя.
Если присутствует параметр `password`, то используется обычный незашифрованный метод.
Если присутствует параметр `sessionid`, то используется метод SessionID.

Если параметр `userName` отсутствует, то Сервер пытается аутентифицировать запрос, используя TLS Сертификат Клиента (если он задан) или используя методы аутентификации HTTP.
Эта функциональность аналогична используемой в Веб Интерфейсе функциональности Автоматического Вход и Единого Механизма Входа, но здесь используется URL `/ximsslogin/`.

Если пользователь был успешно аутентифицирован и XIMSS сессия была успешно создана, то в ответе на запрос HTTP Входа содержится сообщение `session` со строкой-идентификатором сессии. Обратите внимание на то, что сообщение `session` не содержит атрибута `id`.

Пример:
C:GET /ximsslogin/?userName=account@domain&password=abcd HTTP/1.1
Host: myserver.com
Content-Length: 0
S:HTTP/1.1 200 OK
Content-Length: 105
Connection: keep-alive
Content-Type: text/xml;charset=utf-8
Server: CommuniGatePro/5.2
<XIMSS><session urlID="562-kAI2lxNBR4ApmHg4wiW9" userName="account@domain" realName="J. Smith" /></XIMSS>

Запрос на URL `/ximsslogin/` может содержать `text/xml` тело. В этом случае, операция входа не выполняется.
XML тело должно содержать один элемент `<XIMSS>`, содержащий, в свою очередь, одну или несколько XIMSS операций, Предшествующие Входу. Сервер отправляет HTTP ответ с XML данными. Ответом является элемент `<XIMSS>`, содержащий результаты выполнения затребованных операций.

Пример:
C:GET /ximsslogin/ HTTP/1.1
Host: myserver.com
Content-Type: text/xml
Content-Length: 42
<XIMSS><listFeatures id="list" /><XIMSS>
S:HTTP/1.1 200 OK
Content-Length: 231
Connection: keep-alive
Content-Type: text/xml;charset=utf-8
Server: CommuniGatePro/5.2
<XIMSS><<features id="s" domain="x.domain.dom"><starttls/><sasl>LOGIN</sasl><sasl>PLAIN</sasl><sasl>CRAM-MD5</sasl><sasl>DIGEST-MD5</sasl><sasl>GSSAPI</sasl><language>german</language><signup/></features><response id="s"/></XIMSS>

Альтернативный URL может использоваться для начала сессии XIMSS посредством TLS Сертификат Клиента или посредством другиех методов аутентификации HTTP:

  `http://domainName[:port]/auth/ximsslogin/`
  или
  `https://domainName[:port]/auth/ximsslogin/`

Этот метод полезен если приложение сначала получает HTML страницу или некоторый другой документ, используя `/auth/` область, заставляя браузер запросить полномочия клиента, а затем приложение создаёт XIMSS сессию для этого же пользователя, так как браузер переотправит эти же полномочия при отправке запроса на URL `/auth/ximsslogin/`.

### Синхронные Коммуникации по HTTP

Клиент должен направлять в созданную XIMSS сессию запросы, используя следующие URL:

  `http://domainName[:port]/Session/sessionID/sync`
  или
  `https://domainName[:port]/Session/sessionID/sync`

где sessionID является атрибутом urlID сообщения `session`.

Тело HTTP запроса должно содержать один элемент <XIMSS /> с ноль, одним или более запросами XIMSS протокола.

Сервер возвращает один элемент <XIMSS /> в теле HTTP ответа. Этот элемент содержит сообщения `response` XIMSS протокола (одно для каждого отправленного XIMSS запроса, в том же порядке); все синхронные сообщения данных созданы в ответ на переданные XIMSS запросы.

Пример:
C:POST /Session/562-kAI2lxNBR4ApmHg4wiW9/sync HTTP/1.1
Host: myserver.com
Content-Length: nnn
<XIMSS><noop id="i1" /><readTime id="i2" /></XIMSS>
S:HTTP/1.1 200 OK
Content-Length: nnn
Connection: keep-alive
Content-Type: text/xml;charset=utf-8
Server: CommuniGatePro/5.2
<XIMSS><response id="i1"/><currentTime id="i2" gmtTime="20070502T083313" localTime="20070502T003313"/><response id="i2"/></XIMSS>

Клиентское приложение может использовать "пустой запрос" (HTTP запрос без тела) для того, что бы прочитать асинхронные сообщения данных XIMSS.

При получении такого пустого запроса, Сервер проверяет наличие ожидающих асинхронных сообщений данных для указанной сессии. Если асинхронные сообщения данных отсутствуют, то запрос удерживается до наступления одного из следующих событий:

- для этой сиссии генерируется асинхронное сообщение данных; или
- время ожидания закончилось; или
- получено новый "пустой запрос"; или
- сессия закрывается.

Пустой запрос может задавать время ожидания в параметре `maxWait` (число секунд).

Если сообщения данных не были получены, то Сервер отправляет ответ с пустым элементом `<XIMSS/>`, без каких-либо атрибутов.

Если были получены какие-либо сообщения данных, то Сервер отправляет ответ ("асинхронный ответ"), содержащий один элемент `<XIMSS/>` с атрибутом `respSeq`. Этот атрибут содержит последовательный номер для этого элемента `<XIMSS/>` ответа.

Сервер хранит последний "асинхронный ответ", сформированный для каждой сессии.

Каждый пустой запрос должен содержать параметр `ackSeq`. В нём должно находится значение `respSeq` из последнего полученного асинхронного ответа.

Если клиент не получал еще никаких асинхронных ответов, то этот значение этого параметра должно быть `0`.

Когда Сервер получает пустой запрос со значением `ackSeq` равным значению `respSeq` последнего хранимого сформированного асинхронного ответа, то он рассматривает этот запрос как "подтверждение" и удаляет его.

Когда Сервер получает пустой запрос со значением `ackSeq` равным значению `respSeq` последнего хранимого сформированного асинхронного ответа, уменьшенного на единицу (respSeq-1), и последний сформированный ответ все еще хранится, то Сервер отправляет этот ответ клиенту повторно. В результате, если клиент сталкивается с ошибкой при передаче во время выполнения HTTP транзакции "пустого запроса", то он может отпраить пустой запрос повторно.

Пустой запрос без параметра `ackSeq` подтверждает, что все "асинхронные ответы" сформированы и хранятся.

Пример:
C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?maxWait=90&ackSeq=0 HTTP/1.1
Host: myserver.com
Content-Length: 0
...optional pause (up to 90 seconds)...
S:HTTP/1.1 200 OK
Content-Length: 10
Connection: keep-alive
Content-Type: text/xml;charset=utf-8
Server: CommuniGatePro/5.2
<XIMSS/>
C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?maxWait=90&ackSeq=0 HTTP/1.1
Host: myserver.com
Content-Length: 0
...optional pause (up to 90 seconds)...
S:HTTP/1.1 200 OK
Content-Length: nnn
Connection: keep-alive
Content-Type: text/xml;charset=utf-8
Server: CommuniGatePro/5.2
<XIMSS respSeq="1"><folderReport folder="INBOX" mode="notify" /></XIMSS>
C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?maxWait=90&ackSeq=0 HTTP/1.1
Host: myserver.com
Content-Length: 0
S:HTTP/1.1 200 OK
Content-Length: nnn
Connection: keep-alive
Content-Type: text/xml;charset=utf-8
Server: CommuniGatePro/5.2
<XIMSS respSeq="1"><folderReport folder="INBOX" mode="notify" /></XIMSS>
C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?maxWait=90&ackSeq=1 HTTP/1.1
Host: myserver.com
Content-Length: 0
...optional pause (up to 90 seconds)...
S:HTTP/1.1 200 OK
Content-Length: 10
Connection: keep-alive
Content-Type: text/xml;charset=utf-8
Server: CommuniGatePro/5.2
<XIMSS/>

### Асинхронные Коммуникации по HTTP

Клиент может отправлять запросы в созданную XIMSS сессию таким образом, что все ответы (включая сообщения `response` и синхронные сообщения данных) будут возвращаться только в ответ на "пустой запрос".

  `http://domainName[:port]/Session/sessionID/async`
  или
  `https://domainName[:port]/Session/sessionID/async`

где sessionID является атрибутом urlID сообщения `session`.

Тело HTTP запроса должно содержать один элемент <XIMSS /> с ноль, одним или более запросами XIMSS протокола.

Все генерируемые сообщения `response` (по одному для каждого запроса XIMSS, отправляемые в том же порядке) и все синхронные сообщения данных, созданные в ответ на переданные XIMSS запросы, передаются повторно в XIMSS сессию как асинхронные сообщения. Сервер возвращает пустой HTTP ответ.

Пример (одно соединение, опрос):
C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?maxWait=0&ackSeq=0 HTTP/1.1
Host: myserver.com
Content-Length: 0
S:HTTP/1.1 200 OK
Content-Length: 10
Connection: keep-alive
Content-Type: text/xml;charset=utf-8
Server: CommuniGatePro/5.2
<XIMSS/>
C:POST /Session/562-kAI2lxNBR4ApmHg4wiW9/async HTTP/1.1
Host: myserver.com
Content-Length: nnn
<XIMSS><noop id="i1" /><readTime id="i2" /></XIMSS>
S:HTTP/1.1 200 OK
Content-Length: 0
Connection: keep-alive
Content-Type: text/plain;charset=utf-8
Server: CommuniGatePro/5.2
C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?maxWait=0&ackSeq=0 HTTP/1.1
Host: myserver.com
Content-Length: 0
S:HTTP/1.1 200 OK
Content-Length: nnn
Connection: keep-alive
Content-Type: text/xml;charset=utf-8
Server: CommuniGatePro/5.2
<XIMSS respSeq="1"><response id="i1"/><currentTime id="i2" gmtTime="20070502T083313" localTime="20070502T003313"/><response id="i2"/></XIMSS>

Пример (2 соединения, ожидание):

C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?ackSeq=0 HTTP/1.1 Host: myserver.com Content-Length: 0 ...waiting... S:HTTP/1.1 200 OK Content-Length: nnn Connection: keep-alive Content-Type: text/xml;charset=utf-8 Server: CommuniGatePro/5.2 <XIMSS respSeq="1"> <response id="i1"/> <currentTime id="i2" gmtTime="20070502T083313" localTime="20070502T003313"/> <response id="i2"/> </XIMSS> C:GET /Session/562-kAI2lxNBR4ApmHg4wiW9/get?ackSeq=1 HTTP/1.1 Host: myserver.com Content-Length: 0 ...waiting... | C:POST /Session/562-kAI2lxNBR4ApmHg4wiW9/async HTTP/1.1 Host: myserver.com Content-Length: nnn <XIMSS><noop id="i1" /><readTime id="i2" /></XIMSS> S:HTTP/1.1 200 OK Content-Length: 0 Connection: keep-alive Content-Type: text/xml;charset=utf-8 Server: CommuniGatePro/5.2

## Мониторинг активности XIMSS

Вы можете наблюдать за активностью XIMSS Модуля через Веб Интерфейс Администратора.

Для того, что бы открыть страницы наблюдения за Доступом, нажмите на ссылку Доступ в области Наблюдения:

|  | Показано 3 из 3

ID | Сетевой Адрес | Пользователь | Подсоединён | Состояние | Обрабатывает
--- | --- | --- | --- | --- | ---
9786 | [216.200.213.116] | user1@domain2.dom | 3 мин | listing messages | 2 сек
9794 | [216.200.213.115] | user2@domain1.dom | 34 сек | reading request |
9803 | [216.200.213.115] |  | 2 сек | authenticating |

`ID`
  Это поле содержит числовой идентификационный номер XIMSS сессии. В Журнале CommuniGate Pro, эта сессия отмечается как `XIMSS-nnnnn`, где nnnnn это идентификационный номер сессии.
``
  Это поле содержит IP адрес присоединившегося клиента.
`Пользователь`
  Это поле содержит имя Пользователя (после успешной аутентификации).
`Подсоединён`
  Это поле содержит время соединения (время, в течении которого открыта эта TCP/IP сессия.
`Состояние`
  Это поле содержит или имя текущей операции, или, если никакой операции не производится, текущее состояние сессии (Authenticating, Selected и т.д.).
`Обрабатывает`
  Если есть какая-нибудь активная XIMSS операция, то это поле содержит время, прошедшее с момента начала операции.

Статистика активности XIMSS доступна через SNMP агент CommuniGate Pro.

Руководство CommuniGate® Pro. Copyright © 1998-2009, Stalker Software, Inc.