====== Privacy Lists (списки приватности) ====== ===== Общая информация ===== Большинство систем мгновенного обмена сообщениями имеют средства блокирования получения и отправки сообщений и информации о присутствии, применительно к определённым пользователям (различные реализации белых и чёрных списков, невидимость для собеседников). В сетях [[jabber:about|Jabber]], использующих протокол [[wp>Extensible_Messaging_and_Presence_Protocol|XMPP]], это достигается настройкой и использованием списков приватности - **Privacy Lists**. Обработка правил **Privacy Lists** выполняется Jabber-сервером, при этом сервер позволяет производить следующие операции: * получение списков приватности клиентом; * добавление, редактирование и удаление списков приватности; * выбор активного списка приватности (правила, работающие в течение текущей сессии); * выбор списка 'по умолчанию' (правила, действовующие при каждом подключении к серверу); * разрешение или запрет прохождения [[jabber:message|сообщения]] применительно к [[jabber:jid|JID]], группе ростера, типу [[jabber:subscription|subscription]] или глобально; * разрешение или запрет получения уведомлений о [[jabber:presence|присутствии (presence)]] контакта применительно к [[jabber:jid|JID]], группе ростера, типу [[jabber:subscription|subscription]] или глобально; * разрешение или запрет отправки уведомлений о своём [[jabber:presence|присутствии (presence)]] другим контактам применительно к [[jabber:jid|JID]], группе ростера, типу [[jabber:subscription|subscription]] или глобально; * разрешение или запрет прохождения [[jabber:iq|служебных пакетов IQ]] применительно к [[jabber:jid|JID]], группе ростера, типу [[jabber:subscription|subscription]] или глобально; * разрешение или запрет всех вышеперечисленных пакетов применительно к [[jabber:jid|JID]], группе ростера, типу [[jabber:subscription|subscription]] или глобально. **__Замечание__**: Списки приватности не позволяют блокировать запросы [[jabber:subscription|subscription]]. ===== Описание правил ===== Пользователь может определить один или более списков **Privacy Lists**. Каждый список может содержать несколько правил, определяющих действие правила и признаки, по которым правило применяется. ==== Типы правил ==== === Правила типа JID === Такие правила применяются к пакетам при совпадении поля **value** правила с **JID'ом** контакта. Вот несколько примеров задания поля **value**: * //user@domain/resource// - правило будет срабатывать только для данного [[Jabber:resource|ресурса JID]]; * //user@domain// - правило будет срабатывать по JID с любым ресурсом; * //domain/resource// - правило будет срабатывать по доменному имени Jabber-сервера **И** ресурсу (применяется к службам сервиса); * //domain// - под этот вариант попадают //domain//, любые //user@domain//, //domain/resource//, а также любой адрес в домене //domain//. === Правила типа Group === Поле **value** таких правил должно содержать имя __СУЩЕСТВУЮЩЕЙ__ группы контактов в [[Jabber:roster|ростере]] пользователя. Если клиент попытается создать или редактировать список, содержащий правило типа **Group** для имени группы, отсутствующей в ростере, то сервер выдаст ошибку при попытке сохранить такой список. === Правила типа Subscription === Поле **value** таких правил должно содержать тип **[[Jabber:subscription|Subscription (подписки на присутствие)]]** : * **from** - правило сработает для пакетов тех контактов, которые разрешили получать пользователю информацию о присутствии; * **to** - правило сработает для пакетов тех контактов, для которых пользователь разрешил отправку информации о своём присутствии; * **both** - правило сработает для пакетов тех контактов, которые могут обмениваться информацией о присутствии с пользователем в обе стороны;\\ __Примечание:__ Под вышеперечисленные правила могут попасть только те контакты, которые находятся в ростере. * **none** - правило сработает для пакетов тех контактов, для которых не установлена никакая подписка.\\ __Примечание:__ Также под это правило попадают все контакты, которые не находятся в ростере пользователя. ==== Действие правил ==== Возможны два типа действия - **allow** (разрешить пакет) и **deny** (запретить пакет). ==== Пакеты, к которым применяется правило ==== Каждое правило может использоваться для [[Jabber:stanza|пакетов]], содержащих: * **message** - получаемые (входящие) сообщения; * **presence-in** - получаемая информация о присутствии контактов; * **presence-out** - отправляемая (исходящая) информация о собственном присутствии; * **iq** - получаемая служебная информация. ===== Использование Privacy Lists сервером ===== - Если во время сессии клиентом установлен //активный// список приватности (**active list**), то этот список применяется сервером только для той сессии, во время которой он активирован. При этом не используется список по умолчанию (**default list**). - Список **по умолчанию** (**default list**) применяется ко всем сессиям, для которых не установлен активный список. Список по умолчанию также применяется ко всем [[jabber:stanza|Jabber-пакетам]], если все ресурсы пользователя имеют статус offline (например, таким образом могут отбрасываться и не попадать на хранение на сервере нежелательные сообщения, на которые настроена фильтрация). - Если нет ни активных списков для сессий пользователя, ни списка по умолчанию, то Jabber-пакеты доставляются без ограничений. - Порядок расположения правил в списке имеет значение - именно в порядке возрастания номеров правил производится применение этих правил к Jabber-пакетам. - Как только для Jabber-пакета найдено соответствующее правило, пакет обрабатывается согласно действию правила (**allow** или **drop**). - Если пакет не попадает под действие ни одного правила из списка, то выполняется доставка пакета (**allow**). - При редактировании активного списка новые правила этого списка начинают действовать немедленно. - Нельзя удалить или сменить на другой список ДЕЙСТВУЮЩИЙ для другого ресурса список по умолчанию. ===== Пример настройки Privacy Lists в Bombus ===== Открываем редактор списков приватности (**Menu** -> **Tools** -> **Privacy Lists**) Создаём новый список приватности **Ignore-List** (Make Ignore-List) В нём создаём следующие правила командой **Add rule** (очерёдность правил важна): - **allow jid my_JID all** <- для возможности работы self-contact (события от своего JID) - **allow jid conference.jabber.ru all** <- для разрешения использования конференций на выбранном сервере - **allow jid rss.jabber.ru [v] message** <-- для разрешения входящих оповещений о создании новых рассылок (кому нужно) - **deny jid rss.jabber.ru [v] presence-in** <-- для запрета получения статусов online от rss-лент (лишний траффик!) - **deny subscription none all** <- для запрета входящих сообщений от контактов без подписки - **deny group Ignore-List all** <- для запрета любых событий от группы Ignore-List Сохраняем данный список (Save list) Далее активизируем его (Activate) и делаем списком по умолчанию (Set default)