Pull to refresh

Comments 4

А что будет если пользователь попадает в несколько групп?

Как бы вы сделали с помощью TACS ситуацию, когда некоторой группе пользователей нужно добавить дополнительный ящик?

Если пользователь состоит в нескольких группах ldap, то будет применен первая совпавшая группа из списка конфигурации, о чем сказано в ReadMe, help и коде.

Если пользователю потребуется несколько ящиков(а у нас такая ситуация так же имеется) - создаётся шаблон конфигурации thunderbird, описывающий 2 ящика, вместо одного.

Создаётся группа для двух ящиков и пользователи, которым это надо- перемещаются в неё

Спасибо. Но фактически у нас сложнее, есть пользователи кому нужно подключить очень разные наборы ящиков. И шаблонов получится по сути как половина пользователей.
Проще уж индивидуальные шаблоны сделать.

Мелькнула идея, если в go-templates передать поле memberOf из ldap, то наверное на уровне шаблона можно как-то проанализировать с помощью {{ if }}. Не пробовали такое?

Если упрощать, то tacs в основном используется для выгрузки данных откуда-то и подстановки их куда-то (я изучал HELM, когда решил сделать TACS). Изначально предполагалось, что для каждого выгружаемого параметра требуется отдельное LDAP поле (ориентируясь на LDAP и массовость).

Специфичных функций для анализа и обработки в шаблонизаторе нет, но они и не нужны, ведь у нас есть JavaScript движок из самого Thunderbird (а сама конфигурация является js-скриптом).

У нас используется максимум 2 ящика с разных серверов, а значит в шаблоне у нас будет проверка:

{{ if .twoEmail }} /*добавляем второй ящик со специфичными параметрами*/ {{ end }}

Рассмотрим ситуацию, что ящиков у нас может быть переменное число, а доменов и подавно, при этом мы не ходим захламлять множество полей LDAP по одному значению.

Вспоминаем, что у нас есть полноценный JS, а потому пишем функции для настройки ящика для каждого типа серверов, которыми будем пользоваться:

{{ define "libs"}}
function server1(email, name, etc){
  pref(anything1,name);
  pref(anything2,email);
  pref(anything3,etc);
}
function server2(email, name, etc){
  pref(anything1,name);
  pref(anything2,email);
  pref(anything3,etc);
}
{{end}}

В LDAP выделяем поле с текстом и в формате JSON прописываем требуемые ящики и сервера:

[{"user1@example.com":"server1"},{"user2@example.ru":"server2"}]

В шаблоне, присваиваем эту строку в переменную (я так уже делал), а дальше просто анализируем с помощью JS и вызываем соответствующие функции:

{{define "base"}}

// [{"email":"user1@example.com","server":"server1"},{"email":"user2@example.ru","server":"server2"}]
var list = {{.mailList}};

list.forEach((elem)=>{

  switch(elem.server){
    case "server1":
      server1(elem.email,name,etc);
      break;
  
    case "server2":
      server2(elem.email,name,etc);
      break;

    default: console.log("anything");
  }
})
{{end}}

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

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

Sign up to leave a comment.

Articles