Команды для управления пользователями

При работе с управляющим сокетом "пользователем" считается каждый отдельный e-mail адрес, внесенный в систему. Управлять адресами  можно с помощью следующих команд:

email-set client-email [settings] - создание или обновление адреса email, заданного в client-email. Если адрес не существует, то он будет создан. Если в settings указаны не все настройки, то для отсутствующих настроек будут установлены значения по умолчанию. Если для адреса задан алиас, то при обновлении можно указывать именно его в качестве client-email.

email-remove client-email - удаление адреса email, заданного в client-email. Также происходит удаление пользователя из всех групп, в которые он входил. Если такого адреса не существовало или он является алиасом, то выводится ошибка.

email-rename client-email email - изменение основного адреса пользователя, указанного в первом параметре, на адрес, указанный во втором параметре. Если адреса из первого параметра не существует, или он является алиасом, или адрес с новым именем уже существует, то выводится ошибка и никакие действия не выполняются.

email-set-groups client-email [list-of-groups] - задание списка групп, в которые входит адрес client-email. Порядок групп имеет значение (больший приоритет имеют настройки из групп в конце списка). Если list-of-groups пустой, то весь список групп для адреса client-email очищается. В списке list-of-groups группы разделяются пробелами. Если client-email или какая-либо из групп в списке не существуют, то выводится ошибка и операция не выполняется. Если одна и та же группа встречается в списке два раза, то выводится ошибка. Если client-email является алиасом, то обновляется оригинальный получатель. Если для группы в list-of-groups указан client-id, то он должен совпадать с client-id из адреса client-email, в противном случае выводится ошибка. Если в алиасе из list-of-groups client-id не указан, то он принимается равным client-id, указанному в client-email.

email-get-groups emails-list - получения списка групп для всех адресов из списка emails-list. Если какой-либо адрес из списка отсутствует, то выводится ошибка, но операция продолжается. Если client-email является алиасом, то выводится информация для оригинального получателя.

Формат вывода:

client-id/email1: group1 group2 group3 ...
client-id/email2: group21 group22 group23 ...

Здесь groupN может быть заключен в одинарные кавычки, если в имени группы используются пробелы.

email-get-rules emails-list - получение Правил для всех адресов из списка emails-list. Если какого либо адреса в списке не существует, то выводится ошибка, но операция продолжается. Если передан алиас, то выводятся настройки для оригинального получателя. Для каждого несуществующего адреса выводится ошибка.

Формат вывода:

[client-id1/]email1
1: rule1
2: rule2
...
[client-id2/]email2
1: rule21
2: rule22
...

email-insert-rule client-email index RULE - вставка нового Правила перед Правилом с порядковым номером index для адреса email, заданного в client-email. Если email не существует, то выводится ошибка. Нумерация (index) начинается с 1. Если значение index больше максимального числа Правил для указанного email, то новое Правило RULE добавляется в конец списка Правил. При этом ему присваивается index по порядку (т.е. если для email задано всего два Правила, то при попытке добавить новое правило с index, равным 10, правило добавится в конец списка с index, равным 3). Если index ≤ 0, то выводится ошибка. Если RULE пустое (т.е. Правило не указано), то выводится ошибка. После успешной модификации выводятся Правила для данной группы в формате вывода email-get-rules.

email-remove-rule client-email index - удаление Правила с порядковым номером index для адреса email, заданного в client-email. Нумерация (index) начинается с 1. Если client-email не существует, то выводится ошибка. Если значение index больше максимального числа Правил для указанного email или index ≤ 0, то выводится ошибка. Если передан алиас, то обновляются настройки для оригинального адреса. После успешной модификации выводятся Правила в формате вывода email-get-rules.

email-get-custom -|tag emails-list - получение информации с тегом tag, связанной с каждым из пользователей, перечисленных в emails-list. Если какого-либо адреса в списке не существует, то выводится ошибка, но операция продолжается. Если информации, связанной с тегом tag, не существует, то выводится пустая строка. Информация по каждому адресу разделяется переводом строки. Если вместо тега указан символ "-", выводится информация по всем тегам.

Формат вывода:

[client-id1/]email1
tag: info..
[client-id2/]email2
tag2: info2..

email-set-custom tag client-email [info] - установка текста info, связанного с тегом tag для пользователя client-email. Если пользователь не найден, то выводится ошибка. Если info не указан, то тег со всей информацией, связанной с ним, удаляется.

email-info emails-list - получение полной информации по всем адресам из списка emails-list. Если какого-либо адреса в списке не существует, то выводится ошибка, но операция продолжается. Правила для адреса выводятся в скомпилированном виде для всех групп и личных настроек адреса. Для алиаса информация по группам и настройкам берется из оригинального адреса. Настройки Правил выводятся в следующем порядке: сначала пользовательские настройки, затем настройки групп в порядке, обратном порядку следования этих групп. При компиляции Правил учитывается настройка активности групп и пользователя.

Формат вывода:

[client-id1/]email1 A=active1 S=stat1
name: name1
aliases: alias1 alias2 ..
groups: group1 group2
rules:
1: rule11
2: rule12
...
custom:
tag1: info1..
tag2: info2..
...
[client-id2/]email2 A=active2 S=stat2
name: name2
aliases: alias12 alias22 .. | alias for email2
groups: group3
rules:
1: rule21
2: rule22
...
custom:
tag21: info21..
tag22: info22..
...

Здесь groupN может быть заключен в одинарные кавычки, если в имени группы используются пробелы.

Формат вывода для алиаса:

[client-id1/]email1
aliases: alias for email

email-search [range:START/NUMBER] [email:part-of-email] [name:'part-of-name'] [ignore:alias|nonalias] - поиск по адресу или части адреса. Выводит адреса, начиная со START (нумерация начинается с 0), и в количестве NUMBER элементов. Если START и NUMBER не указаны, то выводятся все найденные адреса. Если START или NUMBER отрицательные, то выводится ошибка. Если значения START или NUMBER превышают количество найденных адресов, то их значения считаются не ограниченными (соответственно, для "неограниченного" START выводятся адреса с самого первого в списке, а для "неограниченного" NUMBER - все имеющиеся в списке адреса).

opart-of-email - подстрока в почтовом адресе или алиасе, по которой производится поиск. Если part-of-email не указана, то выводятся все известные адреса и алиасы. Формат вывода совпадает с выводом email-info. Уникальный идентификатор пользователя в part-of-email должен быть указан полностью.

opart-of-name - подстрока в имени пользователя (если в имени встречается одинарная кавычка ', то перед ней должен ставиться тот же символ '; если в подстроке нет пробелов, то окружающие кавычки можно опустить) – выводятся только те пользователи, имена которых содержат указанную подстроку.

oignore - определяет, какого типа записи следует игнорировать: alias - алиасы (то есть поиск будет проводиться только среди обычных адресов), nonalias - обычные адреса (то есть поиск будет проводиться только среди алиасов).

Если задано одновременно email и name, то выводятся только пользователи, удовлетворяющие обоим ограничениям. Так как для алиасов не хранится имя пользователя, то использование в поиске одновременно подстроки для алиаса и имени пользователя является бессмысленным.

email-count [range:START/NUMBER] [email:part-of-email] [name:'part-of-name'] [ignore:alias|nonalias] - обработка осуществляется аналогично email-search, но выводится только число найденных адресов.