Описание протокола взаимодействия Взаимодействие клиента с сервером Передача нового сообщения на сервер отправителя Кодировка для всех текстовых данных – UTF-8 Сообщение может передаваться на определенное местоположение. Стадии передачи сообщений: 1. Формирование сообщения в формате XML 2. Подключение к серверу 3. Аутентификация 4. Вызов удаленного метода sendMessage() с передачей сообщения в виде параметра 5. Отключение от сервера Немедленно после приема сообщения сервер должен провести валидацию сообщения по заданной схеме. Стадии приема сообщений: 1. Подключение к серверу 2. Аутентификация 3. Установка текущего местоположения пользователя 4. Проверка на допустимость местоположения 5. Получение списка идентификаторов новых сообщений 6. Получение новых сообщений по их идентификаторам 7. После получения каждого сообщений клиент должен отправить подтверждение о получении 8. Сервер должен изменить статут сообщения на полученный 9. Отключение от сервера Передача нового сообщения на сервер получателя Канал передачи данных между сервером-получателем и сервером-отправителем должен быть защищен с помощью SSL. Передачи в незашифрованном виде не допускаются. Возможно применение многоэтапных схем защиты с цифровой подписью. Стадии передачи сообщения от сервера-отправителя на сервер-получатель 1. Установление защищенного соединения между серверами 2. Если отправителей несколько, соединения должны быть установлены отдельно дл я получателей с разными серверами. Для получателей с одним и тем же доменом, должно быть установлено одно соединениею 3. Вызов удаленного метода для передачи сообщения в виде параметра 4. Сервер-получатель должен немедленно после получения сообщения провести его валидацию в соответствии с заданной схемой. Клиент-серверный фасад Все сообщения идентфицируются по уникальному идентификатору. Каждому сообщению можно присвоить задаваемые пользователем категории Login – выполняется подключение к серверу отправителя и аутентификация, если параметры некорректны, сервер должен передать исключение Logout – установка статусов, очистка и другое, закрытие соединения setLocation – установка текущего местоположения пользователя, сервер должен проверить допустимость местоположения, в случае некорректности сервер должен передать исключение (должна быть возможность не использовать местоположение) getCurrentLocation – возвращает текущее местоположение пользователя sendMessage - отправка сообщения, если формат сообщения некорректен, сервер должен вернуть исключение deleteMessage – сообщение удаляется для всех местоположений либо только для текущего markAsReader – сообщение помечается как прочитанное либо для текущего местоположения либо для всех getMessagesByQuery – возвращает соответствующих данным параметрам список идентификаторов сообщений, getMessage – возвращает сообщение с данным идентфикатором getPersonalInfo – возвращает XML с данными пользователя setPersonalInfo – устанавливает данные пользователя на основе переданного XML getNewMessages – возвращает список идентификаторов новых сообщений для данного местоположения либо для всех markAsReaded – помечает сообщение местоположения либо для всех как прочитанное для данного markAsUnreder – помечает сообщение местоположения либо для всех как прочитанное для данного setCategory – устанавливает одну или несколько категорий для данного сообщения, все предыдущие категории затираются getCategory – возвращает все категории для данного сообщения методы для работы с адресной книгой Сервер-серверный фасад Сервер должен производить валидацию адреса получателя на корректность. Сервер-получатель должен проверять на существование адрес получателя. Если сообщение не удалось отправить в связи с ошибкой соединения, процедура отправки должна быть произведена опять через нек. Промежуток временими. Определение IP-адреса получателя сообщения производиться следующим образом: 1. По доменному имени производиться получение DNS записей для данного сервера. 2. Из поля TXT берется IP – адрес сервера получателя. Для данного поля должен быть быть предусмотрен специальный формат. Формат сообщения 1. Отправитель 2. Получатель 3. Дата создания 4. Дата отправления 5. Дата получения 6. Части сообщения (тип, сообщение) 7. Часть сообщения, которую необходимо отобразить 8. Тема сообщения 9. Идентфикатор сообщения 10. На какое сообщения ответ 11. Остальные получатели Дополнительны параметры сообщения Для каждого местоположения может быть свой список параметров 1. Категории 2. Прочитанное/непрочитанное 3. Шифрованное/нешифрованное 4. Цифровая подпись 5. Уведомление о получении Адресная книга Каждая запись в адресной книги имеет уникальный идентификатор, по которому производиться обращение. Поля адресной книги: 1. Имя 2. Фамилия 3. Адрес 4. Физический адрес 5. Фото 6. Организация 7. Что – то еще Структура папок Структура папок храниться в виде древовидной структуры, в соотв. Порядке, каждая папка имеет уникальный идентфикатор, название, порядковый номер Сортировка сообщений Сортировка сообщений выполняется на основании одного или нескольких признаков, определенный правилом сортировки сообщений. Приоритет правил сортировки может задаваться пользователем. Каждое правило должно содержать типы полей и их содержимое, на основании которого должно применяться действие заданное для данного правила. Действия могут подразумевать удаление, переименование или перемещение сообщения в заданную папку. Сервер не выполняет непосредственной сортировки сообщений (???). Сервер выполняет сортировку сообщений и делает соотв. Пометки для сообщений Местоположения Не использовать местоположения – просто синхронизировать все изменения с клиентом. Местоположения позволяют иметь пользователю различные види почты и настройки для различный рабочих мест. Местоположения влияют на: Правила сортировки Структуру папок Прочитанное/непрочитанное Удаленное Правила сортировки могут применяться либо местоположений, либо для всех местоположений для определенного списка Если сообщение помечается как непрочитанное для всех категорий, пометка выполняется для всех местоположений Если сообщение помечается как прочитанное для всех категорий, пометка выполняется для всех местоположений Если сообщение помечается как прочитанное для одного или нескольких сообщений, пометка выполняется для одного или нескольких местоположений. Если сообщение удаляется, то оно удаляется для всех местоположений Категории сообщений Каждому сообщению может быть назначена одна или несколько категорий. Категории устанавливаются вне зависимости от местоположения. Категории и их описания создаются пользователем. Персональные данные пользователя В персональные данные пользователя входят ФИО, место проживания, работа, общая информация, различные контактные данные. Серверные фильтры Серверные фильтры выполняются в 4х случаях 1. При отправке сообщения локальным пользователем на локальный сервер 2. При отправке сообщения с локального сервера на удаленный сервер 3. При приеме сообщения удаленным сервером 4. При передачи сообщения с удаленного сервера конечному получателю Фильтр может произвести с сообщением следующие действия: 1. Пропустить 2. Запретить с уведомлением отправителя 3. Запретить без уведомления отправителя 4. Изменить некоторые поля и дополнительные атрибуты сообщения Шифрование Сервер-сервеное и клиен-серверное соединение должно шифроваться с помошью SSL Отдельные части сообщений могуть шифроваться с помощью различных алгоритмов (ассиметричное шифрование). Сообщение может (должно) иметь цифровую подпись. Доверенные контакты Все контакты подразделяются на две групп 1. Доверенные контакты – сообщения от адресатов, входящих в список доверенных контактов, не подвергаются проверке анти-спам фильтром 2. Недоверенные контакты - сообщения от адресатов, не входящих в список доверенных контактов, подвергаются проверке анти-спам фильтром.